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: '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: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: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: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:53: 'input_attachment_index' : can only be used with a subpass
|
||||||
ERROR: 0:54: 'subpass' : requires an input_attachment_index layout qualifier
|
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: ':' : 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:94: 'call argument' : sampler constructor must appear at point of use
|
||||||
ERROR: 0:96: 'gl_NumSamples' : undeclared identifier
|
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
|
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 {
|
layout(push_constant) uniform pcb2 {
|
||||||
int a;
|
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 = 2) uniform subpassInput subD;
|
||||||
layout(input_attachment_index = 3) uniform texture2D subDbad1; // ERROR, not a texture
|
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 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).
|
// For the date, it uses the current date (when then script is run).
|
||||||
|
|
||||||
#define GLSLANG_REVISION "Overload400-PrecQual.1875"
|
#define GLSLANG_REVISION "Overload400-PrecQual.1878"
|
||||||
#define GLSLANG_DATE "03-Mar-2017"
|
#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", "");
|
error(loc, "cannot use sample qualifier on an interface block", "sample", "");
|
||||||
if (qualifier.invariant)
|
if (qualifier.invariant)
|
||||||
error(loc, "cannot use invariant qualifier on an interface block", "invariant", "");
|
error(loc, "cannot use invariant qualifier on an interface block", "invariant", "");
|
||||||
if (qualifier.layoutPushConstant) {
|
if (qualifier.layoutPushConstant)
|
||||||
intermediate.addPushConstantCount();
|
intermediate.addPushConstantCount();
|
||||||
if (! instanceName)
|
|
||||||
error(loc, "requires an instance name", "push_constant", "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -295,6 +295,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
"spv.separate.frag",
|
"spv.separate.frag",
|
||||||
"spv.shortCircuit.frag",
|
"spv.shortCircuit.frag",
|
||||||
"spv.pushConstant.vert",
|
"spv.pushConstant.vert",
|
||||||
|
"spv.pushConstantAnon.vert",
|
||||||
"spv.subpass.frag",
|
"spv.subpass.frag",
|
||||||
"spv.specConstant.vert",
|
"spv.specConstant.vert",
|
||||||
"spv.specConstant.comp",
|
"spv.specConstant.comp",
|
||||||
|
Loading…
Reference in New Issue
Block a user