Add support for pragma STDGL invariant(all)

Fixes #2689
This commit is contained in:
Greg Fischer 2021-07-29 14:58:10 -06:00
parent 4b7b86d568
commit 715f5c6cf1
7 changed files with 111 additions and 1 deletions

View file

@ -0,0 +1,55 @@
spv.invariantAll.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 25
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 13 17
Source GLSL 450
Name 4 "main"
Name 11 "gl_PerVertex"
MemberName 11(gl_PerVertex) 0 "gl_Position"
MemberName 11(gl_PerVertex) 1 "gl_PointSize"
MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
Name 13 ""
Name 17 "v"
MemberDecorate 11(gl_PerVertex) 0 Invariant
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 11(gl_PerVertex) 1 Invariant
MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 11(gl_PerVertex) 2 Invariant
MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 11(gl_PerVertex) 3 Invariant
MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 11(gl_PerVertex) Block
Decorate 17(v) Location 0
Decorate 17(v) Invariant
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 1
10: TypeArray 6(float) 9
11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
12: TypePointer Output 11(gl_PerVertex)
13: 12(ptr) Variable Output
14: TypeInt 32 1
15: 14(int) Constant 0
16: TypePointer Output 6(float)
17(v): 16(ptr) Variable Output
20: 6(float) Constant 0
21: 6(float) Constant 1065353216
23: TypePointer Output 7(fvec4)
4(main): 2 Function None 3
5: Label
18: 6(float) Load 17(v)
19: 6(float) Load 17(v)
22: 7(fvec4) CompositeConstruct 18 19 20 21
24: 23(ptr) AccessChain 13 15
Store 24 22
Return
FunctionEnd

View file

@ -0,0 +1,10 @@
#version 450 core
#pragma STDGL invariant(all)
layout(location=0) out highp float v;
void main()
{
gl_Position = vec4(v, v, 0, 1);
}