Allow redeclaration of builtin interface blocks in mesh shader
Apart from allowing redeclaration of gl_MeshPerVertexNV and gl_MeshPerPrimitiveNV blocks, this change also - - Resize clip/cull perview distances based on static index use - Error out use of both single-view and per-view builtins - Add new gtests with redeclared blocks and edit existing test output - Fix couple of typos
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
spv.meshShaderPerViewBuiltins.mesh
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 124
|
||||
// Id's are bound by 126
|
||||
|
||||
Capability MultiViewport
|
||||
Capability PerViewAttributesNV
|
||||
@@ -10,7 +10,7 @@ spv.meshShaderPerViewBuiltins.mesh
|
||||
Extension "SPV_NV_mesh_shader"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
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 OutputVertices 81
|
||||
ExecutionMode 4 OutputPrimitivesNV 32
|
||||
@@ -23,53 +23,53 @@ spv.meshShaderPerViewBuiltins.mesh
|
||||
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"
|
||||
Name 36 "gl_MeshPerVertexNV"
|
||||
MemberName 36(gl_MeshPerVertexNV) 0 "gl_Position"
|
||||
MemberName 36(gl_MeshPerVertexNV) 1 "gl_PointSize"
|
||||
MemberName 36(gl_MeshPerVertexNV) 2 "gl_ClipDistance"
|
||||
MemberName 36(gl_MeshPerVertexNV) 3 "gl_CullDistance"
|
||||
MemberName 36(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV"
|
||||
MemberName 36(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV"
|
||||
MemberName 36(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV"
|
||||
Name 40 "gl_MeshVerticesNV"
|
||||
Name 68 "gl_MeshPerPrimitiveNV"
|
||||
MemberName 68(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID"
|
||||
MemberName 68(gl_MeshPerPrimitiveNV) 1 "gl_Layer"
|
||||
MemberName 68(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex"
|
||||
MemberName 68(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask"
|
||||
MemberName 68(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV"
|
||||
MemberName 68(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV"
|
||||
Name 72 "gl_MeshPrimitivesNV"
|
||||
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||
Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV
|
||||
Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV
|
||||
MemberDecorate 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
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 0 BuiltIn Position
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 1 BuiltIn PointSize
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 3 BuiltIn CullDistance
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 4 PerViewNV
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 5 PerViewNV
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 6 PerViewNV
|
||||
MemberDecorate 36(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV
|
||||
Decorate 36(gl_MeshPerVertexNV) Block
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerViewNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerViewNV
|
||||
MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV
|
||||
Decorate 68(gl_MeshPerPrimitiveNV) Block
|
||||
Decorate 125 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
@@ -89,44 +89,46 @@ spv.meshShaderPerViewBuiltins.mesh
|
||||
28: 6(int) Constant 1
|
||||
29: TypeArray 26(float) 28
|
||||
30: TypeArray 27(fvec4) 17
|
||||
31: 6(int) Constant 8
|
||||
31: 6(int) Constant 3
|
||||
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
|
||||
34: TypeArray 26(float) 17
|
||||
35: TypeArray 34 17
|
||||
36(gl_MeshPerVertexNV): TypeStruct 27(fvec4) 26(float) 29 29 30 33 35
|
||||
37: 6(int) Constant 81
|
||||
38: TypeArray 36(gl_MeshPerVertexNV) 37
|
||||
39: TypePointer Output 38
|
||||
40(gl_MeshVerticesNV): 39(ptr) Variable Output
|
||||
42: TypeInt 32 1
|
||||
43: 42(int) Constant 4
|
||||
45: 26(float) Constant 1065353216
|
||||
46: 26(float) Constant 1073741824
|
||||
47: 26(float) Constant 1077936128
|
||||
48: 26(float) Constant 1082130432
|
||||
49: 27(fvec4) ConstantComposite 45 46 47 48
|
||||
50: TypePointer Output 27(fvec4)
|
||||
53: 42(int) Constant 5
|
||||
55: 42(int) Constant 2
|
||||
56: 26(float) Constant 1084227584
|
||||
57: TypePointer Output 26(float)
|
||||
60: 42(int) Constant 6
|
||||
62: 42(int) Constant 3
|
||||
63: 26(float) Constant 1086324736
|
||||
65: TypeArray 42(int) 28
|
||||
66: TypeArray 42(int) 17
|
||||
67: TypeArray 65 17
|
||||
68(gl_MeshPerPrimitiveNV): TypeStruct 42(int) 42(int) 42(int) 65 66 67
|
||||
69: 6(int) Constant 32
|
||||
70: TypeArray 68(gl_MeshPerPrimitiveNV) 69
|
||||
71: TypePointer Output 70
|
||||
72(gl_MeshPrimitivesNV): 71(ptr) Variable Output
|
||||
75: 42(int) Constant 7
|
||||
76: TypePointer Output 42(int)
|
||||
80: 42(int) Constant 0
|
||||
81: 42(int) Constant 8
|
||||
83: 6(int) Constant 264
|
||||
84: 6(int) Constant 2
|
||||
125: 9(ivec3) ConstantComposite 69 28 28
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
8(iid): 7(ptr) Variable Function
|
||||
@@ -139,74 +141,74 @@ spv.meshShaderPerViewBuiltins.mesh
|
||||
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)
|
||||
41: 6(int) Load 8(iid)
|
||||
44: 6(int) Load 16(viewID)
|
||||
51: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 41 43 44
|
||||
Store 51 49
|
||||
52: 6(int) Load 8(iid)
|
||||
54: 6(int) Load 16(viewID)
|
||||
58: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 52 53 54 55
|
||||
Store 58 56
|
||||
59: 6(int) Load 8(iid)
|
||||
61: 6(int) Load 16(viewID)
|
||||
64: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 59 60 61 62
|
||||
Store 64 63
|
||||
73: 6(int) Load 8(iid)
|
||||
74: 6(int) Load 16(viewID)
|
||||
77: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 73 43 74
|
||||
Store 77 75
|
||||
78: 6(int) Load 8(iid)
|
||||
79: 6(int) Load 16(viewID)
|
||||
82: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 78 53 79 80
|
||||
Store 82 81
|
||||
MemoryBarrier 28 83
|
||||
ControlBarrier 84 84 83
|
||||
85: 6(int) Load 8(iid)
|
||||
86: 6(int) IAdd 85 28
|
||||
87: 6(int) Load 16(viewID)
|
||||
88: 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)
|
||||
88: 6(int) Load 8(iid)
|
||||
89: 6(int) Load 16(viewID)
|
||||
90: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 88 43 89
|
||||
91: 27(fvec4) Load 90
|
||||
92: 50(ptr) AccessChain 40(gl_MeshVerticesNV) 86 43 87
|
||||
Store 92 91
|
||||
93: 6(int) Load 8(iid)
|
||||
94: 6(int) IAdd 93 28
|
||||
95: 6(int) Load 16(viewID)
|
||||
96: 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)
|
||||
96: 6(int) Load 8(iid)
|
||||
97: 6(int) Load 16(viewID)
|
||||
98: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 96 53 97 55
|
||||
99: 26(float) Load 98
|
||||
100: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 94 53 95 55
|
||||
Store 100 99
|
||||
101: 6(int) Load 8(iid)
|
||||
102: 6(int) IAdd 101 28
|
||||
103: 6(int) Load 16(viewID)
|
||||
104: 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)
|
||||
104: 6(int) Load 8(iid)
|
||||
105: 6(int) Load 16(viewID)
|
||||
106: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 104 60 105 62
|
||||
107: 26(float) Load 106
|
||||
108: 57(ptr) AccessChain 40(gl_MeshVerticesNV) 102 60 103 62
|
||||
Store 108 107
|
||||
109: 6(int) Load 8(iid)
|
||||
110: 6(int) IAdd 109 28
|
||||
111: 6(int) Load 16(viewID)
|
||||
112: 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)
|
||||
112: 6(int) Load 8(iid)
|
||||
113: 6(int) Load 16(viewID)
|
||||
114: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 112 43 113
|
||||
115: 42(int) Load 114
|
||||
116: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 110 43 111
|
||||
Store 116 115
|
||||
117: 6(int) Load 8(iid)
|
||||
118: 6(int) IAdd 117 28
|
||||
119: 6(int) Load 16(viewID)
|
||||
120: 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
|
||||
120: 6(int) Load 8(iid)
|
||||
121: 6(int) Load 16(viewID)
|
||||
122: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 120 53 121 80
|
||||
123: 42(int) Load 122
|
||||
124: 76(ptr) AccessChain 72(gl_MeshPrimitivesNV) 118 53 119 80
|
||||
Store 124 123
|
||||
MemoryBarrier 28 83
|
||||
ControlBarrier 84 84 83
|
||||
Return
|
||||
FunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user