mirror of
https://github.com/KhronosGroup/glslang
synced 2024-09-19 12:19:53 +00:00
Fix HLSL built-in passthrough via inout
This commit is contained in:
parent
2518af09c8
commit
2c4348f064
137
Test/baseResults/hlsl.entry-inout.vert.out
Normal file
137
Test/baseResults/hlsl.entry-inout.vert.out
Normal file
@ -0,0 +1,137 @@
|
||||
hlsl.entry-inout.vert
|
||||
Shader version: 500
|
||||
0:? Sequence
|
||||
0:1 Function Definition: @main(vf4;vf2; ( temp void)
|
||||
0:1 Function Parameters:
|
||||
0:1 'pos' ( inout 4-component vector of float)
|
||||
0:1 'uv' ( inout 2-component vector of float)
|
||||
0:1 Function Definition: main( ( temp void)
|
||||
0:1 Function Parameters:
|
||||
0:? Sequence
|
||||
0:1 move second child to first child ( temp 4-component vector of float)
|
||||
0:? 'pos' ( temp 4-component vector of float)
|
||||
0:? 'pos' (layout( location=0) in 4-component vector of float)
|
||||
0:1 move second child to first child ( temp 2-component vector of float)
|
||||
0:? 'uv' ( temp 2-component vector of float)
|
||||
0:? 'uv' (layout( location=1) in 2-component vector of float)
|
||||
0:1 Function Call: @main(vf4;vf2; ( temp void)
|
||||
0:? 'pos' ( temp 4-component vector of float)
|
||||
0:? 'uv' ( temp 2-component vector of float)
|
||||
0:1 move second child to first child ( temp 4-component vector of float)
|
||||
0:? 'pos' ( out 4-component vector of float Position)
|
||||
0:? 'pos' ( temp 4-component vector of float)
|
||||
0:1 move second child to first child ( temp 2-component vector of float)
|
||||
0:? 'uv' (layout( location=0) out 2-component vector of float)
|
||||
0:? 'uv' ( temp 2-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'pos' (layout( location=0) in 4-component vector of float)
|
||||
0:? 'uv' (layout( location=1) in 2-component vector of float)
|
||||
0:? 'pos' ( out 4-component vector of float Position)
|
||||
0:? 'uv' (layout( location=0) out 2-component vector of float)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
0:? Sequence
|
||||
0:1 Function Definition: @main(vf4;vf2; ( temp void)
|
||||
0:1 Function Parameters:
|
||||
0:1 'pos' ( inout 4-component vector of float)
|
||||
0:1 'uv' ( inout 2-component vector of float)
|
||||
0:1 Function Definition: main( ( temp void)
|
||||
0:1 Function Parameters:
|
||||
0:? Sequence
|
||||
0:1 move second child to first child ( temp 4-component vector of float)
|
||||
0:? 'pos' ( temp 4-component vector of float)
|
||||
0:? 'pos' (layout( location=0) in 4-component vector of float)
|
||||
0:1 move second child to first child ( temp 2-component vector of float)
|
||||
0:? 'uv' ( temp 2-component vector of float)
|
||||
0:? 'uv' (layout( location=1) in 2-component vector of float)
|
||||
0:1 Function Call: @main(vf4;vf2; ( temp void)
|
||||
0:? 'pos' ( temp 4-component vector of float)
|
||||
0:? 'uv' ( temp 2-component vector of float)
|
||||
0:1 move second child to first child ( temp 4-component vector of float)
|
||||
0:? 'pos' ( out 4-component vector of float Position)
|
||||
0:? 'pos' ( temp 4-component vector of float)
|
||||
0:1 move second child to first child ( temp 2-component vector of float)
|
||||
0:? 'uv' (layout( location=0) out 2-component vector of float)
|
||||
0:? 'uv' ( temp 2-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'pos' (layout( location=0) in 4-component vector of float)
|
||||
0:? 'uv' (layout( location=1) in 2-component vector of float)
|
||||
0:? 'pos' ( out 4-component vector of float Position)
|
||||
0:? 'uv' (layout( location=0) out 2-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 37
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main" 18 22 32 35
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
Name 14 "@main(vf4;vf2;"
|
||||
Name 12 "pos"
|
||||
Name 13 "uv"
|
||||
Name 16 "pos"
|
||||
Name 18 "pos"
|
||||
Name 20 "uv"
|
||||
Name 22 "uv"
|
||||
Name 24 "param"
|
||||
Name 26 "param"
|
||||
Name 32 "pos"
|
||||
Name 35 "uv"
|
||||
Decorate 18(pos) Location 0
|
||||
Decorate 22(uv) Location 1
|
||||
Decorate 32(pos) BuiltIn Position
|
||||
Decorate 35(uv) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
9: TypeVector 6(float) 2
|
||||
10: TypePointer Function 9(fvec2)
|
||||
11: TypeFunction 2 8(ptr) 10(ptr)
|
||||
17: TypePointer Input 7(fvec4)
|
||||
18(pos): 17(ptr) Variable Input
|
||||
21: TypePointer Input 9(fvec2)
|
||||
22(uv): 21(ptr) Variable Input
|
||||
31: TypePointer Output 7(fvec4)
|
||||
32(pos): 31(ptr) Variable Output
|
||||
34: TypePointer Output 9(fvec2)
|
||||
35(uv): 34(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
16(pos): 8(ptr) Variable Function
|
||||
20(uv): 10(ptr) Variable Function
|
||||
24(param): 8(ptr) Variable Function
|
||||
26(param): 10(ptr) Variable Function
|
||||
19: 7(fvec4) Load 18(pos)
|
||||
Store 16(pos) 19
|
||||
23: 9(fvec2) Load 22(uv)
|
||||
Store 20(uv) 23
|
||||
25: 7(fvec4) Load 16(pos)
|
||||
Store 24(param) 25
|
||||
27: 9(fvec2) Load 20(uv)
|
||||
Store 26(param) 27
|
||||
28: 2 FunctionCall 14(@main(vf4;vf2;) 24(param) 26(param)
|
||||
29: 7(fvec4) Load 24(param)
|
||||
Store 16(pos) 29
|
||||
30: 9(fvec2) Load 26(param)
|
||||
Store 20(uv) 30
|
||||
33: 7(fvec4) Load 16(pos)
|
||||
Store 32(pos) 33
|
||||
36: 9(fvec2) Load 20(uv)
|
||||
Store 35(uv) 36
|
||||
Return
|
||||
FunctionEnd
|
||||
14(@main(vf4;vf2;): 2 Function None 11
|
||||
12(pos): 8(ptr) FunctionParameter
|
||||
13(uv): 10(ptr) FunctionParameter
|
||||
15: Label
|
||||
Return
|
||||
FunctionEnd
|
1
Test/hlsl.entry-inout.vert
Normal file
1
Test/hlsl.entry-inout.vert
Normal file
@ -0,0 +1 @@
|
||||
void main(inout float4 pos : SV_Position, inout float2 uv : TEXCOORD0) {}
|
@ -9658,6 +9658,10 @@ void HlslParseContext::correctOutput(TQualifier& qualifier)
|
||||
if (language != EShLangTessControl)
|
||||
qualifier.patch = false;
|
||||
|
||||
// Fixes Test/hlsl.entry-inout.vert (SV_Position will not become a varying).
|
||||
if (qualifier.builtIn == EbvNone)
|
||||
qualifier.builtIn = qualifier.declaredBuiltIn;
|
||||
|
||||
switch (qualifier.builtIn) {
|
||||
case EbvFragDepth:
|
||||
intermediate.setDepthReplacing();
|
||||
|
@ -216,6 +216,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
{"hlsl.emptystructreturn.tesc", "main"},
|
||||
{"hlsl.emptystruct.init.vert", "main"},
|
||||
{"hlsl.entry-in.frag", "PixelShaderFunction"},
|
||||
{"hlsl.entry-inout.vert", "main"},
|
||||
{"hlsl.entry-out.frag", "PixelShaderFunction"},
|
||||
{"hlsl.fraggeom.frag", "main"},
|
||||
{"hlsl.float1.frag", "PixelShaderFunction"},
|
||||
|
Loading…
Reference in New Issue
Block a user