Add-support-for-SPV_NV_mesh_shader

This commit is contained in:
Chao Chen
2018-09-19 11:41:59 -07:00
parent 3a1379667d
commit 3c3669904c
41 changed files with 6976 additions and 4237 deletions

View File

@@ -0,0 +1,259 @@
spv.meshShaderBuiltins.mesh
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 147
Capability ClipDistance
Capability CullDistance
Capability MultiViewport
Capability DrawParameters
Capability ShaderViewportMaskNV
Capability MeshShadingNV
Extension "SPV_KHR_shader_draw_parameters"
Extension "SPV_NV_mesh_shader"
Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshNV 4 "main" 11 17 34 89 129 140 144
ExecutionMode 4 LocalSize 32 1 1
ExecutionMode 4 OutputVertices 81
ExecutionMode 4 OutputPrimitivesNV 32
ExecutionMode 4 OutputTrianglesNV
Source GLSL 460
SourceExtension "GL_NV_mesh_shader"
Name 4 "main"
Name 8 "iid"
Name 11 "gl_LocalInvocationID"
Name 16 "gid"
Name 17 "gl_WorkGroupID"
Name 30 "gl_MeshPerVertexNV"
MemberName 30(gl_MeshPerVertexNV) 0 "gl_Position"
MemberName 30(gl_MeshPerVertexNV) 1 "gl_PointSize"
MemberName 30(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
MemberName 30(gl_MeshPerVertexNV) 3 "gl_CullDistance"
MemberName 30(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
MemberName 30(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
MemberName 30(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
Name 34 "gl_MeshVerticesNV"
Name 85 "gl_MeshPerPrimitiveNV"
MemberName 85(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
MemberName 85(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
MemberName 85(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
MemberName 85(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
MemberName 85(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
MemberName 85(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
Name 89 "gl_MeshPrimitivesNV"
Name 129 "gl_PrimitiveIndicesNV"
Name 140 "gl_DrawID"
Name 144 "gl_PrimitiveCountNV"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position
MemberDecorate 30(gl_MeshPerVertexNV) 1 BuiltIn PointSize
MemberDecorate 30(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
MemberDecorate 30(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
MemberDecorate 30(gl_MeshPerVertexNV) 4 PerViewNV
MemberDecorate 30(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
MemberDecorate 30(gl_MeshPerVertexNV) 5 PerViewNV
MemberDecorate 30(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV
MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
Decorate 30(gl_MeshPerVertexNV) Block
MemberDecorate 85(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
MemberDecorate 85(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
MemberDecorate 85(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
MemberDecorate 85(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 PerViewNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 PerViewNV
MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
Decorate 85(gl_MeshPerPrimitiveNV) Block
Decorate 129(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV
Decorate 140(gl_DrawID) BuiltIn DrawIndex
Decorate 144(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV
Decorate 146 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypeVector 6(int) 3
10: TypePointer Input 9(ivec3)
11(gl_LocalInvocationID): 10(ptr) Variable Input
12: 6(int) Constant 0
13: TypePointer Input 6(int)
17(gl_WorkGroupID): 10(ptr) Variable Input
20: TypeFloat 32
21: TypeVector 20(float) 4
22: 6(int) Constant 4
23: TypeArray 20(float) 22
24: 6(int) Constant 3
25: TypeArray 20(float) 24
26: TypeArray 21(fvec4) 22
27: 6(int) Constant 8
28: TypeArray 20(float) 27
29: TypeArray 28 22
30(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 25 26 29 29
31: 6(int) Constant 81
32: TypeArray 30(gl_MeshPerVertexNV) 31
33: TypePointer Output 32
34(gl_MeshVerticesNV): 33(ptr) Variable Output
36: TypeInt 32 1
37: 36(int) Constant 0
38: 20(float) Constant 1065353216
39: 21(fvec4) ConstantComposite 38 38 38 38
40: TypePointer Output 21(fvec4)
43: 36(int) Constant 1
44: 20(float) Constant 1073741824
45: TypePointer Output 20(float)
48: 36(int) Constant 2
49: 36(int) Constant 3
50: 20(float) Constant 1077936128
53: 20(float) Constant 1082130432
55: 6(int) Constant 1
56: 6(int) Constant 264
57: 6(int) Constant 2
82: TypeArray 36(int) 55
83: TypeArray 36(int) 22
84: TypeArray 82 22
85(gl_MeshPerPrimitiveNV): TypeStruct 36(int) 36(int) 36(int) 82 83 84
86: 6(int) Constant 32
87: TypeArray 85(gl_MeshPerPrimitiveNV) 86
88: TypePointer Output 87
89(gl_MeshPrimitivesNV): 88(ptr) Variable Output
91: 36(int) Constant 6
92: TypePointer Output 36(int)
95: 36(int) Constant 7
98: 36(int) Constant 8
101: 36(int) Constant 9
127: TypeArray 6(int) 31
128: TypePointer Output 127
129(gl_PrimitiveIndicesNV): 128(ptr) Variable Output
130: 6(int) Constant 257
131: TypePointer Output 6(int)
139: TypePointer Input 36(int)
140(gl_DrawID): 139(ptr) Variable Input
143: 6(int) Constant 16909060
144(gl_PrimitiveCountNV): 131(ptr) Variable Output
145: 6(int) Constant 96
146: 9(ivec3) ConstantComposite 86 55 55
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
16(gid): 7(ptr) Variable Function
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
15: 6(int) Load 14
Store 8(iid) 15
18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
19: 6(int) Load 18
Store 16(gid) 19
35: 6(int) Load 8(iid)
41: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 35 37
Store 41 39
42: 6(int) Load 8(iid)
46: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 42 43
Store 46 44
47: 6(int) Load 8(iid)
51: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 47 48 49
Store 51 50
52: 6(int) Load 8(iid)
54: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 52 49 48
Store 54 53
MemoryBarrier 55 56
ControlBarrier 57 57 56
58: 6(int) Load 8(iid)
59: 6(int) IAdd 58 55
60: 6(int) Load 8(iid)
61: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 60 37
62: 21(fvec4) Load 61
63: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 59 37
Store 63 62
64: 6(int) Load 8(iid)
65: 6(int) IAdd 64 55
66: 6(int) Load 8(iid)
67: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 66 43
68: 20(float) Load 67
69: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 65 43
Store 69 68
70: 6(int) Load 8(iid)
71: 6(int) IAdd 70 55
72: 6(int) Load 8(iid)
73: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 72 48 49
74: 20(float) Load 73
75: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 71 48 49
Store 75 74
76: 6(int) Load 8(iid)
77: 6(int) IAdd 76 55
78: 6(int) Load 8(iid)
79: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 78 49 48
80: 20(float) Load 79
81: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 77 49 48
Store 81 80
MemoryBarrier 55 56
ControlBarrier 57 57 56
90: 6(int) Load 8(iid)
93: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 90 37
Store 93 91
94: 6(int) Load 8(iid)
96: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 94 43
Store 96 95
97: 6(int) Load 8(iid)
99: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 97 48
Store 99 98
100: 6(int) Load 8(iid)
102: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 100 49 37
Store 102 101
MemoryBarrier 55 56
ControlBarrier 57 57 56
103: 6(int) Load 8(iid)
104: 6(int) IAdd 103 55
105: 6(int) Load 8(iid)
106: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 105 37
107: 36(int) Load 106
108: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 104 37
Store 108 107
109: 6(int) Load 8(iid)
110: 6(int) IAdd 109 55
111: 6(int) Load 8(iid)
112: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 111 43
113: 36(int) Load 112
114: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 110 43
Store 114 113
115: 6(int) Load 8(iid)
116: 6(int) IAdd 115 55
117: 6(int) Load 8(iid)
118: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 117 48
119: 36(int) Load 118
120: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 116 48
Store 120 119
121: 6(int) Load 8(iid)
122: 6(int) IAdd 121 55
123: 6(int) Load 8(iid)
124: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 123 49 37
125: 36(int) Load 124
126: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 122 49 37
Store 126 125
MemoryBarrier 55 56
ControlBarrier 57 57 56
132: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 37
Store 132 130
133: 6(int) Load 16(gid)
134: 6(int) Load 16(gid)
135: 6(int) ISub 134 55
136: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 135
137: 6(int) Load 136
138: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 133
Store 138 137
141: 36(int) Load 140(gl_DrawID)
142: 6(int) Bitcast 141
143: 142 WritePackedPrimitiveIndices4x8NV
Store 144(gl_PrimitiveCountNV) 145
MemoryBarrier 55 56
ControlBarrier 57 57 56
Return
FunctionEnd

View File

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

View File

@@ -0,0 +1,156 @@
spv.meshShaderPerViewUserDefined.mesh
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 90
Capability MeshShadingNV
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 "block"
MemberName 31(block) 0 "color1"
MemberName 31(block) 1 "color2"
MemberName 31(block) 2 "color3"
MemberName 31(block) 3 "color4"
Name 35 "b"
Name 64 "perviewBlock"
MemberName 64(perviewBlock) 0 "color5"
MemberName 64(perviewBlock) 1 "color6"
MemberName 64(perviewBlock) 2 "color7"
MemberName 64(perviewBlock) 3 "color8"
Name 67 "b2"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
MemberDecorate 31(block) 0 PerPrimitiveNV
MemberDecorate 31(block) 0 PerViewNV
MemberDecorate 31(block) 1 PerPrimitiveNV
MemberDecorate 31(block) 2 PerViewNV
Decorate 31(block) Block
Decorate 35(b) Location 0
MemberDecorate 64(perviewBlock) 0 PerPrimitiveNV
MemberDecorate 64(perviewBlock) 0 PerViewNV
MemberDecorate 64(perviewBlock) 1 PerPrimitiveNV
MemberDecorate 64(perviewBlock) 1 PerViewNV
MemberDecorate 64(perviewBlock) 2 PerViewNV
MemberDecorate 64(perviewBlock) 3 PerViewNV
Decorate 64(perviewBlock) Block
Decorate 67(b2) Location 10
Decorate 89 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypeVector 6(int) 3
10: TypePointer Input 9(ivec3)
11(gl_LocalInvocationID): 10(ptr) Variable Input
12: 6(int) Constant 0
13: TypePointer Input 6(int)
17: 6(int) Constant 4
18: TypeArray 6(int) 17
19: TypePointer Input 18
20(gl_MeshViewIndicesNV): 19(ptr) Variable Input
21(gl_MeshViewCountNV): 13(ptr) Variable Input
26: TypeFloat 32
27: TypeVector 26(float) 4
28: 6(int) Constant 3
29: TypeArray 27(fvec4) 28
30: TypeArray 29 17
31(block): TypeStruct 30 29 30 27(fvec4)
32: 6(int) Constant 81
33: TypeArray 31(block) 32
34: TypePointer Output 33
35(b): 34(ptr) Variable Output
37: TypeInt 32 1
38: 37(int) Constant 0
40: 37(int) Constant 2
41: 26(float) Constant 1065353216
42: 27(fvec4) ConstantComposite 41 41 41 41
43: TypePointer Output 27(fvec4)
46: 37(int) Constant 1
47: 26(float) Constant 1073741824
48: 27(fvec4) ConstantComposite 47 47 47 47
52: 26(float) Constant 1077936128
53: 27(fvec4) ConstantComposite 52 52 52 52
56: 37(int) Constant 3
57: 26(float) Constant 1082130432
58: 27(fvec4) ConstantComposite 57 57 57 57
60: 6(int) Constant 1
61: 6(int) Constant 264
62: 6(int) Constant 2
63: TypeArray 27(fvec4) 17
64(perviewBlock): TypeStruct 63 30 30 63
65: TypeArray 64(perviewBlock) 32
66: TypePointer Output 65
67(b2): 66(ptr) Variable Output
70: 26(float) Constant 1084227584
71: 27(fvec4) ConstantComposite 70 70 70 70
75: 26(float) Constant 1086324736
76: 27(fvec4) ConstantComposite 75 75 75 75
80: 26(float) Constant 1088421888
81: 27(fvec4) ConstantComposite 80 80 80 80
85: 26(float) Constant 1090519040
86: 27(fvec4) ConstantComposite 85 85 85 85
88: 6(int) Constant 32
89: 9(ivec3) ConstantComposite 88 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)
44: 43(ptr) AccessChain 35(b) 36 38 39 40
Store 44 42
45: 6(int) Load 8(iid)
49: 43(ptr) AccessChain 35(b) 45 46 46
Store 49 48
50: 6(int) Load 8(iid)
51: 6(int) Load 16(viewID)
54: 43(ptr) AccessChain 35(b) 50 40 51 40
Store 54 53
55: 6(int) Load 8(iid)
59: 43(ptr) AccessChain 35(b) 55 56
Store 59 58
MemoryBarrier 60 61
ControlBarrier 62 62 61
68: 6(int) Load 8(iid)
69: 6(int) Load 16(viewID)
72: 43(ptr) AccessChain 67(b2) 68 38 69
Store 72 71
73: 6(int) Load 8(iid)
74: 6(int) Load 16(viewID)
77: 43(ptr) AccessChain 67(b2) 73 46 74 46
Store 77 76
78: 6(int) Load 8(iid)
79: 6(int) Load 16(viewID)
82: 43(ptr) AccessChain 67(b2) 78 40 79 40
Store 82 81
83: 6(int) Load 8(iid)
84: 6(int) Load 16(viewID)
87: 43(ptr) AccessChain 67(b2) 83 56 84
Store 87 86
MemoryBarrier 60 61
ControlBarrier 62 62 61
Return
FunctionEnd

View File

@@ -0,0 +1,128 @@
spv.meshShaderSharedMem.mesh
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 77
Capability StorageImageWriteWithoutFormat
Capability MeshShadingNV
Extension "SPV_NV_mesh_shader"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshNV 4 "main" 11 17
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 "gid"
Name 17 "gl_WorkGroupID"
Name 20 "i"
Name 34 "mem"
Name 37 "block0"
MemberName 37(block0) 0 "uni_value"
Name 39 ""
Name 55 "uni_image"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 37(block0) 0 Offset 0
Decorate 37(block0) Block
Decorate 39 DescriptorSet 0
Decorate 55(uni_image) DescriptorSet 0
Decorate 55(uni_image) NonReadable
Decorate 76 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
27: 6(int) Constant 10
28: TypeBool
30: TypeFloat 32
31: TypeVector 30(float) 4
32: TypeArray 31(fvec4) 27
33: TypePointer Workgroup 32
34(mem): 33(ptr) Variable Workgroup
37(block0): TypeStruct 6(int)
38: TypePointer Uniform 37(block0)
39: 38(ptr) Variable Uniform
40: TypeInt 32 1
41: 40(int) Constant 0
42: TypePointer Uniform 6(int)
48: TypePointer Workgroup 31(fvec4)
51: 40(int) Constant 1
53: TypeImage 30(float) 2D nonsampled format:Unknown
54: TypePointer UniformConstant 53
55(uni_image): 54(ptr) Variable UniformConstant
59: TypeVector 40(int) 2
69: 6(int) Constant 1
73: 6(int) Constant 264
74: 6(int) Constant 2
75: 6(int) Constant 32
76: 9(ivec3) ConstantComposite 75 69 69
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
16(gid): 7(ptr) Variable Function
20(i): 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
Store 20(i) 12
Branch 21
21: Label
LoopMerge 23 24 None
Branch 25
25: Label
26: 6(int) Load 20(i)
29: 28(bool) ULessThan 26 27
BranchConditional 29 22 23
22: Label
35: 6(int) Load 20(i)
36: 6(int) Load 20(i)
43: 42(ptr) AccessChain 39 41
44: 6(int) Load 43
45: 6(int) IAdd 36 44
46: 30(float) ConvertUToF 45
47: 31(fvec4) CompositeConstruct 46 46 46 46
49: 48(ptr) AccessChain 34(mem) 35
Store 49 47
Branch 24
24: Label
50: 6(int) Load 20(i)
52: 6(int) IAdd 50 51
Store 20(i) 52
Branch 21
23: Label
56: 53 Load 55(uni_image)
57: 6(int) Load 8(iid)
58: 40(int) Bitcast 57
60: 59(ivec2) CompositeConstruct 58 58
61: 6(int) Load 16(gid)
62: 48(ptr) AccessChain 34(mem) 61
63: 31(fvec4) Load 62
ImageWrite 56 60 63
64: 53 Load 55(uni_image)
65: 6(int) Load 8(iid)
66: 40(int) Bitcast 65
67: 59(ivec2) CompositeConstruct 66 66
68: 6(int) Load 16(gid)
70: 6(int) IAdd 68 69
71: 48(ptr) AccessChain 34(mem) 70
72: 31(fvec4) Load 71
ImageWrite 64 67 72
MemoryBarrier 69 73
ControlBarrier 74 74 73
Return
FunctionEnd

View File

@@ -0,0 +1,107 @@
spv.meshShaderTaskMem.mesh
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 58
Capability MeshShadingNV
Extension "SPV_NV_mesh_shader"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshNV 4 "main" 11 22 30
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 18 "outBlock"
MemberName 18(outBlock) 0 "gid5"
MemberName 18(outBlock) 1 "gid6"
Name 22 "myblk"
Name 28 "taskBlock"
MemberName 28(taskBlock) 0 "gid1"
MemberName 28(taskBlock) 1 "gid2"
Name 30 "mytask"
Name 36 "bufferBlock"
MemberName 36(bufferBlock) 0 "gid3"
MemberName 36(bufferBlock) 1 "gid4"
Name 38 "mybuf"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 18(outBlock) Block
Decorate 22(myblk) Location 0
Decorate 27 ArrayStride 4
MemberDecorate 28(taskBlock) 0 PerTaskNV
MemberDecorate 28(taskBlock) 0 Offset 0
MemberDecorate 28(taskBlock) 1 PerTaskNV
MemberDecorate 28(taskBlock) 1 Offset 16
Decorate 28(taskBlock) Block
Decorate 35 ArrayStride 4
MemberDecorate 36(bufferBlock) 0 Offset 0
MemberDecorate 36(bufferBlock) 1 Offset 16
Decorate 36(bufferBlock) BufferBlock
Decorate 38(mybuf) DescriptorSet 0
Decorate 57 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)
16: TypeFloat 32
17: TypeVector 16(float) 4
18(outBlock): TypeStruct 16(float) 17(fvec4)
19: 6(int) Constant 81
20: TypeArray 18(outBlock) 19
21: TypePointer Output 20
22(myblk): 21(ptr) Variable Output
24: TypeInt 32 1
25: 24(int) Constant 0
26: 6(int) Constant 2
27: TypeArray 16(float) 26
28(taskBlock): TypeStruct 27 17(fvec4)
29: TypePointer Input 28(taskBlock)
30(mytask): 29(ptr) Variable Input
31: 24(int) Constant 1
32: TypePointer Input 16(float)
35: TypeArray 16(float) 26
36(bufferBlock): TypeStruct 35 17(fvec4)
37: TypePointer Uniform 36(bufferBlock)
38(mybuf): 37(ptr) Variable Uniform
39: TypePointer Uniform 16(float)
43: TypePointer Output 16(float)
46: TypePointer Input 17(fvec4)
49: TypePointer Uniform 17(fvec4)
53: TypePointer Output 17(fvec4)
55: 6(int) Constant 32
56: 6(int) Constant 1
57: 9(ivec3) ConstantComposite 55 56 56
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
15: 6(int) Load 14
Store 8(iid) 15
23: 6(int) Load 8(iid)
33: 32(ptr) AccessChain 30(mytask) 25 31
34: 16(float) Load 33
40: 39(ptr) AccessChain 38(mybuf) 25 31
41: 16(float) Load 40
42: 16(float) FAdd 34 41
44: 43(ptr) AccessChain 22(myblk) 23 25
Store 44 42
45: 6(int) Load 8(iid)
47: 46(ptr) AccessChain 30(mytask) 31
48: 17(fvec4) Load 47
50: 49(ptr) AccessChain 38(mybuf) 31
51: 17(fvec4) Load 50
52: 17(fvec4) FAdd 48 51
54: 53(ptr) AccessChain 22(myblk) 45 31
Store 54 52
Return
FunctionEnd

View File

@@ -0,0 +1,203 @@
spv.meshShaderUserDefined.mesh
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 138
Capability MeshShadingNV
Extension "SPV_NV_mesh_shader"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshNV 4 "main" 11 17 34 101
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 "gid"
Name 17 "gl_WorkGroupID"
Name 30 "myblock"
MemberName 30(myblock) 0 "f"
MemberName 30(myblock) 1 "fArr"
MemberName 30(myblock) 2 "pos"
MemberName 30(myblock) 3 "posArr"
MemberName 30(myblock) 4 "m"
MemberName 30(myblock) 5 "mArr"
Name 34 "blk"
Name 97 "myblock2"
MemberName 97(myblock2) 0 "f"
MemberName 97(myblock2) 1 "pos"
MemberName 97(myblock2) 2 "m"
Name 101 "blk2"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 30(myblock) 0 PerPrimitiveNV
MemberDecorate 30(myblock) 1 PerPrimitiveNV
MemberDecorate 30(myblock) 2 PerPrimitiveNV
MemberDecorate 30(myblock) 3 PerPrimitiveNV
MemberDecorate 30(myblock) 4 PerPrimitiveNV
MemberDecorate 30(myblock) 5 PerPrimitiveNV
Decorate 30(myblock) Block
Decorate 34(blk) Location 0
Decorate 97(myblock2) Block
Decorate 101(blk2) Location 20
Decorate 137 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: 6(int) Constant 4
22: TypeArray 20(float) 21
23: TypeVector 20(float) 3
24: TypeVector 20(float) 4
25: TypeArray 24(fvec4) 21
26: TypeMatrix 24(fvec4) 4
27: TypeMatrix 23(fvec3) 3
28: 6(int) Constant 2
29: TypeArray 27 28
30(myblock): TypeStruct 20(float) 22 23(fvec3) 25 26 29
31: 6(int) Constant 32
32: TypeArray 30(myblock) 31
33: TypePointer Output 32
34(blk): 33(ptr) Variable Output
36: TypeInt 32 1
37: 36(int) Constant 0
38: 20(float) Constant 1093664768
39: TypePointer Output 20(float)
42: 6(int) Constant 1
44: 36(int) Constant 1
52: 36(int) Constant 2
53: 20(float) Constant 1096810496
54: 20(float) Constant 1097859072
55: 20(float) Constant 1095761920
56: 23(fvec3) ConstantComposite 53 54 55
57: TypePointer Output 23(fvec3)
63: 36(int) Constant 3
68: TypePointer Output 24(fvec4)
74: 36(int) Constant 4
75: 20(float) Constant 1098907648
76: 24(fvec4) ConstantComposite 55 53 54 75
81: 36(int) Constant 5
84: 6(int) Constant 3
91: 20(float) Constant 1099431936
92: 20(float) Constant 1099956224
93: 20(float) Constant 1100480512
94: 23(fvec3) ConstantComposite 91 92 93
96: 6(int) Constant 264
97(myblock2): TypeStruct 20(float) 24(fvec4) 26
98: 6(int) Constant 81
99: TypeArray 97(myblock2) 98
100: TypePointer Output 99
101(blk2): 100(ptr) Variable Output
107: 20(float) Constant 1101004800
111: 20(float) Constant 1101529088
112: 20(float) Constant 1102053376
113: 20(float) Constant 1102577664
114: 20(float) Constant 1103101952
115: 24(fvec4) ConstantComposite 111 112 113 114
127: 20(float) Constant 1105723392
137: 9(ivec3) ConstantComposite 31 42 42
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
16(gid): 7(ptr) Variable Function
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
15: 6(int) Load 14
Store 8(iid) 15
18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
19: 6(int) Load 18
Store 16(gid) 19
35: 6(int) Load 8(iid)
40: 39(ptr) AccessChain 34(blk) 35 37
Store 40 38
41: 6(int) Load 8(iid)
43: 6(int) IAdd 41 42
45: 6(int) Load 16(gid)
46: 6(int) Load 8(iid)
47: 39(ptr) AccessChain 34(blk) 46 37
48: 20(float) Load 47
49: 39(ptr) AccessChain 34(blk) 43 44 45
Store 49 48
50: 6(int) Load 8(iid)
51: 6(int) UDiv 50 28
58: 57(ptr) AccessChain 34(blk) 51 52
59: 23(fvec3) Load 58
60: 23(fvec3) VectorShuffle 59 56 5 3 4
Store 58 60
61: 6(int) Load 8(iid)
62: 6(int) IMul 61 28
64: 6(int) Load 8(iid)
65: 6(int) UDiv 64 28
66: 57(ptr) AccessChain 34(blk) 65 52
67: 23(fvec3) Load 66
69: 68(ptr) AccessChain 34(blk) 62 63 44
70: 24(fvec4) Load 69
71: 24(fvec4) VectorShuffle 70 67 0 4 5 6
Store 69 71
72: 6(int) Load 8(iid)
73: 6(int) UDiv 72 21
77: 68(ptr) AccessChain 34(blk) 73 74 52
78: 24(fvec4) Load 77
79: 24(fvec4) VectorShuffle 78 76 7 6 5 4
Store 77 79
80: 6(int) Load 8(iid)
82: 6(int) Load 8(iid)
83: 6(int) UDiv 82 21
85: 39(ptr) AccessChain 34(blk) 83 74 52 84
86: 20(float) Load 85
87: 39(ptr) AccessChain 34(blk) 80 81 37 44 42
Store 87 86
88: 6(int) Load 8(iid)
89: 6(int) IMul 88 21
90: 6(int) Load 16(gid)
95: 57(ptr) AccessChain 34(blk) 89 81 44 90
Store 95 94
MemoryBarrier 42 96
ControlBarrier 28 28 96
102: 6(int) Load 8(iid)
103: 6(int) Load 8(iid)
104: 6(int) ISub 103 42
105: 39(ptr) AccessChain 101(blk2) 104 37
106: 20(float) Load 105
108: 20(float) FAdd 106 107
109: 39(ptr) AccessChain 101(blk2) 102 37
Store 109 108
110: 6(int) Load 8(iid)
116: 68(ptr) AccessChain 101(blk2) 110 44
Store 116 115
117: 6(int) Load 8(iid)
118: 6(int) IAdd 117 42
119: 6(int) Load 16(gid)
120: 6(int) Load 8(iid)
121: 68(ptr) AccessChain 101(blk2) 120 44
122: 24(fvec4) Load 121
123: 68(ptr) AccessChain 101(blk2) 118 52 119
Store 123 122
124: 6(int) Load 8(iid)
125: 6(int) IAdd 124 42
126: 6(int) Load 16(gid)
128: 39(ptr) AccessChain 101(blk2) 125 52 126 28
Store 128 127
129: 6(int) Load 8(iid)
130: 6(int) IAdd 129 28
131: 6(int) Load 8(iid)
132: 6(int) IAdd 131 42
133: 6(int) Load 16(gid)
134: 68(ptr) AccessChain 101(blk2) 132 52 133
135: 24(fvec4) Load 134
136: 68(ptr) AccessChain 101(blk2) 130 52 63
Store 136 135
MemoryBarrier 42 96
ControlBarrier 28 28 96
Return
FunctionEnd

View File

@@ -0,0 +1,172 @@
spv.meshTaskShader.task
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 104
Capability StorageImageWriteWithoutFormat
Capability MeshShadingNV
Extension "SPV_NV_mesh_shader"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint TaskNV 4 "main" 11 17 80 101
ExecutionMode 4 LocalSize 32 1 1
Source GLSL 450
SourceExtension "GL_NV_mesh_shader"
Name 4 "main"
Name 8 "iid"
Name 11 "gl_LocalInvocationID"
Name 16 "gid"
Name 17 "gl_WorkGroupID"
Name 20 "i"
Name 34 "mem"
Name 37 "block0"
MemberName 37(block0) 0 "uni_value"
Name 39 ""
Name 55 "uni_image"
Name 78 "Task"
MemberName 78(Task) 0 "dummy"
MemberName 78(Task) 1 "submesh"
Name 80 "mytask"
Name 101 "gl_TaskCountNV"
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 37(block0) 0 Offset 0
Decorate 37(block0) Block
Decorate 39 DescriptorSet 0
Decorate 55(uni_image) DescriptorSet 0
Decorate 55(uni_image) Binding 0
Decorate 55(uni_image) NonReadable
Decorate 77 ArrayStride 8
MemberDecorate 78(Task) 0 PerTaskNV
MemberDecorate 78(Task) 0 Offset 0
MemberDecorate 78(Task) 1 PerTaskNV
MemberDecorate 78(Task) 1 Offset 8
Decorate 78(Task) Block
Decorate 101(gl_TaskCountNV) BuiltIn TaskCountNV
Decorate 103 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
27: 6(int) Constant 10
28: TypeBool
30: TypeFloat 32
31: TypeVector 30(float) 4
32: TypeArray 31(fvec4) 27
33: TypePointer Workgroup 32
34(mem): 33(ptr) Variable Workgroup
37(block0): TypeStruct 6(int)
38: TypePointer Uniform 37(block0)
39: 38(ptr) Variable Uniform
40: TypeInt 32 1
41: 40(int) Constant 0
42: TypePointer Uniform 6(int)
48: TypePointer Workgroup 31(fvec4)
51: 40(int) Constant 1
53: TypeImage 30(float) 2D nonsampled format:Unknown
54: TypePointer UniformConstant 53
55(uni_image): 54(ptr) Variable UniformConstant
59: TypeVector 40(int) 2
69: 6(int) Constant 1
73: 6(int) Constant 264
74: 6(int) Constant 2
75: TypeVector 30(float) 2
76: 6(int) Constant 3
77: TypeArray 75(fvec2) 76
78(Task): TypeStruct 75(fvec2) 77
79: TypePointer Output 78(Task)
80(mytask): 79(ptr) Variable Output
81: 30(float) Constant 1106247680
82: 30(float) Constant 1106771968
83: 75(fvec2) ConstantComposite 81 82
84: TypePointer Output 75(fvec2)
86: 30(float) Constant 1107296256
87: 30(float) Constant 1107558400
88: 75(fvec2) ConstantComposite 86 87
90: 30(float) Constant 1107820544
91: 30(float) Constant 1108082688
92: 75(fvec2) ConstantComposite 90 91
94: 40(int) Constant 2
100: TypePointer Output 6(int)
101(gl_TaskCountNV): 100(ptr) Variable Output
102: 6(int) Constant 32
103: 9(ivec3) ConstantComposite 102 69 69
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
16(gid): 7(ptr) Variable Function
20(i): 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
Store 20(i) 12
Branch 21
21: Label
LoopMerge 23 24 None
Branch 25
25: Label
26: 6(int) Load 20(i)
29: 28(bool) ULessThan 26 27
BranchConditional 29 22 23
22: Label
35: 6(int) Load 20(i)
36: 6(int) Load 20(i)
43: 42(ptr) AccessChain 39 41
44: 6(int) Load 43
45: 6(int) IAdd 36 44
46: 30(float) ConvertUToF 45
47: 31(fvec4) CompositeConstruct 46 46 46 46
49: 48(ptr) AccessChain 34(mem) 35
Store 49 47
Branch 24
24: Label
50: 6(int) Load 20(i)
52: 6(int) IAdd 50 51
Store 20(i) 52
Branch 21
23: Label
56: 53 Load 55(uni_image)
57: 6(int) Load 8(iid)
58: 40(int) Bitcast 57
60: 59(ivec2) CompositeConstruct 58 58
61: 6(int) Load 16(gid)
62: 48(ptr) AccessChain 34(mem) 61
63: 31(fvec4) Load 62
ImageWrite 56 60 63
64: 53 Load 55(uni_image)
65: 6(int) Load 8(iid)
66: 40(int) Bitcast 65
67: 59(ivec2) CompositeConstruct 66 66
68: 6(int) Load 16(gid)
70: 6(int) IAdd 68 69
71: 48(ptr) AccessChain 34(mem) 70
72: 31(fvec4) Load 71
ImageWrite 64 67 72
MemoryBarrier 69 73
ControlBarrier 74 74 73
85: 84(ptr) AccessChain 80(mytask) 41
Store 85 83
89: 84(ptr) AccessChain 80(mytask) 51 41
Store 89 88
93: 84(ptr) AccessChain 80(mytask) 51 51
Store 93 92
95: 6(int) Load 16(gid)
96: 6(int) UMod 95 74
97: 84(ptr) AccessChain 80(mytask) 51 96
98: 75(fvec2) Load 97
99: 84(ptr) AccessChain 80(mytask) 51 94
Store 99 98
MemoryBarrier 69 73
ControlBarrier 74 74 73
Store 101(gl_TaskCountNV) 76
Return
FunctionEnd

View File

@@ -81,6 +81,15 @@ MaxTransformFeedbackInterleavedComponents 64
MaxCullDistances 8
MaxCombinedClipAndCullDistances 8
MaxSamples 4
MaxMeshOutputVerticesNV 256
MaxMeshOutputPrimitivesNV 512
MaxMeshWorkGroupSizeX_NV 32
MaxMeshWorkGroupSizeY_NV 1
MaxMeshWorkGroupSizeZ_NV 1
MaxTaskWorkGroupSizeX_NV 32
MaxTaskWorkGroupSizeY_NV 1
MaxTaskWorkGroupSizeZ_NV 1
MaxMeshViewCountNV 4
nonInductiveForLoops 1
whileLoops 1
doWhileLoops 1

View File

@@ -0,0 +1,63 @@
#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 builtins in mesh shaders:
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();
// should truncate 257 -> 1
gl_PrimitiveIndicesNV[0] = 257;
gl_PrimitiveIndicesNV[gid] = gl_PrimitiveIndicesNV[gid-1];
// writes 4 indices at offset gl_DrawID
writePackedPrimitiveIndices4x8NV(gl_DrawID, 0x01020304);
gl_PrimitiveCountNV = MAX_PRIM * 3;
BARRIER();
}

View File

@@ -0,0 +1,42 @@
#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 per-view builtin attributes
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();
}

View File

@@ -0,0 +1,56 @@
#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 user-defined per-view attributes
// mix of single-view and per-view attributes
layout(location=0) out block {
perprimitiveNV perviewNV vec4 color1[][3]; // Implicitly sized
perprimitiveNV vec4 color2[3];
perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized
vec4 color4;
} b[];
// per-view block
perviewNV layout(location=10) out perviewBlock {
perprimitiveNV vec4 color5[]; // Implicitly sized
perprimitiveNV vec4 color6[MAX_VIEWS][3]; // Explicitly sized
vec4 color7[][3]; // Implicitly sized
vec4 color8[MAX_VIEWS]; // Explicitly sized
} b2[];
void main()
{
uint iid = gl_LocalInvocationID.x;
uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS];
b[iid].color1[viewID][2] = vec4(1.0);
b[iid].color2[1] = vec4(2.0);
b[iid].color3[viewID][2] = vec4(3.0);
b[iid].color4 = vec4(4.0);
BARRIER();
b2[iid].color5[viewID] = vec4(5.0);
b2[iid].color6[viewID][1] = vec4(6.0);
b2[iid].color7[viewID][2] = vec4(7.0);
b2[iid].color8[viewID] = vec4(8.0);
BARRIER();
}

View File

@@ -0,0 +1,39 @@
#version 450
#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 shared memory in mesh shaders:
writeonly uniform image2D uni_image;
uniform block0 {
uint uni_value;
};
shared vec4 mem[10];
void main()
{
uint iid = gl_LocalInvocationID.x;
uint gid = gl_WorkGroupID.x;
for (uint i = 0; i < 10; ++i) {
mem[i] = vec4(i+uni_value);
}
imageStore(uni_image, ivec2(iid), mem[gid]);
imageStore(uni_image, ivec2(iid), mem[gid+1]);
BARRIER();
}

View File

@@ -0,0 +1,41 @@
#version 450
#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 task memory in mesh shaders:
taskNV in taskBlock {
float gid1[2];
vec4 gid2;
} mytask;
buffer bufferBlock {
float gid3[2];
vec4 gid4;
} mybuf;
layout(location=0) out outBlock {
float gid5;
vec4 gid6;
} myblk[];
void main()
{
uint iid = gl_LocalInvocationID.x;
myblk[iid].gid5 = mytask.gid1[1] + mybuf.gid3[1];
myblk[iid].gid6 = mytask.gid2 + mybuf.gid4;
}

View File

@@ -0,0 +1,59 @@
#version 450
#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 user defined interface out blocks:
// per-primitive block
perprimitiveNV layout(location=0) out myblock {
float f;
float fArr[4];
vec3 pos;
vec4 posArr[4];
mat4 m;
mat3 mArr[2];
} blk[];
// per-vertex block
layout(location=20) out myblock2 {
float f;
vec4 pos;
mat4 m;
} blk2[];
void main()
{
uint iid = gl_LocalInvocationID.x;
uint gid = gl_WorkGroupID.x;
blk[iid].f = 11.0;
blk[iid+1].fArr[gid] = blk[iid].f;
blk[iid/2].pos.yzx = vec3(14.0, 15.0, 13.0);
blk[iid*2].posArr[1].yzw = blk[iid/2].pos;
blk[iid/4].m[2].wzyx = vec4(13.0, 14.0, 15.0, 16.0);
blk[iid].mArr[0][1][1] = blk[iid/4].m[2].w;
blk[iid*4].mArr[1][gid] = vec3(17.0, 18.0, 19.0);
BARRIER();
blk2[iid].f = blk2[iid-1].f + 20.0;
blk2[iid].pos = vec4(21.0, 22.0, 23.0, 24.0);
blk2[iid+1].m[gid] = blk2[iid].pos;
blk2[iid+1].m[gid][2] = 29.0;
blk2[iid+2].m[3] = blk2[iid+1].m[gid];
BARRIER();
}

View File

@@ -0,0 +1,49 @@
#version 450
#define BARRIER() \
memoryBarrierShared(); \
barrier();
#extension GL_NV_mesh_shader : enable
layout(local_size_x = 32) in;
// test use of shared memory in task shaders:
layout(binding=0) writeonly uniform image2D uni_image;
uniform block0 {
uint uni_value;
};
shared vec4 mem[10];
// test use of task memory in task shaders:
taskNV out Task {
vec2 dummy;
vec2 submesh[3];
} mytask;
void main()
{
uint iid = gl_LocalInvocationID.x;
uint gid = gl_WorkGroupID.x;
// 1. shared memory load and stores
for (uint i = 0; i < 10; ++i) {
mem[i] = vec4(i + uni_value);
}
imageStore(uni_image, ivec2(iid), mem[gid]);
imageStore(uni_image, ivec2(iid), mem[gid+1]);
BARRIER();
// 2. task memory stores
mytask.dummy = vec2(30.0, 31.0);
mytask.submesh[0] = vec2(32.0, 33.0);
mytask.submesh[1] = vec2(34.0, 35.0);
mytask.submesh[2] = mytask.submesh[gid%2];
BARRIER();
// 3. set task count
gl_TaskCountNV = 3;
}