R/Ryujinx.Graphics.Shader/IGpuAccessor.cs
gdkchan d9d18439f6
Use a new approach for shader BRX targets (#2532)
* Use a new approach for shader BRX targets

* Make shader cache actually work

* Improve the shader pattern matching a bit

* Extend LDC search to predecessor blocks, catches more cases

* Nit

* Only save the amount of constant buffer data actually used. Avoids crashes on partially mapped buffers

* Ignore Rd on predicate instructions, as they do not have a Rd register (catches more cases)
2021-08-11 20:59:42 +02:00

97 lines
1.8 KiB
C#

namespace Ryujinx.Graphics.Shader
{
public interface IGpuAccessor
{
void Log(string message)
{
// No default log output.
}
uint ConstantBuffer1Read(int offset)
{
return 0;
}
T MemoryRead<T>(ulong address) where T : unmanaged;
bool MemoryMapped(ulong address)
{
return true;
}
int QueryComputeLocalSizeX()
{
return 1;
}
int QueryComputeLocalSizeY()
{
return 1;
}
int QueryComputeLocalSizeZ()
{
return 1;
}
int QueryComputeLocalMemorySize()
{
return 0x1000;
}
int QueryComputeSharedMemorySize()
{
return 0xc000;
}
uint QueryConstantBufferUse()
{
return 0;
}
bool QueryIsTextureBuffer(int handle, int cbufSlot = -1)
{
return false;
}
bool QueryIsTextureRectangle(int handle, int cbufSlot = -1)
{
return false;
}
InputTopology QueryPrimitiveTopology()
{
return InputTopology.Points;
}
int QueryStorageBufferOffsetAlignment()
{
return 16;
}
bool QuerySupportsImageLoadFormatted()
{
return true;
}
bool QuerySupportsNonConstantTextureOffset()
{
return true;
}
bool QuerySupportsTextureShadowLod()
{
return true;
}
TextureFormat QueryTextureFormat(int handle, int cbufSlot = -1)
{
return TextureFormat.R8G8B8A8Unorm;
}
bool QueryEarlyZForce()
{
return false;
}
}
}