mirror of
https://github.com/RPCS3/glslang.git
synced 2024-11-23 11:19:40 +00:00
SPV: Allow push constant buffers to not have an instance name.
This commit is contained in:
parent
789086a820
commit
33f85b6e59
66
Test/baseResults/spv.pushConstantAnon.vert.out
Executable file
66
Test/baseResults/spv.pushConstantAnon.vert.out
Executable 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
|
@ -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
|
||||
|
17
Test/spv.pushConstantAnon.vert
Normal file
17
Test/spv.pushConstantAnon.vert
Normal file
@ -0,0 +1,17 @@
|
||||
#version 400
|
||||
|
||||
layout(push_constant) uniform Material {
|
||||
int kind;
|
||||
float fa[3];
|
||||
};
|
||||
|
||||
out vec4 color;
|
||||
|
||||
void main()
|
||||
{
|
||||
switch (kind) {
|
||||
case 1: color = vec4(0.2); break;
|
||||
case 2: color = vec4(0.5); break;
|
||||
default: color = vec4(fa[1]); break;
|
||||
}
|
||||
}
|
@ -46,7 +46,7 @@ layout(push_constant) uniform; // ERROR, needs an object
|
||||
|
||||
layout(push_constant) uniform pcb2 {
|
||||
int a;
|
||||
}; // ERROR, no instance name
|
||||
}; // Okay now to have no instance name
|
||||
|
||||
layout(input_attachment_index = 2) uniform subpassInput subD;
|
||||
layout(input_attachment_index = 3) uniform texture2D subDbad1; // ERROR, not a texture
|
||||
|
@ -2,5 +2,5 @@
|
||||
// For the version, it uses the latest git tag followed by the number of commits.
|
||||
// For the date, it uses the current date (when then script is run).
|
||||
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1875"
|
||||
#define GLSLANG_DATE "03-Mar-2017"
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1878"
|
||||
#define GLSLANG_DATE "06-Mar-2017"
|
||||
|
@ -5797,11 +5797,8 @@ void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier&
|
||||
error(loc, "cannot use sample qualifier on an interface block", "sample", "");
|
||||
if (qualifier.invariant)
|
||||
error(loc, "cannot use invariant qualifier on an interface block", "invariant", "");
|
||||
if (qualifier.layoutPushConstant) {
|
||||
if (qualifier.layoutPushConstant)
|
||||
intermediate.addPushConstantCount();
|
||||
if (! instanceName)
|
||||
error(loc, "requires an instance name", "push_constant", "");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -295,6 +295,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.separate.frag",
|
||||
"spv.shortCircuit.frag",
|
||||
"spv.pushConstant.vert",
|
||||
"spv.pushConstantAnon.vert",
|
||||
"spv.subpass.frag",
|
||||
"spv.specConstant.vert",
|
||||
"spv.specConstant.comp",
|
||||
|
Loading…
Reference in New Issue
Block a user