summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-05-29 20:21:48 -0300
committerGravatar ReinUsesLisp2020-05-30 01:49:14 -0300
commitf2d1aa97ad52f5f78ae30b70c59559bfe0b950c5 (patch)
treed0e3aae2290e4ef2aabdfb8a9a8d44c0cd4845f2 /src
parentMerge pull request #3991 from ReinUsesLisp/depth-sampling (diff)
downloadyuzu-f2d1aa97ad52f5f78ae30b70c59559bfe0b950c5.tar.gz
yuzu-f2d1aa97ad52f5f78ae30b70c59559bfe0b950c5.tar.xz
yuzu-f2d1aa97ad52f5f78ae30b70c59559bfe0b950c5.zip
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.cpp2
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) {
83 return Operation(OperationCode::YNegate); 83 return Operation(OperationCode::YNegate);
84 case SystemVariable::InvocationInfo: 84 case SystemVariable::InvocationInfo:
85 LOG_WARNING(HW_GPU, "S2R instruction with InvocationInfo is incomplete"); 85 LOG_WARNING(HW_GPU, "S2R instruction with InvocationInfo is incomplete");
86 return Immediate(0U); 86 return Immediate(0x00ff'0000U);
87 case SystemVariable::WscaleFactorXY: 87 case SystemVariable::WscaleFactorXY:
88 UNIMPLEMENTED_MSG("S2R WscaleFactorXY is not implemented"); 88 UNIMPLEMENTED_MSG("S2R WscaleFactorXY is not implemented");
89 return Immediate(0U); 89 return Immediate(0U);