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
		
			
				
	
	
		
			111 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
spv.1.4.OpCopyLogical.funcall.frag
 | 
						|
// Module Version 10400
 | 
						|
// Generated by (magic number): 8000a
 | 
						|
// Id's are bound by 59
 | 
						|
 | 
						|
                              Capability Shader
 | 
						|
               1:             ExtInstImport  "GLSL.std.450"
 | 
						|
                              MemoryModel Logical GLSL450
 | 
						|
                              EntryPoint Fragment 4  "main" 25 36
 | 
						|
                              ExecutionMode 4 OriginUpperLeft
 | 
						|
                              Source GLSL 450
 | 
						|
                              Name 4  "main"
 | 
						|
                              Name 9  "S"
 | 
						|
                              MemberName 9(S) 0  "m"
 | 
						|
                              Name 12  "fooConst(struct-S-mf441;"
 | 
						|
                              Name 11  "s"
 | 
						|
                              Name 17  "foo(struct-S-mf441;"
 | 
						|
                              Name 16  "s"
 | 
						|
                              Name 20  "fooOut(struct-S-mf441;"
 | 
						|
                              Name 19  "s"
 | 
						|
                              Name 22  "S"
 | 
						|
                              MemberName 22(S) 0  "m"
 | 
						|
                              Name 23  "blockName"
 | 
						|
                              MemberName 23(blockName) 0  "s1"
 | 
						|
                              Name 25  ""
 | 
						|
                              Name 31  "arg"
 | 
						|
                              Name 36  "s2"
 | 
						|
                              Name 39  "param"
 | 
						|
                              Name 44  "param"
 | 
						|
                              Name 47  "param"
 | 
						|
                              Name 55  "param"
 | 
						|
                              MemberDecorate 22(S) 0 ColMajor
 | 
						|
                              MemberDecorate 22(S) 0 Offset 0
 | 
						|
                              MemberDecorate 22(S) 0 MatrixStride 16
 | 
						|
                              MemberDecorate 23(blockName) 0 Offset 0
 | 
						|
                              Decorate 23(blockName) Block
 | 
						|
                              Decorate 25 DescriptorSet 0
 | 
						|
                              Decorate 25 Binding 0
 | 
						|
               2:             TypeVoid
 | 
						|
               3:             TypeFunction 2
 | 
						|
               6:             TypeFloat 32
 | 
						|
               7:             TypeVector 6(float) 4
 | 
						|
               8:             TypeMatrix 7(fvec4) 4
 | 
						|
            9(S):             TypeStruct 8
 | 
						|
              10:             TypeFunction 2 9(S)
 | 
						|
              14:             TypePointer Function 9(S)
 | 
						|
              15:             TypeFunction 2 14(ptr)
 | 
						|
           22(S):             TypeStruct 8
 | 
						|
   23(blockName):             TypeStruct 22(S)
 | 
						|
              24:             TypePointer StorageBuffer 23(blockName)
 | 
						|
              25:     24(ptr) Variable StorageBuffer
 | 
						|
              26:             TypeInt 32 1
 | 
						|
              27:     26(int) Constant 0
 | 
						|
              28:             TypePointer StorageBuffer 22(S)
 | 
						|
              35:             TypePointer Private 9(S)
 | 
						|
          36(s2):     35(ptr) Variable Private
 | 
						|
         4(main):           2 Function None 3
 | 
						|
               5:             Label
 | 
						|
         31(arg):     14(ptr) Variable Function
 | 
						|
       39(param):     14(ptr) Variable Function
 | 
						|
       44(param):     14(ptr) Variable Function
 | 
						|
       47(param):     14(ptr) Variable Function
 | 
						|
       55(param):     14(ptr) Variable Function
 | 
						|
              29:     28(ptr) AccessChain 25 27
 | 
						|
              30:       22(S) Load 29
 | 
						|
              32:        9(S) CopyLogical 30
 | 
						|
                              Store 31(arg) 32
 | 
						|
              33:        9(S) Load 31(arg)
 | 
						|
              34:           2 FunctionCall 12(fooConst(struct-S-mf441;) 33
 | 
						|
              37:        9(S) Load 36(s2)
 | 
						|
              38:           2 FunctionCall 12(fooConst(struct-S-mf441;) 37
 | 
						|
              40:     28(ptr) AccessChain 25 27
 | 
						|
              41:       22(S) Load 40
 | 
						|
              42:        9(S) CopyLogical 41
 | 
						|
                              Store 39(param) 42
 | 
						|
              43:           2 FunctionCall 17(foo(struct-S-mf441;) 39(param)
 | 
						|
              45:        9(S) Load 36(s2)
 | 
						|
                              Store 44(param) 45
 | 
						|
              46:           2 FunctionCall 17(foo(struct-S-mf441;) 44(param)
 | 
						|
              48:     28(ptr) AccessChain 25 27
 | 
						|
              49:       22(S) Load 48
 | 
						|
              50:        9(S) CopyLogical 49
 | 
						|
                              Store 47(param) 50
 | 
						|
              51:           2 FunctionCall 20(fooOut(struct-S-mf441;) 47(param)
 | 
						|
              52:        9(S) Load 47(param)
 | 
						|
              53:     28(ptr) AccessChain 25 27
 | 
						|
              54:       22(S) CopyLogical 52
 | 
						|
                              Store 53 54
 | 
						|
              56:        9(S) Load 36(s2)
 | 
						|
                              Store 55(param) 56
 | 
						|
              57:           2 FunctionCall 20(fooOut(struct-S-mf441;) 55(param)
 | 
						|
              58:        9(S) Load 55(param)
 | 
						|
                              Store 36(s2) 58
 | 
						|
                              Return
 | 
						|
                              FunctionEnd
 | 
						|
12(fooConst(struct-S-mf441;):           2 Function None 10
 | 
						|
           11(s):        9(S) FunctionParameter
 | 
						|
              13:             Label
 | 
						|
                              Return
 | 
						|
                              FunctionEnd
 | 
						|
17(foo(struct-S-mf441;):           2 Function None 15
 | 
						|
           16(s):     14(ptr) FunctionParameter
 | 
						|
              18:             Label
 | 
						|
                              Return
 | 
						|
                              FunctionEnd
 | 
						|
20(fooOut(struct-S-mf441;):           2 Function None 15
 | 
						|
           19(s):     14(ptr) FunctionParameter
 | 
						|
              21:             Label
 | 
						|
                              Return
 | 
						|
                              FunctionEnd
 |