
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.
217 lines
12 KiB
Plaintext
217 lines
12 KiB
Plaintext
spv.meshShaderRedeclBuiltins.mesh
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 129
|
|
|
|
Capability ClipDistance
|
|
Capability CullDistance
|
|
Capability ShaderViewportMaskNV
|
|
Capability MeshShadingNV
|
|
Extension "SPV_NV_mesh_shader"
|
|
Extension "SPV_NV_viewport_array2"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint MeshNV 4 "main" 11 17 28 81 122 127
|
|
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 24 "gl_MeshPerVertexNV"
|
|
MemberName 24(gl_MeshPerVertexNV) 0 "gl_Position"
|
|
MemberName 24(gl_MeshPerVertexNV) 1 "gl_PointSize"
|
|
MemberName 24(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
|
|
MemberName 24(gl_MeshPerVertexNV) 3 "gl_CullDistance"
|
|
Name 28 "gl_MeshVerticesNV"
|
|
Name 77 "gl_MeshPerPrimitiveNV"
|
|
MemberName 77(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
|
MemberName 77(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
|
MemberName 77(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
|
MemberName 77(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
|
Name 81 "gl_MeshPrimitivesNV"
|
|
Name 122 "gl_PrimitiveIndicesNV"
|
|
Name 127 "gl_PrimitiveCountNV"
|
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
|
|
MemberDecorate 24(gl_MeshPerVertexNV) 0 BuiltIn Position
|
|
MemberDecorate 24(gl_MeshPerVertexNV) 1 BuiltIn PointSize
|
|
MemberDecorate 24(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
|
|
MemberDecorate 24(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
|
|
Decorate 24(gl_MeshPerVertexNV) Block
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
|
MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
|
Decorate 77(gl_MeshPerPrimitiveNV) Block
|
|
Decorate 122(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
|
|
Decorate 127(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
|
|
Decorate 128 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(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 23
|
|
25: 6(int) Constant 81
|
|
26: TypeArray 24(gl_MeshPerVertexNV) 25
|
|
27: TypePointer Output 26
|
|
28(gl_MeshVerticesNV): 27(ptr) Variable Output
|
|
30: TypeInt 32 1
|
|
31: 30(int) Constant 0
|
|
32: 20(float) Constant 1065353216
|
|
33: 21(fvec4) ConstantComposite 32 32 32 32
|
|
34: TypePointer Output 21(fvec4)
|
|
37: 30(int) Constant 1
|
|
38: 20(float) Constant 1073741824
|
|
39: TypePointer Output 20(float)
|
|
42: 30(int) Constant 2
|
|
43: 30(int) Constant 3
|
|
44: 20(float) Constant 1077936128
|
|
47: 20(float) Constant 1082130432
|
|
49: 6(int) Constant 1
|
|
50: 6(int) Constant 264
|
|
51: 6(int) Constant 2
|
|
76: TypeArray 30(int) 49
|
|
77(gl_MeshPerPrimitiveNV): TypeStruct 30(int) 30(int) 30(int) 76
|
|
78: 6(int) Constant 32
|
|
79: TypeArray 77(gl_MeshPerPrimitiveNV) 78
|
|
80: TypePointer Output 79
|
|
81(gl_MeshPrimitivesNV): 80(ptr) Variable Output
|
|
83: 30(int) Constant 6
|
|
84: TypePointer Output 30(int)
|
|
87: 30(int) Constant 7
|
|
90: 30(int) Constant 8
|
|
93: 30(int) Constant 9
|
|
119: 6(int) Constant 96
|
|
120: TypeArray 6(int) 119
|
|
121: TypePointer Output 120
|
|
122(gl_PrimitiveIndicesNV): 121(ptr) Variable Output
|
|
123: TypePointer Output 6(int)
|
|
125: 30(int) Constant 95
|
|
127(gl_PrimitiveCountNV): 123(ptr) Variable Output
|
|
128: 9(ivec3) ConstantComposite 78 49 49
|
|
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
|
|
29: 6(int) Load 8(iid)
|
|
35: 34(ptr) AccessChain 28(gl_MeshVerticesNV) 29 31
|
|
Store 35 33
|
|
36: 6(int) Load 8(iid)
|
|
40: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 36 37
|
|
Store 40 38
|
|
41: 6(int) Load 8(iid)
|
|
45: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 41 42 43
|
|
Store 45 44
|
|
46: 6(int) Load 8(iid)
|
|
48: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 46 43 42
|
|
Store 48 47
|
|
MemoryBarrier 49 50
|
|
ControlBarrier 51 51 50
|
|
52: 6(int) Load 8(iid)
|
|
53: 6(int) IAdd 52 49
|
|
54: 6(int) Load 8(iid)
|
|
55: 34(ptr) AccessChain 28(gl_MeshVerticesNV) 54 31
|
|
56: 21(fvec4) Load 55
|
|
57: 34(ptr) AccessChain 28(gl_MeshVerticesNV) 53 31
|
|
Store 57 56
|
|
58: 6(int) Load 8(iid)
|
|
59: 6(int) IAdd 58 49
|
|
60: 6(int) Load 8(iid)
|
|
61: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 60 37
|
|
62: 20(float) Load 61
|
|
63: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 59 37
|
|
Store 63 62
|
|
64: 6(int) Load 8(iid)
|
|
65: 6(int) IAdd 64 49
|
|
66: 6(int) Load 8(iid)
|
|
67: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 66 42 43
|
|
68: 20(float) Load 67
|
|
69: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 65 42 43
|
|
Store 69 68
|
|
70: 6(int) Load 8(iid)
|
|
71: 6(int) IAdd 70 49
|
|
72: 6(int) Load 8(iid)
|
|
73: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 72 43 42
|
|
74: 20(float) Load 73
|
|
75: 39(ptr) AccessChain 28(gl_MeshVerticesNV) 71 43 42
|
|
Store 75 74
|
|
MemoryBarrier 49 50
|
|
ControlBarrier 51 51 50
|
|
82: 6(int) Load 8(iid)
|
|
85: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 82 31
|
|
Store 85 83
|
|
86: 6(int) Load 8(iid)
|
|
88: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 86 37
|
|
Store 88 87
|
|
89: 6(int) Load 8(iid)
|
|
91: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 89 42
|
|
Store 91 90
|
|
92: 6(int) Load 8(iid)
|
|
94: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 92 43 31
|
|
Store 94 93
|
|
MemoryBarrier 49 50
|
|
ControlBarrier 51 51 50
|
|
95: 6(int) Load 8(iid)
|
|
96: 6(int) IAdd 95 49
|
|
97: 6(int) Load 8(iid)
|
|
98: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 97 31
|
|
99: 30(int) Load 98
|
|
100: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 96 31
|
|
Store 100 99
|
|
101: 6(int) Load 8(iid)
|
|
102: 6(int) IAdd 101 49
|
|
103: 6(int) Load 8(iid)
|
|
104: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 103 37
|
|
105: 30(int) Load 104
|
|
106: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 102 37
|
|
Store 106 105
|
|
107: 6(int) Load 8(iid)
|
|
108: 6(int) IAdd 107 49
|
|
109: 6(int) Load 8(iid)
|
|
110: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 109 42
|
|
111: 30(int) Load 110
|
|
112: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 108 42
|
|
Store 112 111
|
|
113: 6(int) Load 8(iid)
|
|
114: 6(int) IAdd 113 49
|
|
115: 6(int) Load 8(iid)
|
|
116: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 115 43 31
|
|
117: 30(int) Load 116
|
|
118: 84(ptr) AccessChain 81(gl_MeshPrimitivesNV) 114 43 31
|
|
Store 118 117
|
|
MemoryBarrier 49 50
|
|
ControlBarrier 51 51 50
|
|
124: 123(ptr) AccessChain 122(gl_PrimitiveIndicesNV) 31
|
|
Store 124 49
|
|
126: 123(ptr) AccessChain 122(gl_PrimitiveIndicesNV) 125
|
|
Store 126 51
|
|
Store 127(gl_PrimitiveCountNV) 119
|
|
Return
|
|
FunctionEnd
|