Avoid duplicate BuiltIn variables for ray tracing matrices (fix #2921)
Fixes an issue where invalid SPIR-V was generated when gl_ObjectToWorldEXT and gl_ObjectToWorld3x4EXT, or gl_WorldToObjectEXT and gl_WorldToObject3x4EXT, were used in the same shader. The SPIR-V specification requires that there be at most one OpVariable decorated with a given BuiltIn value.
This commit is contained in:
parent
316f12ac1d
commit
6cdae46314
4 changed files with 142 additions and 134 deletions
|
|
@ -1,7 +1,7 @@
|
|||
spv.ext.AnyHitShader.rahit
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 110
|
||||
// Id's are bound by 108
|
||||
|
||||
Capability GroupNonUniform
|
||||
Capability RayTracingKHR
|
||||
|
|
@ -10,7 +10,7 @@ spv.ext.AnyHitShader.rahit
|
|||
Extension "SPV_KHR_ray_tracing"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 87 101
|
||||
EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 85 99
|
||||
Source GLSL 460
|
||||
SourceExtension "GL_EXT_ray_cull_mask"
|
||||
SourceExtension "GL_EXT_ray_tracing"
|
||||
|
|
@ -49,13 +49,11 @@ spv.ext.AnyHitShader.rahit
|
|||
Name 69 "v15"
|
||||
Name 70 "gl_GeometryIndexEXT"
|
||||
Name 75 "v16"
|
||||
Name 76 "gl_ObjectToWorld3x4EXT"
|
||||
Name 79 "v17"
|
||||
Name 80 "gl_WorldToObject3x4EXT"
|
||||
Name 83 "v18"
|
||||
Name 84 "gl_CullMaskEXT"
|
||||
Name 87 "incomingPayload"
|
||||
Name 101 "gl_SubgroupSize"
|
||||
Name 78 "v17"
|
||||
Name 81 "v18"
|
||||
Name 82 "gl_CullMaskEXT"
|
||||
Name 85 "incomingPayload"
|
||||
Name 99 "gl_SubgroupSize"
|
||||
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
|
||||
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
|
||||
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
|
|
@ -72,13 +70,11 @@ spv.ext.AnyHitShader.rahit
|
|||
Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
|
||||
Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
|
||||
Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR
|
||||
Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
|
||||
Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
|
||||
Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR
|
||||
Decorate 101(gl_SubgroupSize) RelaxedPrecision
|
||||
Decorate 101(gl_SubgroupSize) BuiltIn SubgroupSize
|
||||
Decorate 102 RelaxedPrecision
|
||||
Decorate 103 RelaxedPrecision
|
||||
Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR
|
||||
Decorate 99(gl_SubgroupSize) RelaxedPrecision
|
||||
Decorate 99(gl_SubgroupSize) BuiltIn SubgroupSize
|
||||
Decorate 100 RelaxedPrecision
|
||||
Decorate 101 RelaxedPrecision
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
|
|
@ -118,18 +114,16 @@ spv.ext.AnyHitShader.rahit
|
|||
72: TypeVector 28(float) 4
|
||||
73: TypeMatrix 72(fvec4) 3
|
||||
74: TypePointer Function 73
|
||||
76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input
|
||||
80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input
|
||||
84(gl_CullMaskEXT): 57(ptr) Variable Input
|
||||
86: TypePointer IncomingRayPayloadKHR 72(fvec4)
|
||||
87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR
|
||||
88: 28(float) Constant 1056964608
|
||||
89: 72(fvec4) ConstantComposite 88 88 88 88
|
||||
91: 16(int) Constant 1
|
||||
92: TypeBool
|
||||
97: 6(int) Constant 0
|
||||
101(gl_SubgroupSize): 57(ptr) Variable Input
|
||||
104: TypePointer IncomingRayPayloadKHR 28(float)
|
||||
82(gl_CullMaskEXT): 57(ptr) Variable Input
|
||||
84: TypePointer IncomingRayPayloadKHR 72(fvec4)
|
||||
85(incomingPayload): 84(ptr) Variable IncomingRayPayloadKHR
|
||||
86: 28(float) Constant 1056964608
|
||||
87: 72(fvec4) ConstantComposite 86 86 86 86
|
||||
89: 16(int) Constant 1
|
||||
90: TypeBool
|
||||
95: 6(int) Constant 0
|
||||
99(gl_SubgroupSize): 57(ptr) Variable Input
|
||||
102: TypePointer IncomingRayPayloadKHR 28(float)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(v0): 8(ptr) Variable Function
|
||||
|
|
@ -149,8 +143,8 @@ spv.ext.AnyHitShader.rahit
|
|||
66(v14): 61(ptr) Variable Function
|
||||
69(v15): 17(ptr) Variable Function
|
||||
75(v16): 74(ptr) Variable Function
|
||||
79(v17): 74(ptr) Variable Function
|
||||
83(v18): 55(ptr) Variable Function
|
||||
78(v17): 74(ptr) Variable Function
|
||||
81(v18): 55(ptr) Variable Function
|
||||
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
|
||||
Store 9(v0) 12
|
||||
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
|
||||
|
|
@ -183,28 +177,28 @@ spv.ext.AnyHitShader.rahit
|
|||
Store 66(v14) 68
|
||||
71: 16(int) Load 70(gl_GeometryIndexEXT)
|
||||
Store 69(v15) 71
|
||||
77: 60 Load 76(gl_ObjectToWorld3x4EXT)
|
||||
78: 73 Transpose 77
|
||||
Store 75(v16) 78
|
||||
81: 60 Load 80(gl_WorldToObject3x4EXT)
|
||||
82: 73 Transpose 81
|
||||
Store 79(v17) 82
|
||||
85: 6(int) Load 84(gl_CullMaskEXT)
|
||||
Store 83(v18) 85
|
||||
Store 87(incomingPayload) 89
|
||||
90: 16(int) Load 18(v2)
|
||||
93: 92(bool) IEqual 90 91
|
||||
SelectionMerge 95 None
|
||||
BranchConditional 93 94 95
|
||||
94: Label
|
||||
76: 60 Load 64(gl_ObjectToWorldEXT)
|
||||
77: 73 Transpose 76
|
||||
Store 75(v16) 77
|
||||
79: 60 Load 67(gl_WorldToObjectEXT)
|
||||
80: 73 Transpose 79
|
||||
Store 78(v17) 80
|
||||
83: 6(int) Load 82(gl_CullMaskEXT)
|
||||
Store 81(v18) 83
|
||||
Store 85(incomingPayload) 87
|
||||
88: 16(int) Load 18(v2)
|
||||
91: 90(bool) IEqual 88 89
|
||||
SelectionMerge 93 None
|
||||
BranchConditional 91 92 93
|
||||
92: Label
|
||||
IgnoreIntersectionKHR
|
||||
95: Label
|
||||
102: 6(int) Load 101(gl_SubgroupSize)
|
||||
103: 28(float) ConvertUToF 102
|
||||
105: 104(ptr) AccessChain 87(incomingPayload) 97
|
||||
106: 28(float) Load 105
|
||||
107: 28(float) FAdd 106 103
|
||||
108: 104(ptr) AccessChain 87(incomingPayload) 97
|
||||
Store 108 107
|
||||
93: Label
|
||||
100: 6(int) Load 99(gl_SubgroupSize)
|
||||
101: 28(float) ConvertUToF 100
|
||||
103: 102(ptr) AccessChain 85(incomingPayload) 95
|
||||
104: 28(float) Load 103
|
||||
105: 28(float) FAdd 104 101
|
||||
106: 102(ptr) AccessChain 85(incomingPayload) 95
|
||||
Store 106 105
|
||||
TerminateRayKHR
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue