mirror of
https://github.com/KhronosGroup/glslang
synced 2024-09-19 20:29:54 +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)
|
if (language != EShLangTessControl)
|
||||||
qualifier.patch = false;
|
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) {
|
switch (qualifier.builtIn) {
|
||||||
case EbvFragDepth:
|
case EbvFragDepth:
|
||||||
intermediate.setDepthReplacing();
|
intermediate.setDepthReplacing();
|
||||||
|
@ -216,6 +216,7 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
{"hlsl.emptystructreturn.tesc", "main"},
|
{"hlsl.emptystructreturn.tesc", "main"},
|
||||||
{"hlsl.emptystruct.init.vert", "main"},
|
{"hlsl.emptystruct.init.vert", "main"},
|
||||||
{"hlsl.entry-in.frag", "PixelShaderFunction"},
|
{"hlsl.entry-in.frag", "PixelShaderFunction"},
|
||||||
|
{"hlsl.entry-inout.vert", "main"},
|
||||||
{"hlsl.entry-out.frag", "PixelShaderFunction"},
|
{"hlsl.entry-out.frag", "PixelShaderFunction"},
|
||||||
{"hlsl.fraggeom.frag", "main"},
|
{"hlsl.fraggeom.frag", "main"},
|
||||||
{"hlsl.float1.frag", "PixelShaderFunction"},
|
{"hlsl.float1.frag", "PixelShaderFunction"},
|
||||||
|
Loading…
Reference in New Issue
Block a user