diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-05-29 20:21:48 -0300 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-05-30 01:49:14 -0300 |
commit | f2d1aa97ad52f5f78ae30b70c59559bfe0b950c5 (patch) | |
tree | d0e3aae2290e4ef2aabdfb8a9a8d44c0cd4845f2 /src | |
parent | 1bb3122c1f139420113ac2eb01bcf73890f52814 (diff) |
shader/other: Fix hardcoded value in S2R INVOCATION_INFO
Geometry shaders built from Nvidia's compiler check for bits[16:23] to
be less than or equal to 0 with VSETP to default to a "safe" value of
0x8000'0000 (safe from hardware's perspective). To avoid hitting this
path in the shader, return 0x00ff'0000 from S2R INVOCATION_INFO.
This seems to be the maximum number of vertices a geometry shader can
emit in a primitive.
Diffstat (limited to 'src')
-rw-r--r-- | src/video_core/shader/decode/other.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp index 694b325e1..045f5abb5 100644 --- a/src/video_core/shader/decode/other.cpp +++ b/src/video_core/shader/decode/other.cpp @@ -83,7 +83,7 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { return Operation(OperationCode::YNegate); case SystemVariable::InvocationInfo: LOG_WARNING(HW_GPU, "S2R instruction with InvocationInfo is incomplete"); - return Immediate(0U); + return Immediate(0x00ff'0000U); case SystemVariable::WscaleFactorXY: UNIMPLEMENTED_MSG("S2R WscaleFactorXY is not implemented"); return Immediate(0U); |