HLSL: Emulate write-to-output on return-from-entry-point, for return value.
This fixes issue #487 and #480. It also correctly handles output parameters from the entry point.
This commit is contained in:
parent
81cd764b5f
commit
6a70eb7161
91 changed files with 5158 additions and 4130 deletions
|
|
@ -22,8 +22,11 @@ gl_FragCoord origin is upper left
|
|||
0:40 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
|
||||
0:40 Constant:
|
||||
0:40 7 (const int)
|
||||
0:42 Branch: Return with expression
|
||||
0:42 'input' (in 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (out 4-component vector of float)
|
||||
0:42 'input' (in 4-component vector of float)
|
||||
0:42 Branch: Return
|
||||
0:? Linker Objects
|
||||
0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
|
||||
0:? 's2' (global structure{temp 4-component vector of float i})
|
||||
|
|
@ -54,8 +57,11 @@ gl_FragCoord origin is upper left
|
|||
0:40 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
|
||||
0:40 Constant:
|
||||
0:40 7 (const int)
|
||||
0:42 Branch: Return with expression
|
||||
0:42 'input' (in 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (out 4-component vector of float)
|
||||
0:42 'input' (in 4-component vector of float)
|
||||
0:42 Branch: Return
|
||||
0:? Linker Objects
|
||||
0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
|
||||
0:? 's2' (global structure{temp 4-component vector of float i})
|
||||
|
|
@ -65,12 +71,12 @@ gl_FragCoord origin is upper left
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 44
|
||||
// Id's are bound by 46
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 34
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 34 36
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 8 "FS"
|
||||
|
|
@ -89,21 +95,22 @@ gl_FragCoord origin is upper left
|
|||
MemberName 25 6 "ff3"
|
||||
MemberName 25 7 "ff4"
|
||||
Name 27 "s4"
|
||||
Name 34 "input"
|
||||
Name 37 "myS"
|
||||
MemberName 37(myS) 0 "b"
|
||||
MemberName 37(myS) 1 "c"
|
||||
MemberName 37(myS) 2 "a"
|
||||
MemberName 37(myS) 3 "d"
|
||||
Name 39 "s1"
|
||||
Name 42 "ff5"
|
||||
Name 43 "ff6"
|
||||
Name 34 "@entryPointOutput"
|
||||
Name 36 "input"
|
||||
Name 39 "myS"
|
||||
MemberName 39(myS) 0 "b"
|
||||
MemberName 39(myS) 1 "c"
|
||||
MemberName 39(myS) 2 "a"
|
||||
MemberName 39(myS) 3 "d"
|
||||
Name 41 "s1"
|
||||
Name 44 "ff5"
|
||||
Name 45 "ff6"
|
||||
MemberDecorate 25 4 BuiltIn FrontFacing
|
||||
MemberDecorate 25 7 BuiltIn FragCoord
|
||||
Decorate 42(ff5) Offset 20
|
||||
Decorate 42(ff5) Binding 5
|
||||
Decorate 43(ff6) Offset 36
|
||||
Decorate 43(ff6) Binding 8
|
||||
Decorate 44(ff5) Offset 20
|
||||
Decorate 44(ff5) Binding 5
|
||||
Decorate 45(ff6) Offset 36
|
||||
Decorate 45(ff6) Binding 8
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeBool
|
||||
|
|
@ -123,15 +130,17 @@ gl_FragCoord origin is upper left
|
|||
27(s4): 26(ptr) Variable Private
|
||||
28: 22(int) Constant 7
|
||||
29: TypePointer Private 18(fvec4)
|
||||
33: TypePointer Input 18(fvec4)
|
||||
34(input): 33(ptr) Variable Input
|
||||
37(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
|
||||
38: TypePointer Private 37(myS)
|
||||
39(s1): 38(ptr) Variable Private
|
||||
40: TypeVector 17(float) 3
|
||||
41: TypePointer Private 40(fvec3)
|
||||
42(ff5): 41(ptr) Variable Private
|
||||
43(ff6): 41(ptr) Variable Private
|
||||
33: TypePointer Output 18(fvec4)
|
||||
34(@entryPointOutput): 33(ptr) Variable Output
|
||||
35: TypePointer Input 18(fvec4)
|
||||
36(input): 35(ptr) Variable Input
|
||||
39(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
|
||||
40: TypePointer Private 39(myS)
|
||||
41(s1): 40(ptr) Variable Private
|
||||
42: TypeVector 17(float) 3
|
||||
43: TypePointer Private 42(fvec3)
|
||||
44(ff5): 43(ptr) Variable Private
|
||||
45(ff6): 43(ptr) Variable Private
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
10(s3): 9(ptr) Variable Function
|
||||
|
|
@ -145,6 +154,7 @@ gl_FragCoord origin is upper left
|
|||
31: 18(fvec4) Load 30
|
||||
32: 29(ptr) AccessChain 21(s2) 23
|
||||
Store 32 31
|
||||
35: 18(fvec4) Load 34(input)
|
||||
ReturnValue 35
|
||||
37: 18(fvec4) Load 36(input)
|
||||
Store 34(@entryPointOutput) 37
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue