Do true SPV type check for function array arg linkage
Previous check was missing type difference between uniform array actual arg with stride decoration and the formal arg without. Now does logical or component-wise copy where needed. Fixes #2637
This commit is contained in:
parent
e71278cc92
commit
11c24e9adb
8 changed files with 308 additions and 100 deletions
74
Test/baseResults/spv.1.4.funcall.array.frag.out
Normal file
74
Test/baseResults/spv.1.4.funcall.array.frag.out
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
spv.1.4.funcall.array.frag
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 42
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 27 31
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 16 "f(vf4[9];i1;"
|
||||
Name 14 "a"
|
||||
Name 15 "ix"
|
||||
Name 20 "indexable"
|
||||
Name 27 "color"
|
||||
Name 29 "ub"
|
||||
MemberName 29(ub) 0 "u"
|
||||
Name 31 ""
|
||||
Name 37 "arg"
|
||||
Name 40 "param"
|
||||
Decorate 27(color) Location 0
|
||||
Decorate 28 ArrayStride 16
|
||||
MemberDecorate 29(ub) 0 Offset 0
|
||||
Decorate 29(ub) Block
|
||||
Decorate 31 DescriptorSet 0
|
||||
Decorate 31 Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeInt 32 0
|
||||
9: 8(int) Constant 9
|
||||
10: TypeArray 7(fvec4) 9
|
||||
11: TypeInt 32 1
|
||||
12: TypePointer Function 11(int)
|
||||
13: TypeFunction 7(fvec4) 10 12(ptr)
|
||||
19: TypePointer Function 10
|
||||
21: TypePointer Function 7(fvec4)
|
||||
26: TypePointer Output 7(fvec4)
|
||||
27(color): 26(ptr) Variable Output
|
||||
28: TypeArray 7(fvec4) 9
|
||||
29(ub): TypeStruct 28
|
||||
30: TypePointer Uniform 29(ub)
|
||||
31: 30(ptr) Variable Uniform
|
||||
32: 11(int) Constant 0
|
||||
33: TypePointer Uniform 28
|
||||
36: 11(int) Constant 2
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
37(arg): 19(ptr) Variable Function
|
||||
40(param): 12(ptr) Variable Function
|
||||
34: 33(ptr) AccessChain 31 32
|
||||
35: 28 Load 34
|
||||
38: 10 CopyLogical 35
|
||||
Store 37(arg) 38
|
||||
39: 10 Load 37(arg)
|
||||
Store 40(param) 36
|
||||
41: 7(fvec4) FunctionCall 16(f(vf4[9];i1;) 39 40(param)
|
||||
Store 27(color) 41
|
||||
Return
|
||||
FunctionEnd
|
||||
16(f(vf4[9];i1;): 7(fvec4) Function None 13
|
||||
14(a): 10 FunctionParameter
|
||||
15(ix): 12(ptr) FunctionParameter
|
||||
17: Label
|
||||
20(indexable): 19(ptr) Variable Function
|
||||
18: 11(int) Load 15(ix)
|
||||
Store 20(indexable) 14(a)
|
||||
22: 21(ptr) AccessChain 20(indexable) 18
|
||||
23: 7(fvec4) Load 22
|
||||
ReturnValue 23
|
||||
FunctionEnd
|
||||
Loading…
Add table
Add a link
Reference in a new issue