Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
c374030e
Unverified
Commit
c374030e
authored
Oct 04, 2018
by
John Kessenich
Committed by
GitHub
Oct 04, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1523 from sparmarNV/fix-SPV_NV_mesh_shader
Allow redeclaration of builtin interface blocks in mesh shader
parents
732623e1
035cbbe3
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
875 additions
and
305 deletions
+875
-305
StandAlone.cpp
StandAlone/StandAlone.cpp
+3
-1
spv.320.meshShaderUserDefined.mesh.out
Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
+1
-1
spv.meshShaderBuiltins.mesh.out
Test/baseResults/spv.meshShaderBuiltins.mesh.out
+149
-150
spv.meshShaderPerViewBuiltins.mesh.out
Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
+148
-146
spv.meshShaderRedeclBuiltins.mesh.out
Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
+201
-0
spv.meshShaderRedeclPerViewBuiltins.mesh.out
.../baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
+187
-0
spv.meshShaderRedeclBuiltins.mesh
Test/spv.meshShaderRedeclBuiltins.mesh
+66
-0
spv.meshShaderRedeclPerViewBuiltins.mesh
Test/spv.meshShaderRedeclPerViewBuiltins.mesh
+53
-0
Types.h
glslang/Include/Types.h
+5
-0
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+3
-3
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+45
-4
linkValidate.cpp
glslang/MachineIndependent/linkValidate.cpp
+11
-0
Spv.FromFile.cpp
gtests/Spv.FromFile.cpp
+3
-0
No files found.
StandAlone/StandAlone.cpp
View file @
c374030e
...
@@ -1257,6 +1257,8 @@ int C_DECL main(int argc, char* argv[])
...
@@ -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()
...
@@ -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
"
...
...
Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
View file @
c374030e
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
...
...
Test/baseResults/spv.meshShaderBuiltins.mesh.out
View file @
c374030e
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 14
7
// Id's are bound by 14
6
Capability ClipDistance
Capability ClipDistance
Capability CullDistance
Capability CullDistance
...
@@ -14,7 +14,7 @@ spv.meshShaderBuiltins.mesh
...
@@ -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 8
9 129 140 144
EntryPoint MeshNV 4 "main" 11 17 34 8
8 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
...
@@ -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 8
5
"gl_MeshPerPrimitiveNV"
Name 8
4
"gl_MeshPerPrimitiveNV"
MemberName 8
5
(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
MemberName 8
4
(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
MemberName 8
5
(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
MemberName 8
4
(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
MemberName 8
5
(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
MemberName 8
4
(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
MemberName 8
5
(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
MemberName 8
4
(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
MemberName 8
5
(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
MemberName 8
4
(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
MemberName 8
5
(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
MemberName 8
4
(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
Name 8
9
"gl_MeshPrimitivesNV"
Name 8
8
"gl_MeshPrimitivesNV"
Name 12
9
"gl_PrimitiveIndicesNV"
Name 12
8
"gl_PrimitiveIndicesNV"
Name 1
40
"gl_DrawID"
Name 1
39
"gl_DrawID"
Name 14
4
"gl_PrimitiveCountNV"
Name 14
3
"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
...
@@ -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 8
5
(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 4 PerViewNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 4 PerViewNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 5 PerViewNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 5 PerViewNV
MemberDecorate 8
5
(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
MemberDecorate 8
4
(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
Decorate 8
5
(gl_MeshPerPrimitiveNV) Block
Decorate 8
4
(gl_MeshPerPrimitiveNV) Block
Decorate 12
9
(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
Decorate 12
8
(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
Decorate 1
40
(gl_DrawID) BuiltIn DrawIndex
Decorate 1
39
(gl_DrawID) BuiltIn DrawIndex
Decorate 14
4
(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
Decorate 14
3
(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
Decorate 14
6
BuiltIn WorkgroupSize
Decorate 14
5
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
...
@@ -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
...
@@ -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
...
@@ -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
Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
View file @
c374030e
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 12
4
// Id's are bound by 12
6
Capability MultiViewport
Capability MultiViewport
Capability PerViewAttributesNV
Capability PerViewAttributesNV
...
@@ -10,7 +10,7 @@ spv.meshShaderPerViewBuiltins.mesh
...
@@ -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
...
@@ -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 3
4
"gl_MeshPerVertexNV"
Name 3
6
"gl_MeshPerVertexNV"
MemberName 3
4
(gl_MeshPerVertexNV) 0 "gl_Position"
MemberName 3
6
(gl_MeshPerVertexNV) 0 "gl_Position"
MemberName 3
4
(gl_MeshPerVertexNV) 1 "gl_PointSize"
MemberName 3
6
(gl_MeshPerVertexNV) 1 "gl_PointSize"
MemberName 3
4
(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
MemberName 3
6
(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
MemberName 3
4
(gl_MeshPerVertexNV) 3 "gl_CullDistance"
MemberName 3
6
(gl_MeshPerVertexNV) 3 "gl_CullDistance"
MemberName 3
4
(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
MemberName 3
6
(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
MemberName 3
4
(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
MemberName 3
6
(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
MemberName 3
4
(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
MemberName 3
6
(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
Name
38
"gl_MeshVerticesNV"
Name
40
"gl_MeshVerticesNV"
Name 6
6
"gl_MeshPerPrimitiveNV"
Name 6
8
"gl_MeshPerPrimitiveNV"
MemberName 6
6
(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
MemberName 6
8
(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
MemberName 6
6
(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
MemberName 6
8
(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
MemberName 6
6
(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
MemberName 6
8
(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
MemberName 6
6
(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
MemberName 6
8
(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
MemberName 6
6
(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
MemberName 6
8
(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
MemberName 6
6
(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
MemberName 6
8
(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
Name 7
0
"gl_MeshPrimitivesNV"
Name 7
2
"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 3
4
(gl_MeshPerVertexNV) 0 BuiltIn Position
MemberDecorate 3
6
(gl_MeshPerVertexNV) 0 BuiltIn Position
MemberDecorate 3
4
(gl_MeshPerVertexNV) 1 BuiltIn PointSize
MemberDecorate 3
6
(gl_MeshPerVertexNV) 1 BuiltIn PointSize
MemberDecorate 3
4
(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
MemberDecorate 3
6
(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
MemberDecorate 3
4
(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
MemberDecorate 3
6
(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
MemberDecorate 3
4
(gl_MeshPerVertexNV) 4 PerViewNV
MemberDecorate 3
6
(gl_MeshPerVertexNV) 4 PerViewNV
MemberDecorate 3
4
(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
MemberDecorate 3
6
(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
MemberDecorate 3
4
(gl_MeshPerVertexNV) 5 PerViewNV
MemberDecorate 3
6
(gl_MeshPerVertexNV) 5 PerViewNV
MemberDecorate 3
4
(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
MemberDecorate 3
6
(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
MemberDecorate 3
4
(gl_MeshPerVertexNV) 6 PerViewNV
MemberDecorate 3
6
(gl_MeshPerVertexNV) 6 PerViewNV
MemberDecorate 3
4
(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
MemberDecorate 3
6
(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
Decorate 3
4
(gl_MeshPerVertexNV) Block
Decorate 3
6
(gl_MeshPerVertexNV) Block
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 4 PerViewNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 4 PerViewNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 5 PerViewNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 5 PerViewNV
MemberDecorate 6
6
(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
MemberDecorate 6
8
(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
Decorate 6
6
(gl_MeshPerPrimitiveNV) Block
Decorate 6
8
(gl_MeshPerPrimitiveNV) Block
Decorate 12
3
BuiltIn WorkgroupSize
Decorate 12
5
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
...
@@ -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
...
@@ -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
9
1: 6(int) Load 8(iid)
9
2: 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: 5
5(ptr) AccessChain 38(gl_MeshVerticesNV) 92 51 93 53
98: 5
7(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: 5
5(ptr) AccessChain 38(gl_MeshVerticesNV) 100 58 101 60
106: 5
7(ptr) AccessChain 40(gl_MeshVerticesNV) 104 60 105 62
Store 106 105
107: 26(float) Load 106
10
7: 6(int) Load 8(iid)
10
8: 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: 7
4(ptr) AccessChain 70(gl_MeshPrimitivesNV) 108 41 109
114: 7
6(ptr) AccessChain 72(gl_MeshPrimitivesNV) 112 43 113
Store 114 113
115: 42(int) Load 114
11
5: 6(int) Load 8(iid)
11
6: 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
Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
0 → 100644
View file @
c374030e
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
Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
0 → 100644
View file @
c374030e
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
Test/spv.meshShaderRedeclBuiltins.mesh
0 → 100644
View file @
c374030e
#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();
}
Test/spv.meshShaderRedeclPerViewBuiltins.mesh
0 → 100644
View file @
c374030e
#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();
}
glslang/Include/Types.h
View file @
c374030e
...
@@ -1644,6 +1644,11 @@ public:
...
@@ -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
)
...
...
glslang/MachineIndependent/Initialize.cpp
View file @
c374030e
...
@@ -5296,8 +5296,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -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
...
@@ -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[];"
);
);
...
...
glslang/MachineIndependent/ParseHelper.cpp
View file @
c374030e
...
@@ -400,9 +400,21 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
...
@@ -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
...
@@ -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
...
@@ -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
...
@@ -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,
...
...
glslang/MachineIndependent/linkValidate.cpp
View file @
c374030e
...
@@ -715,6 +715,17 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
...
@@ -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
)
...
...
gtests/Spv.FromFile.cpp
View file @
c374030e
...
@@ -524,6 +524,9 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment