ryujinx-mirror/Ryujinx.Graphics.Shader/IGpuAccessor.cs
riperiperi 0129250c2e
Pass CbufSlot when getting info from the texture descriptor (#2291)
* Pass CbufSlot when getting info from the texture descriptor

Fixes some issues with bindless textures, when CbufSlot is not equal to the current TextureBufferIndex.

Specifically fixes a random chance of full screen colour flickering in Super Mario Party.

* Apply suggestions from code review

Oops

Co-authored-by: gdkchan <gab.dark.100@gmail.com>

Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2021-05-19 20:05:43 +02:00

87 lines
1.6 KiB
C#

namespace Ryujinx.Graphics.Shader
{
public interface IGpuAccessor
{
void Log(string message)
{
// No default log output.
}
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 0xffff;
}
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;
}
TextureFormat QueryTextureFormat(int handle, int cbufSlot = -1)
{
return TextureFormat.R8G8B8A8Unorm;
}
bool QueryEarlyZForce()
{
return false;
}
}
}