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.
This commit is contained in:
parent
1bb3122c1f
commit
f2d1aa97ad
|
@ -83,7 +83,7 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) {
|
||||||
return Operation(OperationCode::YNegate);
|
return Operation(OperationCode::YNegate);
|
||||||
case SystemVariable::InvocationInfo:
|
case SystemVariable::InvocationInfo:
|
||||||
LOG_WARNING(HW_GPU, "S2R instruction with InvocationInfo is incomplete");
|
LOG_WARNING(HW_GPU, "S2R instruction with InvocationInfo is incomplete");
|
||||||
return Immediate(0U);
|
return Immediate(0x00ff'0000U);
|
||||||
case SystemVariable::WscaleFactorXY:
|
case SystemVariable::WscaleFactorXY:
|
||||||
UNIMPLEMENTED_MSG("S2R WscaleFactorXY is not implemented");
|
UNIMPLEMENTED_MSG("S2R WscaleFactorXY is not implemented");
|
||||||
return Immediate(0U);
|
return Immediate(0U);
|
||||||
|
|
Reference in New Issue