SPV: Allow push constant buffers to not have an instance name.

This commit is contained in:
John Kessenich
2017-03-06 08:51:35 -07:00
parent 789086a820
commit 33f85b6e59
7 changed files with 89 additions and 9 deletions

View File

@@ -0,0 +1,66 @@
spv.pushConstantAnon.vert
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 38
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 24
Source GLSL 400
Name 4 "main"
Name 11 "Material"
MemberName 11(Material) 0 "kind"
MemberName 11(Material) 1 "fa"
Name 13 ""
Name 24 "color"
Decorate 10 ArrayStride 4
MemberDecorate 11(Material) 0 Offset 0
MemberDecorate 11(Material) 1 Offset 4
Decorate 11(Material) Block
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypeFloat 32
8: TypeInt 32 0
9: 8(int) Constant 3
10: TypeArray 7(float) 9
11(Material): TypeStruct 6(int) 10
12: TypePointer PushConstant 11(Material)
13: 12(ptr) Variable PushConstant
14: 6(int) Constant 0
15: TypePointer PushConstant 6(int)
22: TypeVector 7(float) 4
23: TypePointer Output 22(fvec4)
24(color): 23(ptr) Variable Output
25: 7(float) Constant 1045220557
26: 22(fvec4) ConstantComposite 25 25 25 25
28: 7(float) Constant 1056964608
29: 22(fvec4) ConstantComposite 28 28 28 28
31: 6(int) Constant 1
32: TypePointer PushConstant 7(float)
4(main): 2 Function None 3
5: Label
16: 15(ptr) AccessChain 13 14
17: 6(int) Load 16
SelectionMerge 21 None
Switch 17 20
case 1: 18
case 2: 19
20: Label
33: 32(ptr) AccessChain 13 31 31
34: 7(float) Load 33
35: 22(fvec4) CompositeConstruct 34 34 34 34
Store 24(color) 35
Branch 21
18: Label
Store 24(color) 26
Branch 21
19: Label
Store 24(color) 29
Branch 21
21: Label
Return
FunctionEnd

View File

@@ -19,7 +19,6 @@ ERROR: 0:39: 'push_constant' : can only be used with a uniform
ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:43: 'push_constant' : can only be used with a block
ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block
ERROR: 0:47: 'push_constant' : requires an instance name
ERROR: 0:52: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:53: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:54: 'subpass' : requires an input_attachment_index layout qualifier
@@ -41,7 +40,7 @@ ERROR: 0:93: ',' : sampler constructor must appear at point of use
ERROR: 0:94: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'temp sampler2D' and a right operand of type 'temp sampler2D' (or there is no acceptable conversion)
ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:96: 'gl_NumSamples' : undeclared identifier
ERROR: 39 compilation errors. No code generated.
ERROR: 38 compilation errors. No code generated.
ERROR: Linking fragment stage: Only one push_constant block is allowed per stage