mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-05-23 13:45:49 +00:00
This PR marks ALL texture indexes as nonuniform to fix an issue with the paths in Tomodachi Life: Living the Dream on AMD cards. It should have a negligible impact on performance (and it should not have an impact at all on NVIDIA cards!) It's caused by what is called 'implicit non-uniform sampler array indexing'. The idea is basically that some GPUs optimize texture lookups from indexed texture arrays, by assuming that you are never going to index different textures within a single workgroup. What this causes is that visual glitch where a subgroup is tasked with rendering a block of the screen, and in the boundaries some cores are indexing the wrong texture. Co-authored-by: AsperTheDog <guillerman0000@gmail.com> Reviewed-on: https://git.ryujinx.app/projects/Ryubing/pulls/91
41 lines
1.8 KiB
C#
41 lines
1.8 KiB
C#
namespace Ryujinx.Graphics.Shader.Translation
|
|
{
|
|
class HostCapabilities
|
|
{
|
|
public readonly bool ReducedPrecision;
|
|
public readonly bool SupportsFragmentShaderInterlock;
|
|
public readonly bool SupportsFragmentShaderOrderingIntel;
|
|
public readonly bool SupportsGeometryShaderPassthrough;
|
|
public readonly bool SupportsShaderBallot;
|
|
public readonly bool SupportsShaderBarrierDivergence;
|
|
public readonly bool SupportsShaderFloat64;
|
|
public readonly bool SupportsShaderNonUniformIndexing;
|
|
public readonly bool SupportsTextureShadowLod;
|
|
public readonly bool SupportsViewportMask;
|
|
|
|
public HostCapabilities(
|
|
bool reducedPrecision,
|
|
bool supportsFragmentShaderInterlock,
|
|
bool supportsFragmentShaderOrderingIntel,
|
|
bool supportsGeometryShaderPassthrough,
|
|
bool supportsShaderBallot,
|
|
bool supportsShaderBarrierDivergence,
|
|
bool supportsShaderFloat64,
|
|
bool supportsShaderNonUniformIndexing,
|
|
bool supportsTextureShadowLod,
|
|
bool supportsViewportMask)
|
|
{
|
|
ReducedPrecision = reducedPrecision;
|
|
SupportsFragmentShaderInterlock = supportsFragmentShaderInterlock;
|
|
SupportsFragmentShaderOrderingIntel = supportsFragmentShaderOrderingIntel;
|
|
SupportsGeometryShaderPassthrough = supportsGeometryShaderPassthrough;
|
|
SupportsShaderBallot = supportsShaderBallot;
|
|
SupportsShaderBarrierDivergence = supportsShaderBarrierDivergence;
|
|
SupportsShaderFloat64 = supportsShaderFloat64;
|
|
SupportsShaderNonUniformIndexing = supportsShaderNonUniformIndexing;
|
|
SupportsTextureShadowLod = supportsTextureShadowLod;
|
|
SupportsViewportMask = supportsViewportMask;
|
|
}
|
|
}
|
|
}
|