glslang/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out
Arseny Kapoulkine 34d4f78f03
Fix interaction between GL_EXT_mesh_shader and GL_EXT_fragment_shading_rate
Before this change, using gl_MeshPrimitivesEXT in mesh shader would
unconditionally create gl_MeshPrimitivesEXT.gl_PrimitiveShadingRateEXT
field and add PrimitiveShadingRateKHR capability to the output SPIRV
file, which would subsequently trigger validation errors when creating
the shader module unless the application requested primitive shading
rate feature.

What should happen instead is that unless GL_EXT_fragment_shading_rate
extension is enabled, we should not allow using
gl_PrimitiveShadingRateEXT and should not emit the associated fields
into the output.

This change fixes this by using existing filterMember mechanism that is
already used in a few other cases like this, and adjusting the required
extension on the field member which will generate an error when
gl_PrimitiveShadingRateEXT is used without enabling the extension.
2023-08-07 11:38:17 -06:00

212 lines
11 KiB
Plaintext

spv.ext.meshShaderRedeclBuiltins.mesh
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 128
Capability ClipDistance
Capability CullDistance
Capability MeshShadingEXT
Extension "SPV_EXT_mesh_shader"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshEXT 4 "main" 11 17 29 81 122
ExecutionMode 4 LocalSize 32 1 1
ExecutionMode 4 OutputVertices 81
ExecutionMode 4 OutputPrimitivesNV 32
ExecutionMode 4 OutputPoints
Source GLSL 460
SourceExtension "GL_EXT_mesh_shader"
Name 4 "main"
Name 8 "iid"
Name 11 "gl_LocalInvocationID"
Name 16 "gid"
Name 17 "gl_WorkGroupID"
Name 26 "gl_MeshPerVertexEXT"
MemberName 26(gl_MeshPerVertexEXT) 0 "gl_Position"
MemberName 26(gl_MeshPerVertexEXT) 1 "gl_PointSize"
MemberName 26(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
MemberName 26(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
Name 29 "gl_MeshVerticesEXT"
Name 78 "gl_MeshPerPrimitiveEXT"
MemberName 78(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
MemberName 78(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
MemberName 78(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
MemberName 78(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
Name 81 "gl_MeshPrimitivesEXT"
Name 122 "gl_PrimitivePointIndicesEXT"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 26(gl_MeshPerVertexEXT) 0 BuiltIn Position
MemberDecorate 26(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
MemberDecorate 26(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
MemberDecorate 26(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
Decorate 26(gl_MeshPerVertexEXT) Block
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
Decorate 78(gl_MeshPerPrimitiveEXT) Block
Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT
Decorate 127 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypeVector 6(int) 3
10: TypePointer Input 9(ivec3)
11(gl_LocalInvocationID): 10(ptr) Variable Input
12: 6(int) Constant 0
13: TypePointer Input 6(int)
17(gl_WorkGroupID): 10(ptr) Variable Input
20: 6(int) Constant 81
21: 6(int) Constant 32
22: TypeFloat 32
23: TypeVector 22(float) 4
24: 6(int) Constant 4
25: TypeArray 22(float) 24
26(gl_MeshPerVertexEXT): TypeStruct 23(fvec4) 22(float) 25 25
27: TypeArray 26(gl_MeshPerVertexEXT) 20
28: TypePointer Output 27
29(gl_MeshVerticesEXT): 28(ptr) Variable Output
31: TypeInt 32 1
32: 31(int) Constant 0
33: 22(float) Constant 1065353216
34: 23(fvec4) ConstantComposite 33 33 33 33
35: TypePointer Output 23(fvec4)
38: 31(int) Constant 1
39: 22(float) Constant 1073741824
40: TypePointer Output 22(float)
43: 31(int) Constant 2
44: 31(int) Constant 3
45: 22(float) Constant 1077936128
48: 22(float) Constant 1082130432
50: 6(int) Constant 1
51: 6(int) Constant 264
52: 6(int) Constant 2
77: TypeBool
78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool)
79: TypeArray 78(gl_MeshPerPrimitiveEXT) 21
80: TypePointer Output 79
81(gl_MeshPrimitivesEXT): 80(ptr) Variable Output
83: 31(int) Constant 6
84: TypePointer Output 31(int)
87: 31(int) Constant 7
90: 31(int) Constant 8
93: 77(bool) ConstantFalse
94: TypePointer Output 77(bool)
120: TypeArray 6(int) 21
121: TypePointer Output 120
122(gl_PrimitivePointIndicesEXT): 121(ptr) Variable Output
123: TypePointer Output 6(int)
125: 31(int) Constant 31
127: 9(ivec3) ConstantComposite 21 50 50
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
16(gid): 7(ptr) Variable Function
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
15: 6(int) Load 14
Store 8(iid) 15
18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
19: 6(int) Load 18
Store 16(gid) 19
SetMeshOutputsEXT 20 21
30: 6(int) Load 8(iid)
36: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 30 32
Store 36 34
37: 6(int) Load 8(iid)
41: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 37 38
Store 41 39
42: 6(int) Load 8(iid)
46: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 42 43 44
Store 46 45
47: 6(int) Load 8(iid)
49: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 47 44 43
Store 49 48
MemoryBarrier 50 51
ControlBarrier 52 52 51
53: 6(int) Load 8(iid)
54: 6(int) IAdd 53 50
55: 6(int) Load 8(iid)
56: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 55 32
57: 23(fvec4) Load 56
58: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 54 32
Store 58 57
59: 6(int) Load 8(iid)
60: 6(int) IAdd 59 50
61: 6(int) Load 8(iid)
62: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 61 38
63: 22(float) Load 62
64: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 60 38
Store 64 63
65: 6(int) Load 8(iid)
66: 6(int) IAdd 65 50
67: 6(int) Load 8(iid)
68: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 67 43 44
69: 22(float) Load 68
70: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 66 43 44
Store 70 69
71: 6(int) Load 8(iid)
72: 6(int) IAdd 71 50
73: 6(int) Load 8(iid)
74: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 73 44 43
75: 22(float) Load 74
76: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 72 44 43
Store 76 75
MemoryBarrier 50 51
ControlBarrier 52 52 51
82: 6(int) Load 8(iid)
85: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 82 32
Store 85 83
86: 6(int) Load 8(iid)
88: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 86 38
Store 88 87
89: 6(int) Load 8(iid)
91: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 89 43
Store 91 90
92: 6(int) Load 8(iid)
95: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 92 44
Store 95 93
MemoryBarrier 50 51
ControlBarrier 52 52 51
96: 6(int) Load 8(iid)
97: 6(int) IAdd 96 50
98: 6(int) Load 8(iid)
99: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 98 32
100: 31(int) Load 99
101: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 97 32
Store 101 100
102: 6(int) Load 8(iid)
103: 6(int) IAdd 102 50
104: 6(int) Load 8(iid)
105: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 104 38
106: 31(int) Load 105
107: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 103 38
Store 107 106
108: 6(int) Load 8(iid)
109: 6(int) IAdd 108 50
110: 6(int) Load 8(iid)
111: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 110 43
112: 31(int) Load 111
113: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 109 43
Store 113 112
114: 6(int) Load 8(iid)
115: 6(int) IAdd 114 50
116: 6(int) Load 8(iid)
117: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 116 44
118: 77(bool) Load 117
119: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 115 44
Store 119 118
MemoryBarrier 50 51
ControlBarrier 52 52 51
124: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 32
Store 124 50
126: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 125
Store 126 52
Return
FunctionEnd