
Use of gl_Layer and gl_ViewportIndex in tessellation and vertex shaders should not trigger the addition of the Geometry capability. Fixes #2461 Added tests for use of gl_Layer and gl_ViewportIndex in a tessellation evaluation shader. Several tests for NVIDIA features for tessellation, vertex, or mesh shaders now lose the Geometry or MultiViewport capabilities. This is ok because the functionality is already covered by the ShaderViewportIndexLayerNV capability. The spv.meshShaderPerViewBuiltins.mesh test now fails validation because the validator does not know that PrimitiveId (and possibly other) builtins are enabled by the MeshShadingNV capability. I filed https://github.com/KhronosGroup/SPIRV-Headers/issues/179 to fix the grammar upstream.
261 lines
15 KiB
Plaintext
261 lines
15 KiB
Plaintext
spv.meshShaderBuiltins.mesh
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 148
|
|
|
|
Capability ClipDistance
|
|
Capability CullDistance
|
|
Capability DrawParameters
|
|
Capability ShaderViewportMaskNV
|
|
Capability MeshShadingNV
|
|
Extension "SPV_KHR_shader_draw_parameters"
|
|
Extension "SPV_NV_mesh_shader"
|
|
Extension "SPV_NV_viewport_array2"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint MeshNV 4 "main" 11 17 34 88 129 142 146
|
|
ExecutionMode 4 LocalSize 32 1 1
|
|
ExecutionMode 4 OutputVertices 81
|
|
ExecutionMode 4 OutputPrimitivesNV 32
|
|
ExecutionMode 4 OutputTrianglesNV
|
|
Source GLSL 460
|
|
SourceExtension "GL_NV_mesh_shader"
|
|
Name 4 "main"
|
|
Name 8 "iid"
|
|
Name 11 "gl_LocalInvocationID"
|
|
Name 16 "gid"
|
|
Name 17 "gl_WorkGroupID"
|
|
Name 30 "gl_MeshPerVertexNV"
|
|
MemberName 30(gl_MeshPerVertexNV) 0 "gl_Position"
|
|
MemberName 30(gl_MeshPerVertexNV) 1 "gl_PointSize"
|
|
MemberName 30(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
|
|
MemberName 30(gl_MeshPerVertexNV) 3 "gl_CullDistance"
|
|
MemberName 30(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
|
|
MemberName 30(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
|
MemberName 30(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
|
Name 34 "gl_MeshVerticesNV"
|
|
Name 84 "gl_MeshPerPrimitiveNV"
|
|
MemberName 84(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
|
MemberName 84(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
|
MemberName 84(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
|
MemberName 84(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
|
MemberName 84(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
|
MemberName 84(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
|
Name 88 "gl_MeshPrimitivesNV"
|
|
Name 129 "gl_PrimitiveIndicesNV"
|
|
Name 142 "gl_DrawID"
|
|
Name 146 "gl_PrimitiveCountNV"
|
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 1 BuiltIn PointSize
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 4 PerViewNV
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 5 PerViewNV
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV
|
|
MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
|
Decorate 30(gl_MeshPerVertexNV) Block
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
|
Decorate 84(gl_MeshPerPrimitiveNV) Block
|
|
Decorate 129(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
|
|
Decorate 142(gl_DrawID) BuiltIn DrawIndex
|
|
Decorate 146(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
|
|
Decorate 147 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: TypeFloat 32
|
|
21: TypeVector 20(float) 4
|
|
22: 6(int) Constant 4
|
|
23: TypeArray 20(float) 22
|
|
24: 6(int) Constant 3
|
|
25: TypeArray 20(float) 24
|
|
26: TypeArray 21(fvec4) 22
|
|
27: 6(int) Constant 1
|
|
28: TypeArray 20(float) 27
|
|
29: TypeArray 28 22
|
|
30(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 25 26 29 29
|
|
31: 6(int) Constant 81
|
|
32: TypeArray 30(gl_MeshPerVertexNV) 31
|
|
33: TypePointer Output 32
|
|
34(gl_MeshVerticesNV): 33(ptr) Variable Output
|
|
36: TypeInt 32 1
|
|
37: 36(int) Constant 0
|
|
38: 20(float) Constant 1065353216
|
|
39: 21(fvec4) ConstantComposite 38 38 38 38
|
|
40: TypePointer Output 21(fvec4)
|
|
43: 36(int) Constant 1
|
|
44: 20(float) Constant 1073741824
|
|
45: TypePointer Output 20(float)
|
|
48: 36(int) Constant 2
|
|
49: 36(int) Constant 3
|
|
50: 20(float) Constant 1077936128
|
|
53: 20(float) Constant 1082130432
|
|
55: 6(int) Constant 264
|
|
56: 6(int) Constant 2
|
|
81: TypeArray 36(int) 27
|
|
82: TypeArray 36(int) 22
|
|
83: TypeArray 81 22
|
|
84(gl_MeshPerPrimitiveNV): TypeStruct 36(int) 36(int) 36(int) 81 82 83
|
|
85: 6(int) Constant 32
|
|
86: TypeArray 84(gl_MeshPerPrimitiveNV) 85
|
|
87: TypePointer Output 86
|
|
88(gl_MeshPrimitivesNV): 87(ptr) Variable Output
|
|
90: 36(int) Constant 6
|
|
91: TypePointer Output 36(int)
|
|
94: 36(int) Constant 7
|
|
97: 36(int) Constant 8
|
|
100: 36(int) Constant 9
|
|
126: 6(int) Constant 96
|
|
127: TypeArray 6(int) 126
|
|
128: TypePointer Output 127
|
|
129(gl_PrimitiveIndicesNV): 128(ptr) Variable Output
|
|
130: 6(int) Constant 257
|
|
131: TypePointer Output 6(int)
|
|
133: 36(int) Constant 95
|
|
141: TypePointer Input 36(int)
|
|
142(gl_DrawID): 141(ptr) Variable Input
|
|
145: 6(int) Constant 16909060
|
|
146(gl_PrimitiveCountNV): 131(ptr) Variable Output
|
|
147: 9(ivec3) ConstantComposite 85 27 27
|
|
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
|
|
35: 6(int) Load 8(iid)
|
|
41: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 35 37
|
|
Store 41 39
|
|
42: 6(int) Load 8(iid)
|
|
46: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 42 43
|
|
Store 46 44
|
|
47: 6(int) Load 8(iid)
|
|
51: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 47 48 49
|
|
Store 51 50
|
|
52: 6(int) Load 8(iid)
|
|
54: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 52 49 48
|
|
Store 54 53
|
|
MemoryBarrier 27 55
|
|
ControlBarrier 56 56 55
|
|
57: 6(int) Load 8(iid)
|
|
58: 6(int) IAdd 57 27
|
|
59: 6(int) Load 8(iid)
|
|
60: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 59 37
|
|
61: 21(fvec4) Load 60
|
|
62: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 58 37
|
|
Store 62 61
|
|
63: 6(int) Load 8(iid)
|
|
64: 6(int) IAdd 63 27
|
|
65: 6(int) Load 8(iid)
|
|
66: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 65 43
|
|
67: 20(float) Load 66
|
|
68: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 64 43
|
|
Store 68 67
|
|
69: 6(int) Load 8(iid)
|
|
70: 6(int) IAdd 69 27
|
|
71: 6(int) Load 8(iid)
|
|
72: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 71 48 49
|
|
73: 20(float) Load 72
|
|
74: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 70 48 49
|
|
Store 74 73
|
|
75: 6(int) Load 8(iid)
|
|
76: 6(int) IAdd 75 27
|
|
77: 6(int) Load 8(iid)
|
|
78: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 77 49 48
|
|
79: 20(float) Load 78
|
|
80: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 76 49 48
|
|
Store 80 79
|
|
MemoryBarrier 27 55
|
|
ControlBarrier 56 56 55
|
|
89: 6(int) Load 8(iid)
|
|
92: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 89 37
|
|
Store 92 90
|
|
93: 6(int) Load 8(iid)
|
|
95: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 93 43
|
|
Store 95 94
|
|
96: 6(int) Load 8(iid)
|
|
98: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 96 48
|
|
Store 98 97
|
|
99: 6(int) Load 8(iid)
|
|
101: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 99 49 37
|
|
Store 101 100
|
|
MemoryBarrier 27 55
|
|
ControlBarrier 56 56 55
|
|
102: 6(int) Load 8(iid)
|
|
103: 6(int) IAdd 102 27
|
|
104: 6(int) Load 8(iid)
|
|
105: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 104 37
|
|
106: 36(int) Load 105
|
|
107: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 103 37
|
|
Store 107 106
|
|
108: 6(int) Load 8(iid)
|
|
109: 6(int) IAdd 108 27
|
|
110: 6(int) Load 8(iid)
|
|
111: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 110 43
|
|
112: 36(int) Load 111
|
|
113: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 109 43
|
|
Store 113 112
|
|
114: 6(int) Load 8(iid)
|
|
115: 6(int) IAdd 114 27
|
|
116: 6(int) Load 8(iid)
|
|
117: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 116 48
|
|
118: 36(int) Load 117
|
|
119: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 115 48
|
|
Store 119 118
|
|
120: 6(int) Load 8(iid)
|
|
121: 6(int) IAdd 120 27
|
|
122: 6(int) Load 8(iid)
|
|
123: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 122 49 37
|
|
124: 36(int) Load 123
|
|
125: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 121 49 37
|
|
Store 125 124
|
|
MemoryBarrier 27 55
|
|
ControlBarrier 56 56 55
|
|
132: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 37
|
|
Store 132 130
|
|
134: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 133
|
|
Store 134 56
|
|
135: 6(int) Load 16(gid)
|
|
136: 6(int) Load 16(gid)
|
|
137: 6(int) ISub 136 27
|
|
138: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 137
|
|
139: 6(int) Load 138
|
|
140: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 135
|
|
Store 140 139
|
|
143: 36(int) Load 142(gl_DrawID)
|
|
144: 6(int) Bitcast 143
|
|
145: 144 WritePackedPrimitiveIndices4x8NV
|
|
Store 146(gl_PrimitiveCountNV) 126
|
|
MemoryBarrier 27 55
|
|
ControlBarrier 56 56 55
|
|
Return
|
|
FunctionEnd
|