
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.
215 lines
12 KiB
Plaintext
215 lines
12 KiB
Plaintext
spv.meshShaderPerViewBuiltins.mesh
|
|
Validation failed
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 126
|
|
|
|
Capability PerViewAttributesNV
|
|
Capability MeshShadingNV
|
|
Extension "SPV_NVX_multiview_per_view_attributes"
|
|
Extension "SPV_NV_mesh_shader"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint MeshNV 4 "main" 11 20 21 40 72
|
|
ExecutionMode 4 LocalSize 32 1 1
|
|
ExecutionMode 4 OutputVertices 81
|
|
ExecutionMode 4 OutputPrimitivesNV 32
|
|
ExecutionMode 4 OutputTrianglesNV
|
|
Source GLSL 450
|
|
SourceExtension "GL_NV_mesh_shader"
|
|
Name 4 "main"
|
|
Name 8 "iid"
|
|
Name 11 "gl_LocalInvocationID"
|
|
Name 16 "viewID"
|
|
Name 20 "gl_MeshViewIndicesNV"
|
|
Name 21 "gl_MeshViewCountNV"
|
|
Name 36 "gl_MeshPerVertexNV"
|
|
MemberName 36(gl_MeshPerVertexNV) 0 "gl_Position"
|
|
MemberName 36(gl_MeshPerVertexNV) 1 "gl_PointSize"
|
|
MemberName 36(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
|
|
MemberName 36(gl_MeshPerVertexNV) 3 "gl_CullDistance"
|
|
MemberName 36(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
|
|
MemberName 36(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
|
MemberName 36(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
|
Name 40 "gl_MeshVerticesNV"
|
|
Name 68 "gl_MeshPerPrimitiveNV"
|
|
MemberName 68(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
|
MemberName 68(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
|
MemberName 68(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
|
MemberName 68(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
|
MemberName 68(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
|
MemberName 68(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
|
Name 72 "gl_MeshPrimitivesNV"
|
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
|
|
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 0 BuiltIn Position
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 1 BuiltIn PointSize
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 4 PerViewNV
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 5 PerViewNV
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 6 PerViewNV
|
|
MemberDecorate 36(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
|
Decorate 36(gl_MeshPerVertexNV) Block
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
|
Decorate 68(gl_MeshPerPrimitiveNV) Block
|
|
Decorate 125 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: 6(int) Constant 4
|
|
18: TypeArray 6(int) 17
|
|
19: TypePointer Input 18
|
|
20(gl_MeshViewIndicesNV): 19(ptr) Variable Input
|
|
21(gl_MeshViewCountNV): 13(ptr) Variable Input
|
|
26: TypeFloat 32
|
|
27: TypeVector 26(float) 4
|
|
28: 6(int) Constant 1
|
|
29: TypeArray 26(float) 28
|
|
30: TypeArray 27(fvec4) 17
|
|
31: 6(int) Constant 3
|
|
32: TypeArray 26(float) 31
|
|
33: TypeArray 32 17
|
|
34: TypeArray 26(float) 17
|
|
35: TypeArray 34 17
|
|
36(gl_MeshPerVertexNV): TypeStruct 27(fvec4) 26(float) 29 29 30 33 35
|
|
37: 6(int) Constant 81
|
|
38: TypeArray 36(gl_MeshPerVertexNV) 37
|
|
39: TypePointer Output 38
|
|
40(gl_MeshVerticesNV): 39(ptr) Variable Output
|
|
42: TypeInt 32 1
|
|
43: 42(int) Constant 4
|
|
45: 26(float) Constant 1065353216
|
|
46: 26(float) Constant 1073741824
|
|
47: 26(float) Constant 1077936128
|
|
48: 26(float) Constant 1082130432
|
|
49: 27(fvec4) ConstantComposite 45 46 47 48
|
|
50: TypePointer Output 27(fvec4)
|
|
53: 42(int) Constant 5
|
|
55: 42(int) Constant 2
|
|
56: 26(float) Constant 1084227584
|
|
57: TypePointer Output 26(float)
|
|
60: 42(int) Constant 6
|
|
62: 42(int) Constant 3
|
|
63: 26(float) Constant 1086324736
|
|
65: TypeArray 42(int) 28
|
|
66: TypeArray 42(int) 17
|
|
67: TypeArray 65 17
|
|
68(gl_MeshPerPrimitiveNV): TypeStruct 42(int) 42(int) 42(int) 65 66 67
|
|
69: 6(int) Constant 32
|
|
70: TypeArray 68(gl_MeshPerPrimitiveNV) 69
|
|
71: TypePointer Output 70
|
|
72(gl_MeshPrimitivesNV): 71(ptr) Variable Output
|
|
75: 42(int) Constant 7
|
|
76: TypePointer Output 42(int)
|
|
80: 42(int) Constant 0
|
|
81: 42(int) Constant 8
|
|
83: 6(int) Constant 264
|
|
84: 6(int) Constant 2
|
|
125: 9(ivec3) ConstantComposite 69 28 28
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
8(iid): 7(ptr) Variable Function
|
|
16(viewID): 7(ptr) Variable Function
|
|
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
|
|
15: 6(int) Load 14
|
|
Store 8(iid) 15
|
|
22: 6(int) Load 21(gl_MeshViewCountNV)
|
|
23: 6(int) UMod 22 17
|
|
24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23
|
|
25: 6(int) Load 24
|
|
Store 16(viewID) 25
|
|
41: 6(int) Load 8(iid)
|
|
44: 6(int) Load 16(viewID)
|
|
51: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 41 43 44
|
|
Store 51 49
|
|
52: 6(int) Load 8(iid)
|
|
54: 6(int) Load 16(viewID)
|
|
58: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 52 53 54 55
|
|
Store 58 56
|
|
59: 6(int) Load 8(iid)
|
|
61: 6(int) Load 16(viewID)
|
|
64: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 59 60 61 62
|
|
Store 64 63
|
|
73: 6(int) Load 8(iid)
|
|
74: 6(int) Load 16(viewID)
|
|
77: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 73 43 74
|
|
Store 77 75
|
|
78: 6(int) Load 8(iid)
|
|
79: 6(int) Load 16(viewID)
|
|
82: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 78 53 79 80
|
|
Store 82 81
|
|
MemoryBarrier 28 83
|
|
ControlBarrier 84 84 83
|
|
85: 6(int) Load 8(iid)
|
|
86: 6(int) IAdd 85 28
|
|
87: 6(int) Load 16(viewID)
|
|
88: 6(int) Load 8(iid)
|
|
89: 6(int) Load 16(viewID)
|
|
90: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 88 43 89
|
|
91: 27(fvec4) Load 90
|
|
92: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 86 43 87
|
|
Store 92 91
|
|
93: 6(int) Load 8(iid)
|
|
94: 6(int) IAdd 93 28
|
|
95: 6(int) Load 16(viewID)
|
|
96: 6(int) Load 8(iid)
|
|
97: 6(int) Load 16(viewID)
|
|
98: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 96 53 97 55
|
|
99: 26(float) Load 98
|
|
100: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 94 53 95 55
|
|
Store 100 99
|
|
101: 6(int) Load 8(iid)
|
|
102: 6(int) IAdd 101 28
|
|
103: 6(int) Load 16(viewID)
|
|
104: 6(int) Load 8(iid)
|
|
105: 6(int) Load 16(viewID)
|
|
106: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 104 60 105 62
|
|
107: 26(float) Load 106
|
|
108: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 102 60 103 62
|
|
Store 108 107
|
|
109: 6(int) Load 8(iid)
|
|
110: 6(int) IAdd 109 28
|
|
111: 6(int) Load 16(viewID)
|
|
112: 6(int) Load 8(iid)
|
|
113: 6(int) Load 16(viewID)
|
|
114: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 112 43 113
|
|
115: 42(int) Load 114
|
|
116: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 110 43 111
|
|
Store 116 115
|
|
117: 6(int) Load 8(iid)
|
|
118: 6(int) IAdd 117 28
|
|
119: 6(int) Load 16(viewID)
|
|
120: 6(int) Load 8(iid)
|
|
121: 6(int) Load 16(viewID)
|
|
122: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 120 53 121 80
|
|
123: 42(int) Load 122
|
|
124: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 118 53 119 80
|
|
Store 124 123
|
|
MemoryBarrier 28 83
|
|
ControlBarrier 84 84 83
|
|
Return
|
|
FunctionEnd
|