
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.
212 lines
11 KiB
Plaintext
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
|