Merge pull request #1523 from sparmarNV/fix-SPV_NV_mesh_shader
Allow redeclaration of builtin interface blocks in mesh shader
This commit is contained in:
commit
c374030e80
@ -1257,6 +1257,8 @@ int C_DECL main(int argc, char* argv[])
|
|||||||
// .rchit = ray closest hit
|
// .rchit = ray closest hit
|
||||||
// .rmiss = ray miss
|
// .rmiss = ray miss
|
||||||
// .rcall = ray callable
|
// .rcall = ray callable
|
||||||
|
// .mesh = mesh
|
||||||
|
// .task = task
|
||||||
// Additionally, the file names may end in .<stage>.glsl and .<stage>.hlsl
|
// Additionally, the file names may end in .<stage>.glsl and .<stage>.hlsl
|
||||||
// where <stage> is one of the stages listed above.
|
// where <stage> is one of the stages listed above.
|
||||||
//
|
//
|
||||||
@ -1395,7 +1397,7 @@ void usage()
|
|||||||
" .rahit for a ray any hit shader\n"
|
" .rahit for a ray any hit shader\n"
|
||||||
" .rchit for a ray closest hit shader\n"
|
" .rchit for a ray closest hit shader\n"
|
||||||
" .rmiss for a ray miss shader\n"
|
" .rmiss for a ray miss shader\n"
|
||||||
" .rcall for a ray callable shader"
|
" .rcall for a ray callable shader\n"
|
||||||
#endif
|
#endif
|
||||||
" .glsl for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes\n"
|
" .glsl for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes\n"
|
||||||
" .hlsl for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes\n"
|
" .hlsl for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes\n"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
spv.meshShaderUserDefined.mesh
|
spv.320.meshShaderUserDefined.mesh
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80007
|
// Generated by (magic number): 80007
|
||||||
// Id's are bound by 140
|
// Id's are bound by 140
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
spv.meshShaderBuiltins.mesh
|
spv.meshShaderBuiltins.mesh
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80007
|
// Generated by (magic number): 80007
|
||||||
// Id's are bound by 147
|
// Id's are bound by 146
|
||||||
|
|
||||||
Capability ClipDistance
|
Capability ClipDistance
|
||||||
Capability CullDistance
|
Capability CullDistance
|
||||||
@ -14,7 +14,7 @@ spv.meshShaderBuiltins.mesh
|
|||||||
Extension "SPV_NV_viewport_array2"
|
Extension "SPV_NV_viewport_array2"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint MeshNV 4 "main" 11 17 34 89 129 140 144
|
EntryPoint MeshNV 4 "main" 11 17 34 88 128 139 143
|
||||||
ExecutionMode 4 LocalSize 32 1 1
|
ExecutionMode 4 LocalSize 32 1 1
|
||||||
ExecutionMode 4 OutputVertices 81
|
ExecutionMode 4 OutputVertices 81
|
||||||
ExecutionMode 4 OutputPrimitivesNV 32
|
ExecutionMode 4 OutputPrimitivesNV 32
|
||||||
@ -35,17 +35,17 @@ spv.meshShaderBuiltins.mesh
|
|||||||
MemberName 30(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
MemberName 30(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
||||||
MemberName 30(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
MemberName 30(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
||||||
Name 34 "gl_MeshVerticesNV"
|
Name 34 "gl_MeshVerticesNV"
|
||||||
Name 85 "gl_MeshPerPrimitiveNV"
|
Name 84 "gl_MeshPerPrimitiveNV"
|
||||||
MemberName 85(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
MemberName 84(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
||||||
MemberName 85(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
MemberName 84(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
||||||
MemberName 85(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
MemberName 84(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
||||||
MemberName 85(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
MemberName 84(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
||||||
MemberName 85(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
MemberName 84(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
||||||
MemberName 85(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
MemberName 84(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
||||||
Name 89 "gl_MeshPrimitivesNV"
|
Name 88 "gl_MeshPrimitivesNV"
|
||||||
Name 129 "gl_PrimitiveIndicesNV"
|
Name 128 "gl_PrimitiveIndicesNV"
|
||||||
Name 140 "gl_DrawID"
|
Name 139 "gl_DrawID"
|
||||||
Name 144 "gl_PrimitiveCountNV"
|
Name 143 "gl_PrimitiveCountNV"
|
||||||
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||||
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
|
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
|
||||||
MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position
|
MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position
|
||||||
@ -59,25 +59,25 @@ spv.meshShaderBuiltins.mesh
|
|||||||
MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV
|
MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV
|
||||||
MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
||||||
Decorate 30(gl_MeshPerVertexNV) Block
|
Decorate 30(gl_MeshPerVertexNV) Block
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
||||||
MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
||||||
Decorate 85(gl_MeshPerPrimitiveNV) Block
|
Decorate 84(gl_MeshPerPrimitiveNV) Block
|
||||||
Decorate 129(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
|
Decorate 128(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
|
||||||
Decorate 140(gl_DrawID) BuiltIn DrawIndex
|
Decorate 139(gl_DrawID) BuiltIn DrawIndex
|
||||||
Decorate 144(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
|
Decorate 143(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
|
||||||
Decorate 146 BuiltIn WorkgroupSize
|
Decorate 145 BuiltIn WorkgroupSize
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 0
|
6: TypeInt 32 0
|
||||||
@ -95,7 +95,7 @@ spv.meshShaderBuiltins.mesh
|
|||||||
24: 6(int) Constant 3
|
24: 6(int) Constant 3
|
||||||
25: TypeArray 20(float) 24
|
25: TypeArray 20(float) 24
|
||||||
26: TypeArray 21(fvec4) 22
|
26: TypeArray 21(fvec4) 22
|
||||||
27: 6(int) Constant 8
|
27: 6(int) Constant 1
|
||||||
28: TypeArray 20(float) 27
|
28: TypeArray 20(float) 27
|
||||||
29: TypeArray 28 22
|
29: TypeArray 28 22
|
||||||
30(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 25 26 29 29
|
30(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 25 26 29 29
|
||||||
@ -115,33 +115,32 @@ spv.meshShaderBuiltins.mesh
|
|||||||
49: 36(int) Constant 3
|
49: 36(int) Constant 3
|
||||||
50: 20(float) Constant 1077936128
|
50: 20(float) Constant 1077936128
|
||||||
53: 20(float) Constant 1082130432
|
53: 20(float) Constant 1082130432
|
||||||
55: 6(int) Constant 1
|
55: 6(int) Constant 264
|
||||||
56: 6(int) Constant 264
|
56: 6(int) Constant 2
|
||||||
57: 6(int) Constant 2
|
81: TypeArray 36(int) 27
|
||||||
82: TypeArray 36(int) 55
|
82: TypeArray 36(int) 22
|
||||||
83: TypeArray 36(int) 22
|
83: TypeArray 81 22
|
||||||
84: TypeArray 82 22
|
84(gl_MeshPerPrimitiveNV): TypeStruct 36(int) 36(int) 36(int) 81 82 83
|
||||||
85(gl_MeshPerPrimitiveNV): TypeStruct 36(int) 36(int) 36(int) 82 83 84
|
85: 6(int) Constant 32
|
||||||
86: 6(int) Constant 32
|
86: TypeArray 84(gl_MeshPerPrimitiveNV) 85
|
||||||
87: TypeArray 85(gl_MeshPerPrimitiveNV) 86
|
87: TypePointer Output 86
|
||||||
88: TypePointer Output 87
|
88(gl_MeshPrimitivesNV): 87(ptr) Variable Output
|
||||||
89(gl_MeshPrimitivesNV): 88(ptr) Variable Output
|
90: 36(int) Constant 6
|
||||||
91: 36(int) Constant 6
|
91: TypePointer Output 36(int)
|
||||||
92: TypePointer Output 36(int)
|
94: 36(int) Constant 7
|
||||||
95: 36(int) Constant 7
|
97: 36(int) Constant 8
|
||||||
98: 36(int) Constant 8
|
100: 36(int) Constant 9
|
||||||
101: 36(int) Constant 9
|
126: TypeArray 6(int) 31
|
||||||
127: TypeArray 6(int) 31
|
127: TypePointer Output 126
|
||||||
128: TypePointer Output 127
|
128(gl_PrimitiveIndicesNV): 127(ptr) Variable Output
|
||||||
129(gl_PrimitiveIndicesNV): 128(ptr) Variable Output
|
129: 6(int) Constant 257
|
||||||
130: 6(int) Constant 257
|
130: TypePointer Output 6(int)
|
||||||
131: TypePointer Output 6(int)
|
138: TypePointer Input 36(int)
|
||||||
139: TypePointer Input 36(int)
|
139(gl_DrawID): 138(ptr) Variable Input
|
||||||
140(gl_DrawID): 139(ptr) Variable Input
|
142: 6(int) Constant 16909060
|
||||||
143: 6(int) Constant 16909060
|
143(gl_PrimitiveCountNV): 130(ptr) Variable Output
|
||||||
144(gl_PrimitiveCountNV): 131(ptr) Variable Output
|
144: 6(int) Constant 96
|
||||||
145: 6(int) Constant 96
|
145: 9(ivec3) ConstantComposite 85 27 27
|
||||||
146: 9(ivec3) ConstantComposite 86 55 55
|
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(iid): 7(ptr) Variable Function
|
8(iid): 7(ptr) Variable Function
|
||||||
@ -164,96 +163,96 @@ spv.meshShaderBuiltins.mesh
|
|||||||
52: 6(int) Load 8(iid)
|
52: 6(int) Load 8(iid)
|
||||||
54: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 52 49 48
|
54: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 52 49 48
|
||||||
Store 54 53
|
Store 54 53
|
||||||
MemoryBarrier 55 56
|
MemoryBarrier 27 55
|
||||||
ControlBarrier 57 57 56
|
ControlBarrier 56 56 55
|
||||||
58: 6(int) Load 8(iid)
|
57: 6(int) Load 8(iid)
|
||||||
59: 6(int) IAdd 58 55
|
58: 6(int) IAdd 57 27
|
||||||
60: 6(int) Load 8(iid)
|
59: 6(int) Load 8(iid)
|
||||||
61: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 60 37
|
60: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 59 37
|
||||||
62: 21(fvec4) Load 61
|
61: 21(fvec4) Load 60
|
||||||
63: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 59 37
|
62: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 58 37
|
||||||
Store 63 62
|
Store 62 61
|
||||||
64: 6(int) Load 8(iid)
|
63: 6(int) Load 8(iid)
|
||||||
65: 6(int) IAdd 64 55
|
64: 6(int) IAdd 63 27
|
||||||
66: 6(int) Load 8(iid)
|
65: 6(int) Load 8(iid)
|
||||||
67: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 66 43
|
66: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 65 43
|
||||||
68: 20(float) Load 67
|
67: 20(float) Load 66
|
||||||
69: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 65 43
|
68: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 64 43
|
||||||
Store 69 68
|
Store 68 67
|
||||||
70: 6(int) Load 8(iid)
|
69: 6(int) Load 8(iid)
|
||||||
71: 6(int) IAdd 70 55
|
70: 6(int) IAdd 69 27
|
||||||
72: 6(int) Load 8(iid)
|
71: 6(int) Load 8(iid)
|
||||||
73: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 72 48 49
|
72: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 71 48 49
|
||||||
74: 20(float) Load 73
|
73: 20(float) Load 72
|
||||||
75: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 71 48 49
|
74: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 70 48 49
|
||||||
Store 75 74
|
Store 74 73
|
||||||
76: 6(int) Load 8(iid)
|
75: 6(int) Load 8(iid)
|
||||||
77: 6(int) IAdd 76 55
|
76: 6(int) IAdd 75 27
|
||||||
78: 6(int) Load 8(iid)
|
77: 6(int) Load 8(iid)
|
||||||
79: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 78 49 48
|
78: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 77 49 48
|
||||||
80: 20(float) Load 79
|
79: 20(float) Load 78
|
||||||
81: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 77 49 48
|
80: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 76 49 48
|
||||||
Store 81 80
|
Store 80 79
|
||||||
MemoryBarrier 55 56
|
MemoryBarrier 27 55
|
||||||
ControlBarrier 57 57 56
|
ControlBarrier 56 56 55
|
||||||
90: 6(int) Load 8(iid)
|
89: 6(int) Load 8(iid)
|
||||||
93: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 90 37
|
92: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 89 37
|
||||||
Store 93 91
|
Store 92 90
|
||||||
94: 6(int) Load 8(iid)
|
93: 6(int) Load 8(iid)
|
||||||
96: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 94 43
|
95: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 93 43
|
||||||
Store 96 95
|
Store 95 94
|
||||||
97: 6(int) Load 8(iid)
|
96: 6(int) Load 8(iid)
|
||||||
99: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 97 48
|
98: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 96 48
|
||||||
Store 99 98
|
Store 98 97
|
||||||
100: 6(int) Load 8(iid)
|
99: 6(int) Load 8(iid)
|
||||||
102: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 100 49 37
|
101: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 99 49 37
|
||||||
Store 102 101
|
Store 101 100
|
||||||
MemoryBarrier 55 56
|
MemoryBarrier 27 55
|
||||||
ControlBarrier 57 57 56
|
ControlBarrier 56 56 55
|
||||||
103: 6(int) Load 8(iid)
|
102: 6(int) Load 8(iid)
|
||||||
104: 6(int) IAdd 103 55
|
103: 6(int) IAdd 102 27
|
||||||
105: 6(int) Load 8(iid)
|
104: 6(int) Load 8(iid)
|
||||||
106: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 105 37
|
105: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 104 37
|
||||||
107: 36(int) Load 106
|
106: 36(int) Load 105
|
||||||
108: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 104 37
|
107: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 103 37
|
||||||
Store 108 107
|
Store 107 106
|
||||||
109: 6(int) Load 8(iid)
|
108: 6(int) Load 8(iid)
|
||||||
110: 6(int) IAdd 109 55
|
109: 6(int) IAdd 108 27
|
||||||
111: 6(int) Load 8(iid)
|
110: 6(int) Load 8(iid)
|
||||||
112: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 111 43
|
111: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 110 43
|
||||||
113: 36(int) Load 112
|
112: 36(int) Load 111
|
||||||
114: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 110 43
|
113: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 109 43
|
||||||
Store 114 113
|
Store 113 112
|
||||||
115: 6(int) Load 8(iid)
|
114: 6(int) Load 8(iid)
|
||||||
116: 6(int) IAdd 115 55
|
115: 6(int) IAdd 114 27
|
||||||
117: 6(int) Load 8(iid)
|
116: 6(int) Load 8(iid)
|
||||||
118: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 117 48
|
117: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 116 48
|
||||||
119: 36(int) Load 118
|
118: 36(int) Load 117
|
||||||
120: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 116 48
|
119: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 115 48
|
||||||
Store 120 119
|
Store 119 118
|
||||||
121: 6(int) Load 8(iid)
|
120: 6(int) Load 8(iid)
|
||||||
122: 6(int) IAdd 121 55
|
121: 6(int) IAdd 120 27
|
||||||
123: 6(int) Load 8(iid)
|
122: 6(int) Load 8(iid)
|
||||||
124: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 123 49 37
|
123: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 122 49 37
|
||||||
125: 36(int) Load 124
|
124: 36(int) Load 123
|
||||||
126: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 122 49 37
|
125: 91(ptr) AccessChain 88(gl_MeshPrimitivesNV) 121 49 37
|
||||||
Store 126 125
|
Store 125 124
|
||||||
MemoryBarrier 55 56
|
MemoryBarrier 27 55
|
||||||
ControlBarrier 57 57 56
|
ControlBarrier 56 56 55
|
||||||
132: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 37
|
131: 130(ptr) AccessChain 128(gl_PrimitiveIndicesNV) 37
|
||||||
Store 132 130
|
Store 131 129
|
||||||
|
132: 6(int) Load 16(gid)
|
||||||
133: 6(int) Load 16(gid)
|
133: 6(int) Load 16(gid)
|
||||||
134: 6(int) Load 16(gid)
|
134: 6(int) ISub 133 27
|
||||||
135: 6(int) ISub 134 55
|
135: 130(ptr) AccessChain 128(gl_PrimitiveIndicesNV) 134
|
||||||
136: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 135
|
136: 6(int) Load 135
|
||||||
137: 6(int) Load 136
|
137: 130(ptr) AccessChain 128(gl_PrimitiveIndicesNV) 132
|
||||||
138: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 133
|
Store 137 136
|
||||||
Store 138 137
|
140: 36(int) Load 139(gl_DrawID)
|
||||||
141: 36(int) Load 140(gl_DrawID)
|
141: 6(int) Bitcast 140
|
||||||
142: 6(int) Bitcast 141
|
142: 141 WritePackedPrimitiveIndices4x8NV
|
||||||
143: 142 WritePackedPrimitiveIndices4x8NV
|
Store 143(gl_PrimitiveCountNV) 144
|
||||||
Store 144(gl_PrimitiveCountNV) 145
|
MemoryBarrier 27 55
|
||||||
MemoryBarrier 55 56
|
ControlBarrier 56 56 55
|
||||||
ControlBarrier 57 57 56
|
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
spv.meshShaderPerViewBuiltins.mesh
|
spv.meshShaderPerViewBuiltins.mesh
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80007
|
// Generated by (magic number): 80007
|
||||||
// Id's are bound by 124
|
// Id's are bound by 126
|
||||||
|
|
||||||
Capability MultiViewport
|
Capability MultiViewport
|
||||||
Capability PerViewAttributesNV
|
Capability PerViewAttributesNV
|
||||||
@ -10,7 +10,7 @@ spv.meshShaderPerViewBuiltins.mesh
|
|||||||
Extension "SPV_NV_mesh_shader"
|
Extension "SPV_NV_mesh_shader"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint MeshNV 4 "main" 11 20 21 38 70
|
EntryPoint MeshNV 4 "main" 11 20 21 40 72
|
||||||
ExecutionMode 4 LocalSize 32 1 1
|
ExecutionMode 4 LocalSize 32 1 1
|
||||||
ExecutionMode 4 OutputVertices 81
|
ExecutionMode 4 OutputVertices 81
|
||||||
ExecutionMode 4 OutputPrimitivesNV 32
|
ExecutionMode 4 OutputPrimitivesNV 32
|
||||||
@ -23,53 +23,53 @@ spv.meshShaderPerViewBuiltins.mesh
|
|||||||
Name 16 "viewID"
|
Name 16 "viewID"
|
||||||
Name 20 "gl_MeshViewIndicesNV"
|
Name 20 "gl_MeshViewIndicesNV"
|
||||||
Name 21 "gl_MeshViewCountNV"
|
Name 21 "gl_MeshViewCountNV"
|
||||||
Name 34 "gl_MeshPerVertexNV"
|
Name 36 "gl_MeshPerVertexNV"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 0 "gl_Position"
|
MemberName 36(gl_MeshPerVertexNV) 0 "gl_Position"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 1 "gl_PointSize"
|
MemberName 36(gl_MeshPerVertexNV) 1 "gl_PointSize"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
|
MemberName 36(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 3 "gl_CullDistance"
|
MemberName 36(gl_MeshPerVertexNV) 3 "gl_CullDistance"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
|
MemberName 36(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
MemberName 36(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
||||||
MemberName 34(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
MemberName 36(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
||||||
Name 38 "gl_MeshVerticesNV"
|
Name 40 "gl_MeshVerticesNV"
|
||||||
Name 66 "gl_MeshPerPrimitiveNV"
|
Name 68 "gl_MeshPerPrimitiveNV"
|
||||||
MemberName 66(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
MemberName 68(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
||||||
MemberName 66(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
MemberName 68(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
||||||
MemberName 66(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
MemberName 68(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
||||||
MemberName 66(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
MemberName 68(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
||||||
MemberName 66(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
MemberName 68(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
||||||
MemberName 66(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
MemberName 68(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
||||||
Name 70 "gl_MeshPrimitivesNV"
|
Name 72 "gl_MeshPrimitivesNV"
|
||||||
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||||
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
|
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
|
||||||
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
|
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 0 BuiltIn Position
|
MemberDecorate 36(gl_MeshPerVertexNV) 0 BuiltIn Position
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 1 BuiltIn PointSize
|
MemberDecorate 36(gl_MeshPerVertexNV) 1 BuiltIn PointSize
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
|
MemberDecorate 36(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
|
MemberDecorate 36(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 4 PerViewNV
|
MemberDecorate 36(gl_MeshPerVertexNV) 4 PerViewNV
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
|
MemberDecorate 36(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 5 PerViewNV
|
MemberDecorate 36(gl_MeshPerVertexNV) 5 PerViewNV
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
|
MemberDecorate 36(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 6 PerViewNV
|
MemberDecorate 36(gl_MeshPerVertexNV) 6 PerViewNV
|
||||||
MemberDecorate 34(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
MemberDecorate 36(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
||||||
Decorate 34(gl_MeshPerVertexNV) Block
|
Decorate 36(gl_MeshPerVertexNV) Block
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
||||||
MemberDecorate 66(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
||||||
Decorate 66(gl_MeshPerPrimitiveNV) Block
|
Decorate 68(gl_MeshPerPrimitiveNV) Block
|
||||||
Decorate 123 BuiltIn WorkgroupSize
|
Decorate 125 BuiltIn WorkgroupSize
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 0
|
6: TypeInt 32 0
|
||||||
@ -89,44 +89,46 @@ spv.meshShaderPerViewBuiltins.mesh
|
|||||||
28: 6(int) Constant 1
|
28: 6(int) Constant 1
|
||||||
29: TypeArray 26(float) 28
|
29: TypeArray 26(float) 28
|
||||||
30: TypeArray 27(fvec4) 17
|
30: TypeArray 27(fvec4) 17
|
||||||
31: 6(int) Constant 8
|
31: 6(int) Constant 3
|
||||||
32: TypeArray 26(float) 31
|
32: TypeArray 26(float) 31
|
||||||
33: TypeArray 32 17
|
33: TypeArray 32 17
|
||||||
34(gl_MeshPerVertexNV): TypeStruct 27(fvec4) 26(float) 29 29 30 33 33
|
34: TypeArray 26(float) 17
|
||||||
35: 6(int) Constant 81
|
35: TypeArray 34 17
|
||||||
36: TypeArray 34(gl_MeshPerVertexNV) 35
|
36(gl_MeshPerVertexNV): TypeStruct 27(fvec4) 26(float) 29 29 30 33 35
|
||||||
37: TypePointer Output 36
|
37: 6(int) Constant 81
|
||||||
38(gl_MeshVerticesNV): 37(ptr) Variable Output
|
38: TypeArray 36(gl_MeshPerVertexNV) 37
|
||||||
40: TypeInt 32 1
|
39: TypePointer Output 38
|
||||||
41: 40(int) Constant 4
|
40(gl_MeshVerticesNV): 39(ptr) Variable Output
|
||||||
43: 26(float) Constant 1065353216
|
42: TypeInt 32 1
|
||||||
44: 26(float) Constant 1073741824
|
43: 42(int) Constant 4
|
||||||
45: 26(float) Constant 1077936128
|
45: 26(float) Constant 1065353216
|
||||||
46: 26(float) Constant 1082130432
|
46: 26(float) Constant 1073741824
|
||||||
47: 27(fvec4) ConstantComposite 43 44 45 46
|
47: 26(float) Constant 1077936128
|
||||||
48: TypePointer Output 27(fvec4)
|
48: 26(float) Constant 1082130432
|
||||||
51: 40(int) Constant 5
|
49: 27(fvec4) ConstantComposite 45 46 47 48
|
||||||
53: 40(int) Constant 2
|
50: TypePointer Output 27(fvec4)
|
||||||
54: 26(float) Constant 1084227584
|
53: 42(int) Constant 5
|
||||||
55: TypePointer Output 26(float)
|
55: 42(int) Constant 2
|
||||||
58: 40(int) Constant 6
|
56: 26(float) Constant 1084227584
|
||||||
60: 40(int) Constant 3
|
57: TypePointer Output 26(float)
|
||||||
61: 26(float) Constant 1086324736
|
60: 42(int) Constant 6
|
||||||
63: TypeArray 40(int) 28
|
62: 42(int) Constant 3
|
||||||
64: TypeArray 40(int) 17
|
63: 26(float) Constant 1086324736
|
||||||
65: TypeArray 63 17
|
65: TypeArray 42(int) 28
|
||||||
66(gl_MeshPerPrimitiveNV): TypeStruct 40(int) 40(int) 40(int) 63 64 65
|
66: TypeArray 42(int) 17
|
||||||
67: 6(int) Constant 32
|
67: TypeArray 65 17
|
||||||
68: TypeArray 66(gl_MeshPerPrimitiveNV) 67
|
68(gl_MeshPerPrimitiveNV): TypeStruct 42(int) 42(int) 42(int) 65 66 67
|
||||||
69: TypePointer Output 68
|
69: 6(int) Constant 32
|
||||||
70(gl_MeshPrimitivesNV): 69(ptr) Variable Output
|
70: TypeArray 68(gl_MeshPerPrimitiveNV) 69
|
||||||
73: 40(int) Constant 7
|
71: TypePointer Output 70
|
||||||
74: TypePointer Output 40(int)
|
72(gl_MeshPrimitivesNV): 71(ptr) Variable Output
|
||||||
78: 40(int) Constant 0
|
75: 42(int) Constant 7
|
||||||
79: 40(int) Constant 8
|
76: TypePointer Output 42(int)
|
||||||
81: 6(int) Constant 264
|
80: 42(int) Constant 0
|
||||||
82: 6(int) Constant 2
|
81: 42(int) Constant 8
|
||||||
123: 9(ivec3) ConstantComposite 67 28 28
|
83: 6(int) Constant 264
|
||||||
|
84: 6(int) Constant 2
|
||||||
|
125: 9(ivec3) ConstantComposite 69 28 28
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(iid): 7(ptr) Variable Function
|
8(iid): 7(ptr) Variable Function
|
||||||
@ -139,74 +141,74 @@ spv.meshShaderPerViewBuiltins.mesh
|
|||||||
24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23
|
24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23
|
||||||
25: 6(int) Load 24
|
25: 6(int) Load 24
|
||||||
Store 16(viewID) 25
|
Store 16(viewID) 25
|
||||||
39: 6(int) Load 8(iid)
|
41: 6(int) Load 8(iid)
|
||||||
42: 6(int) Load 16(viewID)
|
44: 6(int) Load 16(viewID)
|
||||||
49: 48(ptr) AccessChain 38(gl_MeshVerticesNV) 39 41 42
|
51: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 41 43 44
|
||||||
Store 49 47
|
Store 51 49
|
||||||
50: 6(int) Load 8(iid)
|
52: 6(int) Load 8(iid)
|
||||||
52: 6(int) Load 16(viewID)
|
54: 6(int) Load 16(viewID)
|
||||||
56: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 50 51 52 53
|
58: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 52 53 54 55
|
||||||
Store 56 54
|
Store 58 56
|
||||||
57: 6(int) Load 8(iid)
|
59: 6(int) Load 8(iid)
|
||||||
59: 6(int) Load 16(viewID)
|
61: 6(int) Load 16(viewID)
|
||||||
62: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 57 58 59 60
|
64: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 59 60 61 62
|
||||||
Store 62 61
|
Store 64 63
|
||||||
71: 6(int) Load 8(iid)
|
73: 6(int) Load 8(iid)
|
||||||
72: 6(int) Load 16(viewID)
|
74: 6(int) Load 16(viewID)
|
||||||
75: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 71 41 72
|
77: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 73 43 74
|
||||||
Store 75 73
|
Store 77 75
|
||||||
76: 6(int) Load 8(iid)
|
78: 6(int) Load 8(iid)
|
||||||
77: 6(int) Load 16(viewID)
|
79: 6(int) Load 16(viewID)
|
||||||
80: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 76 51 77 78
|
82: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 78 53 79 80
|
||||||
Store 80 79
|
Store 82 81
|
||||||
MemoryBarrier 28 81
|
MemoryBarrier 28 83
|
||||||
ControlBarrier 82 82 81
|
ControlBarrier 84 84 83
|
||||||
83: 6(int) Load 8(iid)
|
85: 6(int) Load 8(iid)
|
||||||
84: 6(int) IAdd 83 28
|
86: 6(int) IAdd 85 28
|
||||||
85: 6(int) Load 16(viewID)
|
|
||||||
86: 6(int) Load 8(iid)
|
|
||||||
87: 6(int) Load 16(viewID)
|
87: 6(int) Load 16(viewID)
|
||||||
88: 48(ptr) AccessChain 38(gl_MeshVerticesNV) 86 41 87
|
88: 6(int) Load 8(iid)
|
||||||
89: 27(fvec4) Load 88
|
89: 6(int) Load 16(viewID)
|
||||||
90: 48(ptr) AccessChain 38(gl_MeshVerticesNV) 84 41 85
|
90: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 88 43 89
|
||||||
Store 90 89
|
91: 27(fvec4) Load 90
|
||||||
91: 6(int) Load 8(iid)
|
92: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 86 43 87
|
||||||
92: 6(int) IAdd 91 28
|
Store 92 91
|
||||||
93: 6(int) Load 16(viewID)
|
93: 6(int) Load 8(iid)
|
||||||
94: 6(int) Load 8(iid)
|
94: 6(int) IAdd 93 28
|
||||||
95: 6(int) Load 16(viewID)
|
95: 6(int) Load 16(viewID)
|
||||||
96: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 94 51 95 53
|
96: 6(int) Load 8(iid)
|
||||||
97: 26(float) Load 96
|
97: 6(int) Load 16(viewID)
|
||||||
98: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 92 51 93 53
|
98: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 96 53 97 55
|
||||||
Store 98 97
|
99: 26(float) Load 98
|
||||||
99: 6(int) Load 8(iid)
|
100: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 94 53 95 55
|
||||||
100: 6(int) IAdd 99 28
|
Store 100 99
|
||||||
101: 6(int) Load 16(viewID)
|
101: 6(int) Load 8(iid)
|
||||||
102: 6(int) Load 8(iid)
|
102: 6(int) IAdd 101 28
|
||||||
103: 6(int) Load 16(viewID)
|
103: 6(int) Load 16(viewID)
|
||||||
104: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 102 58 103 60
|
104: 6(int) Load 8(iid)
|
||||||
105: 26(float) Load 104
|
105: 6(int) Load 16(viewID)
|
||||||
106: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 100 58 101 60
|
106: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 104 60 105 62
|
||||||
Store 106 105
|
107: 26(float) Load 106
|
||||||
107: 6(int) Load 8(iid)
|
108: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 102 60 103 62
|
||||||
108: 6(int) IAdd 107 28
|
Store 108 107
|
||||||
109: 6(int) Load 16(viewID)
|
109: 6(int) Load 8(iid)
|
||||||
110: 6(int) Load 8(iid)
|
110: 6(int) IAdd 109 28
|
||||||
111: 6(int) Load 16(viewID)
|
111: 6(int) Load 16(viewID)
|
||||||
112: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 110 41 111
|
112: 6(int) Load 8(iid)
|
||||||
113: 40(int) Load 112
|
113: 6(int) Load 16(viewID)
|
||||||
114: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 108 41 109
|
114: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 112 43 113
|
||||||
Store 114 113
|
115: 42(int) Load 114
|
||||||
115: 6(int) Load 8(iid)
|
116: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 110 43 111
|
||||||
116: 6(int) IAdd 115 28
|
Store 116 115
|
||||||
117: 6(int) Load 16(viewID)
|
117: 6(int) Load 8(iid)
|
||||||
118: 6(int) Load 8(iid)
|
118: 6(int) IAdd 117 28
|
||||||
119: 6(int) Load 16(viewID)
|
119: 6(int) Load 16(viewID)
|
||||||
120: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 118 51 119 78
|
120: 6(int) Load 8(iid)
|
||||||
121: 40(int) Load 120
|
121: 6(int) Load 16(viewID)
|
||||||
122: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 116 51 117 78
|
122: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 120 53 121 80
|
||||||
Store 122 121
|
123: 42(int) Load 122
|
||||||
MemoryBarrier 28 81
|
124: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 118 53 119 80
|
||||||
ControlBarrier 82 82 81
|
Store 124 123
|
||||||
|
MemoryBarrier 28 83
|
||||||
|
ControlBarrier 84 84 83
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
201
Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
Normal file
201
Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
spv.meshShaderRedeclBuiltins.mesh
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 120
|
||||||
|
|
||||||
|
Capability ClipDistance
|
||||||
|
Capability CullDistance
|
||||||
|
Capability MultiViewport
|
||||||
|
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
|
||||||
|
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"
|
||||||
|
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 119 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: 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
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
187
Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
Normal file
187
Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
spv.meshShaderRedeclPerViewBuiltins.mesh
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 120
|
||||||
|
|
||||||
|
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 35 67
|
||||||
|
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 31 "gl_MeshPerVertexNV"
|
||||||
|
MemberName 31(gl_MeshPerVertexNV) 0 "gl_PositionPerViewNV"
|
||||||
|
MemberName 31(gl_MeshPerVertexNV) 1 "gl_ClipDistancePerViewNV"
|
||||||
|
MemberName 31(gl_MeshPerVertexNV) 2 "gl_CullDistancePerViewNV"
|
||||||
|
Name 35 "gl_MeshVerticesNV"
|
||||||
|
Name 63 "gl_MeshPerPrimitiveNV"
|
||||||
|
MemberName 63(gl_MeshPerPrimitiveNV) 0 "gl_LayerPerViewNV"
|
||||||
|
MemberName 63(gl_MeshPerPrimitiveNV) 1 "gl_ViewportMaskPerViewNV"
|
||||||
|
Name 67 "gl_MeshPrimitivesNV"
|
||||||
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||||
|
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
|
||||||
|
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
|
||||||
|
MemberDecorate 31(gl_MeshPerVertexNV) 0 PerViewNV
|
||||||
|
MemberDecorate 31(gl_MeshPerVertexNV) 0 BuiltIn PositionPerViewNV
|
||||||
|
MemberDecorate 31(gl_MeshPerVertexNV) 1 PerViewNV
|
||||||
|
MemberDecorate 31(gl_MeshPerVertexNV) 1 BuiltIn ClipDistancePerViewNV
|
||||||
|
MemberDecorate 31(gl_MeshPerVertexNV) 2 PerViewNV
|
||||||
|
MemberDecorate 31(gl_MeshPerVertexNV) 2 BuiltIn CullDistancePerViewNV
|
||||||
|
Decorate 31(gl_MeshPerVertexNV) Block
|
||||||
|
MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
||||||
|
MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 PerViewNV
|
||||||
|
MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 BuiltIn LayerPerViewNV
|
||||||
|
MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
||||||
|
MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 PerViewNV
|
||||||
|
MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 BuiltIn ViewportMaskPerViewNV
|
||||||
|
Decorate 63(gl_MeshPerPrimitiveNV) Block
|
||||||
|
Decorate 119 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: TypeArray 27(fvec4) 17
|
||||||
|
29: TypeArray 26(float) 17
|
||||||
|
30: TypeArray 29 17
|
||||||
|
31(gl_MeshPerVertexNV): TypeStruct 28 30 30
|
||||||
|
32: 6(int) Constant 81
|
||||||
|
33: TypeArray 31(gl_MeshPerVertexNV) 32
|
||||||
|
34: TypePointer Output 33
|
||||||
|
35(gl_MeshVerticesNV): 34(ptr) Variable Output
|
||||||
|
37: TypeInt 32 1
|
||||||
|
38: 37(int) Constant 0
|
||||||
|
40: 26(float) Constant 1065353216
|
||||||
|
41: 26(float) Constant 1073741824
|
||||||
|
42: 26(float) Constant 1077936128
|
||||||
|
43: 26(float) Constant 1082130432
|
||||||
|
44: 27(fvec4) ConstantComposite 40 41 42 43
|
||||||
|
45: TypePointer Output 27(fvec4)
|
||||||
|
48: 37(int) Constant 1
|
||||||
|
50: 37(int) Constant 2
|
||||||
|
51: 26(float) Constant 1084227584
|
||||||
|
52: TypePointer Output 26(float)
|
||||||
|
56: 37(int) Constant 3
|
||||||
|
57: 26(float) Constant 1086324736
|
||||||
|
59: TypeArray 37(int) 17
|
||||||
|
60: 6(int) Constant 1
|
||||||
|
61: TypeArray 37(int) 60
|
||||||
|
62: TypeArray 61 17
|
||||||
|
63(gl_MeshPerPrimitiveNV): TypeStruct 59 62
|
||||||
|
64: 6(int) Constant 32
|
||||||
|
65: TypeArray 63(gl_MeshPerPrimitiveNV) 64
|
||||||
|
66: TypePointer Output 65
|
||||||
|
67(gl_MeshPrimitivesNV): 66(ptr) Variable Output
|
||||||
|
70: 37(int) Constant 7
|
||||||
|
71: TypePointer Output 37(int)
|
||||||
|
75: 37(int) Constant 8
|
||||||
|
77: 6(int) Constant 264
|
||||||
|
78: 6(int) Constant 2
|
||||||
|
119: 9(ivec3) ConstantComposite 64 60 60
|
||||||
|
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
|
||||||
|
36: 6(int) Load 8(iid)
|
||||||
|
39: 6(int) Load 16(viewID)
|
||||||
|
46: 45(ptr) AccessChain 35(gl_MeshVerticesNV) 36 38 39
|
||||||
|
Store 46 44
|
||||||
|
47: 6(int) Load 8(iid)
|
||||||
|
49: 6(int) Load 16(viewID)
|
||||||
|
53: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 47 48 49 50
|
||||||
|
Store 53 51
|
||||||
|
54: 6(int) Load 8(iid)
|
||||||
|
55: 6(int) Load 16(viewID)
|
||||||
|
58: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 54 50 55 56
|
||||||
|
Store 58 57
|
||||||
|
68: 6(int) Load 8(iid)
|
||||||
|
69: 6(int) Load 16(viewID)
|
||||||
|
72: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 68 38 69
|
||||||
|
Store 72 70
|
||||||
|
73: 6(int) Load 8(iid)
|
||||||
|
74: 6(int) Load 16(viewID)
|
||||||
|
76: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 73 48 74 38
|
||||||
|
Store 76 75
|
||||||
|
MemoryBarrier 60 77
|
||||||
|
ControlBarrier 78 78 77
|
||||||
|
79: 6(int) Load 8(iid)
|
||||||
|
80: 6(int) IAdd 79 60
|
||||||
|
81: 6(int) Load 16(viewID)
|
||||||
|
82: 6(int) Load 8(iid)
|
||||||
|
83: 6(int) Load 16(viewID)
|
||||||
|
84: 45(ptr) AccessChain 35(gl_MeshVerticesNV) 82 38 83
|
||||||
|
85: 27(fvec4) Load 84
|
||||||
|
86: 45(ptr) AccessChain 35(gl_MeshVerticesNV) 80 38 81
|
||||||
|
Store 86 85
|
||||||
|
87: 6(int) Load 8(iid)
|
||||||
|
88: 6(int) IAdd 87 60
|
||||||
|
89: 6(int) Load 16(viewID)
|
||||||
|
90: 6(int) Load 8(iid)
|
||||||
|
91: 6(int) Load 16(viewID)
|
||||||
|
92: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 90 48 91 50
|
||||||
|
93: 26(float) Load 92
|
||||||
|
94: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 88 48 89 50
|
||||||
|
Store 94 93
|
||||||
|
95: 6(int) Load 8(iid)
|
||||||
|
96: 6(int) IAdd 95 60
|
||||||
|
97: 6(int) Load 16(viewID)
|
||||||
|
98: 6(int) Load 8(iid)
|
||||||
|
99: 6(int) Load 16(viewID)
|
||||||
|
100: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 98 50 99 56
|
||||||
|
101: 26(float) Load 100
|
||||||
|
102: 52(ptr) AccessChain 35(gl_MeshVerticesNV) 96 50 97 56
|
||||||
|
Store 102 101
|
||||||
|
103: 6(int) Load 8(iid)
|
||||||
|
104: 6(int) IAdd 103 60
|
||||||
|
105: 6(int) Load 16(viewID)
|
||||||
|
106: 6(int) Load 8(iid)
|
||||||
|
107: 6(int) Load 16(viewID)
|
||||||
|
108: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 106 38 107
|
||||||
|
109: 37(int) Load 108
|
||||||
|
110: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 104 38 105
|
||||||
|
Store 110 109
|
||||||
|
111: 6(int) Load 8(iid)
|
||||||
|
112: 6(int) IAdd 111 60
|
||||||
|
113: 6(int) Load 16(viewID)
|
||||||
|
114: 6(int) Load 8(iid)
|
||||||
|
115: 6(int) Load 16(viewID)
|
||||||
|
116: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 114 48 115 38
|
||||||
|
117: 37(int) Load 116
|
||||||
|
118: 71(ptr) AccessChain 67(gl_MeshPrimitivesNV) 112 48 113 38
|
||||||
|
Store 118 117
|
||||||
|
MemoryBarrier 60 77
|
||||||
|
ControlBarrier 78 78 77
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
66
Test/spv.meshShaderRedeclBuiltins.mesh
Normal file
66
Test/spv.meshShaderRedeclBuiltins.mesh
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#version 460
|
||||||
|
|
||||||
|
#define MAX_VER 81
|
||||||
|
#define MAX_PRIM 32
|
||||||
|
|
||||||
|
#define BARRIER() \
|
||||||
|
memoryBarrierShared(); \
|
||||||
|
barrier();
|
||||||
|
|
||||||
|
#extension GL_NV_mesh_shader : enable
|
||||||
|
|
||||||
|
layout(local_size_x = 32) in;
|
||||||
|
|
||||||
|
layout(max_vertices=MAX_VER) out;
|
||||||
|
layout(max_primitives=MAX_PRIM) out;
|
||||||
|
layout(triangles) out;
|
||||||
|
|
||||||
|
// test use of redeclared single-view builtins in mesh shaders:
|
||||||
|
|
||||||
|
out gl_MeshPerVertexNV {
|
||||||
|
vec4 gl_Position;
|
||||||
|
float gl_PointSize;
|
||||||
|
float gl_ClipDistance[4];
|
||||||
|
float gl_CullDistance[4];
|
||||||
|
} gl_MeshVerticesNV[];
|
||||||
|
|
||||||
|
perprimitiveNV out gl_MeshPerPrimitiveNV {
|
||||||
|
int gl_PrimitiveID;
|
||||||
|
int gl_Layer;
|
||||||
|
int gl_ViewportIndex;
|
||||||
|
int gl_ViewportMask[];
|
||||||
|
} gl_MeshPrimitivesNV[];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint iid = gl_LocalInvocationID.x;
|
||||||
|
uint gid = gl_WorkGroupID.x;
|
||||||
|
|
||||||
|
gl_MeshVerticesNV[iid].gl_Position = vec4(1.0);
|
||||||
|
gl_MeshVerticesNV[iid].gl_PointSize = 2.0;
|
||||||
|
gl_MeshVerticesNV[iid].gl_ClipDistance[3] = 3.0;
|
||||||
|
gl_MeshVerticesNV[iid].gl_CullDistance[2] = 4.0;
|
||||||
|
|
||||||
|
BARRIER();
|
||||||
|
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_Position = gl_MeshVerticesNV[iid].gl_Position;
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_PointSize = gl_MeshVerticesNV[iid].gl_PointSize;
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_ClipDistance[3] = gl_MeshVerticesNV[iid].gl_ClipDistance[3];
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_CullDistance[2] = gl_MeshVerticesNV[iid].gl_CullDistance[2];
|
||||||
|
|
||||||
|
BARRIER();
|
||||||
|
|
||||||
|
gl_MeshPrimitivesNV[iid].gl_PrimitiveID = 6;
|
||||||
|
gl_MeshPrimitivesNV[iid].gl_Layer = 7;
|
||||||
|
gl_MeshPrimitivesNV[iid].gl_ViewportIndex = 8;
|
||||||
|
gl_MeshPrimitivesNV[iid].gl_ViewportMask[0] = 9;
|
||||||
|
|
||||||
|
BARRIER();
|
||||||
|
|
||||||
|
gl_MeshPrimitivesNV[iid+1].gl_PrimitiveID = gl_MeshPrimitivesNV[iid].gl_PrimitiveID;
|
||||||
|
gl_MeshPrimitivesNV[iid+1].gl_Layer = gl_MeshPrimitivesNV[iid].gl_Layer;
|
||||||
|
gl_MeshPrimitivesNV[iid+1].gl_ViewportIndex = gl_MeshPrimitivesNV[iid].gl_ViewportIndex;
|
||||||
|
gl_MeshPrimitivesNV[iid+1].gl_ViewportMask[0] = gl_MeshPrimitivesNV[iid].gl_ViewportMask[0];
|
||||||
|
|
||||||
|
BARRIER();
|
||||||
|
}
|
53
Test/spv.meshShaderRedeclPerViewBuiltins.mesh
Normal file
53
Test/spv.meshShaderRedeclPerViewBuiltins.mesh
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
#define MAX_VER 81
|
||||||
|
#define MAX_PRIM 32
|
||||||
|
#define MAX_VIEWS gl_MaxMeshViewCountNV
|
||||||
|
|
||||||
|
#define BARRIER() \
|
||||||
|
memoryBarrierShared(); \
|
||||||
|
barrier();
|
||||||
|
|
||||||
|
#extension GL_NV_mesh_shader : enable
|
||||||
|
|
||||||
|
layout(local_size_x = 32) in;
|
||||||
|
|
||||||
|
layout(max_vertices=MAX_VER) out;
|
||||||
|
layout(max_primitives=MAX_PRIM) out;
|
||||||
|
layout(triangles) out;
|
||||||
|
|
||||||
|
// test use of redeclared per-view builtin attributes
|
||||||
|
|
||||||
|
out gl_MeshPerVertexNV {
|
||||||
|
perviewNV vec4 gl_PositionPerViewNV[MAX_VIEWS]; // explicitly sized view dim
|
||||||
|
perviewNV float gl_ClipDistancePerViewNV[MAX_VIEWS][4]; // explicitly sized view dim
|
||||||
|
perviewNV float gl_CullDistancePerViewNV[MAX_VIEWS][4]; // explicitly sized view dim
|
||||||
|
} gl_MeshVerticesNV[];
|
||||||
|
|
||||||
|
perprimitiveNV out gl_MeshPerPrimitiveNV {
|
||||||
|
perviewNV int gl_LayerPerViewNV[]; // implicitly sized view dim
|
||||||
|
perviewNV int gl_ViewportMaskPerViewNV[][1]; // implicitly sized view dim
|
||||||
|
} gl_MeshPrimitivesNV[];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint iid = gl_LocalInvocationID.x;
|
||||||
|
uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS];
|
||||||
|
|
||||||
|
gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID] = vec4(1.0, 2.0, 3.0, 4.0);
|
||||||
|
gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2] = 5.0;
|
||||||
|
gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3] = 6.0;
|
||||||
|
gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID] = 7;
|
||||||
|
gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0] = 8;
|
||||||
|
|
||||||
|
BARRIER();
|
||||||
|
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_PositionPerViewNV[viewID] = gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID];
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_ClipDistancePerViewNV[viewID][2] = gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2];
|
||||||
|
gl_MeshVerticesNV[iid+1].gl_CullDistancePerViewNV[viewID][3] = gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3];
|
||||||
|
gl_MeshPrimitivesNV[iid+1].gl_LayerPerViewNV[viewID] = gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID];
|
||||||
|
gl_MeshPrimitivesNV[iid+1].gl_ViewportMaskPerViewNV[viewID][0] = gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0];
|
||||||
|
|
||||||
|
BARRIER();
|
||||||
|
}
|
||||||
|
|
@ -1644,6 +1644,11 @@ public:
|
|||||||
{
|
{
|
||||||
if (isUnsizedArray() && !(skipNonvariablyIndexed || isArrayVariablyIndexed()))
|
if (isUnsizedArray() && !(skipNonvariablyIndexed || isArrayVariablyIndexed()))
|
||||||
changeOuterArraySize(getImplicitArraySize());
|
changeOuterArraySize(getImplicitArraySize());
|
||||||
|
#ifdef NV_EXTENSIONS
|
||||||
|
// For multi-dim per-view arrays, set unsized inner dimension size to 1
|
||||||
|
if (qualifier.isPerView() && arraySizes && arraySizes->isInnerUnsized())
|
||||||
|
arraySizes->clearInnerUnsized();
|
||||||
|
#endif
|
||||||
if (isStruct() && structure->size() > 0) {
|
if (isStruct() && structure->size() > 0) {
|
||||||
int lastMember = (int)structure->size() - 1;
|
int lastMember = (int)structure->size() - 1;
|
||||||
for (int i = 0; i < lastMember; ++i)
|
for (int i = 0; i < lastMember; ++i)
|
||||||
|
@ -5296,8 +5296,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
"float gl_ClipDistance[];"
|
"float gl_ClipDistance[];"
|
||||||
"float gl_CullDistance[];"
|
"float gl_CullDistance[];"
|
||||||
"perviewNV vec4 gl_PositionPerViewNV[];"
|
"perviewNV vec4 gl_PositionPerViewNV[];"
|
||||||
"perviewNV float gl_ClipDistancePerViewNV[][8];"
|
"perviewNV float gl_ClipDistancePerViewNV[][];"
|
||||||
"perviewNV float gl_CullDistancePerViewNV[][8];"
|
"perviewNV float gl_CullDistancePerViewNV[][];"
|
||||||
"} gl_MeshVerticesNV[];"
|
"} gl_MeshVerticesNV[];"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -5309,7 +5309,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
"int gl_ViewportIndex;"
|
"int gl_ViewportIndex;"
|
||||||
"int gl_ViewportMask[];"
|
"int gl_ViewportMask[];"
|
||||||
"perviewNV int gl_LayerPerViewNV[];"
|
"perviewNV int gl_LayerPerViewNV[];"
|
||||||
"perviewNV int gl_ViewportMaskPerViewNV[][1];"
|
"perviewNV int gl_ViewportMaskPerViewNV[][];"
|
||||||
"} gl_MeshPrimitivesNV[];"
|
"} gl_MeshPrimitivesNV[];"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -400,9 +400,21 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
|
|||||||
handleIoResizeArrayAccess(loc, base);
|
handleIoResizeArrayAccess(loc, base);
|
||||||
|
|
||||||
if (index->getQualifier().isFrontEndConstant()) {
|
if (index->getQualifier().isFrontEndConstant()) {
|
||||||
if (base->getType().isUnsizedArray())
|
if (base->getType().isUnsizedArray()) {
|
||||||
base->getWritableType().updateImplicitArraySize(indexValue + 1);
|
base->getWritableType().updateImplicitArraySize(indexValue + 1);
|
||||||
else
|
#ifdef NV_EXTENSIONS
|
||||||
|
// For 2D per-view builtin arrays, update the inner dimension size in parent type
|
||||||
|
if (base->getQualifier().isPerView() && base->getQualifier().builtIn != EbvNone) {
|
||||||
|
TIntermBinary* binaryNode = base->getAsBinaryNode();
|
||||||
|
if (binaryNode) {
|
||||||
|
TType& leftType = binaryNode->getLeft()->getWritableType();
|
||||||
|
TArraySizes& arraySizes = *leftType.getArraySizes();
|
||||||
|
assert(arraySizes.getNumDims() == 2);
|
||||||
|
arraySizes.setDimSize(1, std::max(arraySizes.getDimSize(1), indexValue + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} else
|
||||||
checkIndex(loc, base->getType(), indexValue);
|
checkIndex(loc, base->getType(), indexValue);
|
||||||
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
|
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
|
||||||
} else {
|
} else {
|
||||||
@ -813,6 +825,8 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm
|
|||||||
TIntermTyped* index = intermediate.addConstantUnion(member, loc);
|
TIntermTyped* index = intermediate.addConstantUnion(member, loc);
|
||||||
result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc);
|
result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc);
|
||||||
result->setType(*(*fields)[member].type);
|
result->setType(*(*fields)[member].type);
|
||||||
|
if ((*fields)[member].type->getQualifier().isIo())
|
||||||
|
intermediate.addIoAccessed(field);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
error(loc, "no such field in structure", field.c_str(), "");
|
error(loc, "no such field in structure", field.c_str(), "");
|
||||||
@ -4059,10 +4073,31 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
|
|||||||
error(memberLoc, "cannot redeclare block member with a different type", member->type->getFieldName().c_str(), "");
|
error(memberLoc, "cannot redeclare block member with a different type", member->type->getFieldName().c_str(), "");
|
||||||
if (oldType.isArray() != newType.isArray())
|
if (oldType.isArray() != newType.isArray())
|
||||||
error(memberLoc, "cannot change arrayness of redeclared block member", member->type->getFieldName().c_str(), "");
|
error(memberLoc, "cannot change arrayness of redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
else if (! oldType.sameArrayness(newType) && oldType.isSizedArray())
|
else if (! oldType.getQualifier().isPerView() && ! oldType.sameArrayness(newType) && oldType.isSizedArray())
|
||||||
error(memberLoc, "cannot change array size of redeclared block member", member->type->getFieldName().c_str(), "");
|
error(memberLoc, "cannot change array size of redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
else if (newType.isArray())
|
else if (! oldType.getQualifier().isPerView() && newType.isArray())
|
||||||
arrayLimitCheck(loc, member->type->getFieldName(), newType.getOuterArraySize());
|
arrayLimitCheck(loc, member->type->getFieldName(), newType.getOuterArraySize());
|
||||||
|
#ifdef NV_EXTENSIONS
|
||||||
|
if (oldType.getQualifier().isPerView() && ! newType.getQualifier().isPerView())
|
||||||
|
error(memberLoc, "missing perviewNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
|
else if (! oldType.getQualifier().isPerView() && newType.getQualifier().isPerView())
|
||||||
|
error(memberLoc, "cannot add perviewNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
|
else if (newType.getQualifier().isPerView()) {
|
||||||
|
if (oldType.getArraySizes()->getNumDims() != newType.getArraySizes()->getNumDims())
|
||||||
|
error(memberLoc, "cannot change arrayness of redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
|
else if (! newType.isUnsizedArray() && newType.getOuterArraySize() != resources.maxMeshViewCountNV)
|
||||||
|
error(loc, "mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized", "[]", "");
|
||||||
|
else if (newType.getArraySizes()->getNumDims() == 2) {
|
||||||
|
int innerDimSize = newType.getArraySizes()->getDimSize(1);
|
||||||
|
arrayLimitCheck(memberLoc, member->type->getFieldName(), innerDimSize);
|
||||||
|
oldType.getArraySizes()->setDimSize(1, innerDimSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (oldType.getQualifier().isPerPrimitive() && ! newType.getQualifier().isPerPrimitive())
|
||||||
|
error(memberLoc, "missing perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
|
else if (! oldType.getQualifier().isPerPrimitive() && newType.getQualifier().isPerPrimitive())
|
||||||
|
error(memberLoc, "cannot add perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
|
#endif
|
||||||
if (newType.getQualifier().isMemory())
|
if (newType.getQualifier().isMemory())
|
||||||
error(memberLoc, "cannot add memory qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
|
error(memberLoc, "cannot add memory qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
|
||||||
if (newType.getQualifier().hasNonXfbLayout())
|
if (newType.getQualifier().hasNonXfbLayout())
|
||||||
@ -4421,6 +4456,12 @@ void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identi
|
|||||||
limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistance array size");
|
limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistance array size");
|
||||||
else if (identifier.compare("gl_CullDistance") == 0)
|
else if (identifier.compare("gl_CullDistance") == 0)
|
||||||
limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistance array size");
|
limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistance array size");
|
||||||
|
#ifdef NV_EXTENSIONS
|
||||||
|
else if (identifier.compare("gl_ClipDistancePerViewNV") == 0)
|
||||||
|
limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistancePerViewNV array size");
|
||||||
|
else if (identifier.compare("gl_CullDistancePerViewNV") == 0)
|
||||||
|
limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistancePerViewNV array size");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// See if the provided value is less than or equal to the symbol indicated by limit,
|
// See if the provided value is less than or equal to the symbol indicated by limit,
|
||||||
|
@ -715,6 +715,17 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
|
|||||||
error(infoSink, "Only one shaderRecordNVX buffer block is allowed per stage");
|
error(infoSink, "Only one shaderRecordNVX buffer block is allowed per stage");
|
||||||
break;
|
break;
|
||||||
case EShLangMeshNV:
|
case EShLangMeshNV:
|
||||||
|
// NV_mesh_shader doesn't allow use of both single-view and per-view builtins.
|
||||||
|
if (inIoAccessed("gl_Position") && inIoAccessed("gl_PositionPerViewNV"))
|
||||||
|
error(infoSink, "Can only use one of gl_Position or gl_PositionPerViewNV");
|
||||||
|
if (inIoAccessed("gl_ClipDistance") && inIoAccessed("gl_ClipDistancePerViewNV"))
|
||||||
|
error(infoSink, "Can only use one of gl_ClipDistance or gl_ClipDistancePerViewNV");
|
||||||
|
if (inIoAccessed("gl_CullDistance") && inIoAccessed("gl_CullDistancePerViewNV"))
|
||||||
|
error(infoSink, "Can only use one of gl_CullDistance or gl_CullDistancePerViewNV");
|
||||||
|
if (inIoAccessed("gl_Layer") && inIoAccessed("gl_LayerPerViewNV"))
|
||||||
|
error(infoSink, "Can only use one of gl_Layer or gl_LayerPerViewNV");
|
||||||
|
if (inIoAccessed("gl_ViewportMask") && inIoAccessed("gl_ViewportMaskPerViewNV"))
|
||||||
|
error(infoSink, "Can only use one of gl_ViewportMask or gl_ViewportMaskPerViewNV");
|
||||||
if (outputPrimitive == ElgNone)
|
if (outputPrimitive == ElgNone)
|
||||||
error(infoSink, "At least one shader must specify an output layout primitive");
|
error(infoSink, "At least one shader must specify an output layout primitive");
|
||||||
if (vertices == TQualifier::layoutNotSet)
|
if (vertices == TQualifier::layoutNotSet)
|
||||||
|
@ -524,6 +524,9 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
"spv.meshShaderPerViewUserDefined.mesh",
|
"spv.meshShaderPerViewUserDefined.mesh",
|
||||||
"spv.meshShaderSharedMem.mesh",
|
"spv.meshShaderSharedMem.mesh",
|
||||||
"spv.meshShaderTaskMem.mesh",
|
"spv.meshShaderTaskMem.mesh",
|
||||||
|
"spv.320.meshShaderUserDefined.mesh",
|
||||||
|
"spv.meshShaderRedeclBuiltins.mesh",
|
||||||
|
"spv.meshShaderRedeclPerViewBuiltins.mesh",
|
||||||
"spv.meshTaskShader.task",
|
"spv.meshTaskShader.task",
|
||||||
})),
|
})),
|
||||||
FileNameAsCustomTestSuffix
|
FileNameAsCustomTestSuffix
|
||||||
|
Loading…
x
Reference in New Issue
Block a user