SPV: Add auto location mapping of non-opaque non-block uniform variables.
Fix #1019.
This commit is contained in:
parent
8268a35504
commit
82e95a3aa5
9 changed files with 93 additions and 12 deletions
|
|
@ -1,10 +1,9 @@
|
|||
glspv.frag
|
||||
ERROR: 0:4: '#error' : GL_SPIRV is set ( correct , not an error )
|
||||
ERROR: 0:6: '#error' : GL_SPIR is 100
|
||||
ERROR: 0:14: 'f' : non-opaque uniform variables need a layout(location=L)
|
||||
ERROR: 0:19: 'input_attachment_index' : only allowed when using GLSL for Vulkan
|
||||
ERROR: 0:19: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
|
||||
ERROR: 5 compilation errors. No code generated.
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
|
|
|
|||
8
Test/baseResults/spv.looseUniformNoLoc.vert.out
Normal file
8
Test/baseResults/spv.looseUniformNoLoc.vert.out
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
spv.looseUniformNoLoc.vert
|
||||
ERROR: spv.looseUniformNoLoc.vert:9: 'uv' : non-opaque uniform variables need a layout(location=L)
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
spv.noBuiltInLoc.vert
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 23
|
||||
// Id's are bound by 33
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main" 9 11 18
|
||||
EntryPoint Vertex 4 "main" 9 11 18 31 32
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 9 "bar"
|
||||
|
|
@ -17,6 +17,11 @@ spv.noBuiltInLoc.vert
|
|||
MemberName 16(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
MemberName 16(gl_PerVertex) 3 "gl_CullDistance"
|
||||
Name 18 ""
|
||||
Name 24 "uv1"
|
||||
Name 26 "uv2"
|
||||
Name 29 "uv3"
|
||||
Name 31 "gl_VertexID"
|
||||
Name 32 "gl_InstanceID"
|
||||
Decorate 9(bar) Location 0
|
||||
Decorate 11(foo) Location 0
|
||||
MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position
|
||||
|
|
@ -24,6 +29,14 @@ spv.noBuiltInLoc.vert
|
|||
MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance
|
||||
Decorate 16(gl_PerVertex) Block
|
||||
Decorate 24(uv1) Location 0
|
||||
Decorate 24(uv1) DescriptorSet 0
|
||||
Decorate 26(uv2) Location 1
|
||||
Decorate 26(uv2) DescriptorSet 0
|
||||
Decorate 29(uv3) Location 2
|
||||
Decorate 29(uv3) DescriptorSet 0
|
||||
Decorate 31(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 32(gl_InstanceID) BuiltIn InstanceId
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
|
@ -40,6 +53,16 @@ spv.noBuiltInLoc.vert
|
|||
18: 17(ptr) Variable Output
|
||||
19: TypeInt 32 1
|
||||
20: 19(int) Constant 0
|
||||
23: TypePointer UniformConstant 7(fvec4)
|
||||
24(uv1): 23(ptr) Variable UniformConstant
|
||||
25: TypePointer UniformConstant 6(float)
|
||||
26(uv2): 25(ptr) Variable UniformConstant
|
||||
27: TypeVector 6(float) 3
|
||||
28: TypePointer UniformConstant 27(fvec3)
|
||||
29(uv3): 28(ptr) Variable UniformConstant
|
||||
30: TypePointer Input 19(int)
|
||||
31(gl_VertexID): 30(ptr) Variable Input
|
||||
32(gl_InstanceID): 30(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
12: 7(fvec4) Load 11(foo)
|
||||
|
|
|
|||
|
|
@ -109,8 +109,10 @@ diff -b $BASEDIR/hlsl.explicitDescriptorSet-2.frag.out $TARGETDIR/hlsl.explicitD
|
|||
echo Testing SPV no location
|
||||
$EXE -V -C spv.noLocation.vert > $TARGETDIR/spv.noLocation.vert.out
|
||||
diff -b $BASEDIR/spv.noLocation.vert.out $TARGETDIR/spv.noLocation.vert.out || HASERROR=1
|
||||
$EXE -H --aml spv.noBuiltInLoc.vert > $TARGETDIR/spv.noBuiltInLoc.vert.out
|
||||
$EXE -G -H --aml spv.noBuiltInLoc.vert > $TARGETDIR/spv.noBuiltInLoc.vert.out
|
||||
diff -b $BASEDIR/spv.noBuiltInLoc.vert.out $TARGETDIR/spv.noBuiltInLoc.vert.out || HASERROR=1
|
||||
$EXE -G spv.looseUniformNoLoc.vert > $TARGETDIR/spv.looseUniformNoLoc.vert.out
|
||||
diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out $TARGETDIR/spv.looseUniformNoLoc.vert.out || HASERROR=1
|
||||
|
||||
#
|
||||
# Testing debug information
|
||||
|
|
|
|||
15
Test/spv.looseUniformNoLoc.vert
Normal file
15
Test/spv.looseUniformNoLoc.vert
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#version 450 core
|
||||
|
||||
layout(location = 0)
|
||||
in vec4 foo;
|
||||
|
||||
layout(location = 0)
|
||||
out vec4 bar;
|
||||
|
||||
uniform vec4 uv;
|
||||
|
||||
void main()
|
||||
{
|
||||
bar = foo;
|
||||
gl_Position = foo;
|
||||
}
|
||||
|
|
@ -6,6 +6,10 @@ in vec4 foo;
|
|||
layout(location = 0)
|
||||
out vec4 bar;
|
||||
|
||||
uniform vec4 uv1;
|
||||
uniform float uv2;
|
||||
uniform vec3 uv3;
|
||||
|
||||
void main()
|
||||
{
|
||||
bar = foo;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue