* Fixes #2005 Allow multiple units in a stage to have push_constants as long as the blocks match. Requires #2006 to be fixed to be functional. * tweaks to #2005 fix after some testing * add unit tests for push constants across multiple compilation units For #2005 * update reference output for tests that fail validation * fix uninitialized result.validationResult
		
			
				
	
	
		
			156 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
link.vk.matchingPC.0.0.frag
 | 
						|
Shader version: 450
 | 
						|
gl_FragCoord origin is upper left
 | 
						|
0:? Sequence
 | 
						|
0:15  Function Definition: main( ( global void)
 | 
						|
0:15    Function Parameters: 
 | 
						|
0:17    Sequence
 | 
						|
0:17      move second child to first child ( temp highp 4-component vector of float)
 | 
						|
0:17        'color' (layout( location=0) out highp 4-component vector of float)
 | 
						|
0:17        add ( temp highp 4-component vector of float)
 | 
						|
0:17          color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
 | 
						|
0:17            'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
0:17            Constant:
 | 
						|
0:17              0 (const int)
 | 
						|
0:17          vector-scale ( temp highp 4-component vector of float)
 | 
						|
0:17            Function Call: getColor2( ( global highp 4-component vector of float)
 | 
						|
0:17            Function Call: getScale( ( global highp float)
 | 
						|
0:?   Linker Objects
 | 
						|
0:?     'color' (layout( location=0) out highp 4-component vector of float)
 | 
						|
0:?     'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
 | 
						|
link.vk.matchingPC.0.1.frag
 | 
						|
Shader version: 450
 | 
						|
gl_FragCoord origin is upper left
 | 
						|
0:? Sequence
 | 
						|
0:11  Function Definition: getColor2( ( global highp 4-component vector of float)
 | 
						|
0:11    Function Parameters: 
 | 
						|
0:13    Sequence
 | 
						|
0:13      Branch: Return with expression
 | 
						|
0:13        color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
 | 
						|
0:13          'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
0:13          Constant:
 | 
						|
0:13            1 (const int)
 | 
						|
0:?   Linker Objects
 | 
						|
0:?     'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
 | 
						|
link.vk.matchingPC.0.2.frag
 | 
						|
Shader version: 450
 | 
						|
gl_FragCoord origin is upper left
 | 
						|
0:? Sequence
 | 
						|
0:11  Function Definition: getScale( ( global highp float)
 | 
						|
0:11    Function Parameters: 
 | 
						|
0:13    Sequence
 | 
						|
0:13      Branch: Return with expression
 | 
						|
0:13        scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
 | 
						|
0:13          'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
0:13          Constant:
 | 
						|
0:13            2 (const int)
 | 
						|
0:?   Linker Objects
 | 
						|
0:?     'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
 | 
						|
 | 
						|
Linked fragment stage:
 | 
						|
 | 
						|
 | 
						|
Shader version: 450
 | 
						|
gl_FragCoord origin is upper left
 | 
						|
0:? Sequence
 | 
						|
0:15  Function Definition: main( ( global void)
 | 
						|
0:15    Function Parameters: 
 | 
						|
0:17    Sequence
 | 
						|
0:17      move second child to first child ( temp highp 4-component vector of float)
 | 
						|
0:17        'color' (layout( location=0) out highp 4-component vector of float)
 | 
						|
0:17        add ( temp highp 4-component vector of float)
 | 
						|
0:17          color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
 | 
						|
0:17            'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
0:17            Constant:
 | 
						|
0:17              0 (const int)
 | 
						|
0:17          vector-scale ( temp highp 4-component vector of float)
 | 
						|
0:17            Function Call: getColor2( ( global highp 4-component vector of float)
 | 
						|
0:17            Function Call: getScale( ( global highp float)
 | 
						|
0:11  Function Definition: getColor2( ( global highp 4-component vector of float)
 | 
						|
0:11    Function Parameters: 
 | 
						|
0:13    Sequence
 | 
						|
0:13      Branch: Return with expression
 | 
						|
0:13        color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
 | 
						|
0:13          'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
0:13          Constant:
 | 
						|
0:13            1 (const int)
 | 
						|
0:11  Function Definition: getScale( ( global highp float)
 | 
						|
0:11    Function Parameters: 
 | 
						|
0:13    Sequence
 | 
						|
0:13      Branch: Return with expression
 | 
						|
0:13        scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
 | 
						|
0:13          'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
0:13          Constant:
 | 
						|
0:13            2 (const int)
 | 
						|
0:?   Linker Objects
 | 
						|
0:?     'color' (layout( location=0) out highp 4-component vector of float)
 | 
						|
0:?     'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
 | 
						|
 | 
						|
// Module Version 10000
 | 
						|
// Generated by (magic number): 80008
 | 
						|
// Id's are bound by 39
 | 
						|
 | 
						|
                              Capability Shader
 | 
						|
               1:             ExtInstImport  "GLSL.std.450"
 | 
						|
                              MemoryModel Logical GLSL450
 | 
						|
                              EntryPoint Fragment 4  "main" 15
 | 
						|
                              ExecutionMode 4 OriginUpperLeft
 | 
						|
                              Source GLSL 450
 | 
						|
                              Name 4  "main"
 | 
						|
                              Name 9  "getColor2("
 | 
						|
                              Name 12  "getScale("
 | 
						|
                              Name 15  "color"
 | 
						|
                              Name 16  "PushConstantBlock"
 | 
						|
                              MemberName 16(PushConstantBlock) 0  "color"
 | 
						|
                              MemberName 16(PushConstantBlock) 1  "color2"
 | 
						|
                              MemberName 16(PushConstantBlock) 2  "scale"
 | 
						|
                              Name 18  "uPC"
 | 
						|
                              Decorate 15(color) Location 0
 | 
						|
                              MemberDecorate 16(PushConstantBlock) 0 Offset 0
 | 
						|
                              MemberDecorate 16(PushConstantBlock) 1 Offset 16
 | 
						|
                              MemberDecorate 16(PushConstantBlock) 2 Offset 32
 | 
						|
                              Decorate 16(PushConstantBlock) Block
 | 
						|
               2:             TypeVoid
 | 
						|
               3:             TypeFunction 2
 | 
						|
               6:             TypeFloat 32
 | 
						|
               7:             TypeVector 6(float) 4
 | 
						|
               8:             TypeFunction 7(fvec4)
 | 
						|
              11:             TypeFunction 6(float)
 | 
						|
              14:             TypePointer Output 7(fvec4)
 | 
						|
       15(color):     14(ptr) Variable Output
 | 
						|
16(PushConstantBlock):             TypeStruct 7(fvec4) 7(fvec4) 6(float)
 | 
						|
              17:             TypePointer PushConstant 16(PushConstantBlock)
 | 
						|
         18(uPC):     17(ptr) Variable PushConstant
 | 
						|
              19:             TypeInt 32 1
 | 
						|
              20:     19(int) Constant 0
 | 
						|
              21:             TypePointer PushConstant 7(fvec4)
 | 
						|
              28:     19(int) Constant 1
 | 
						|
              33:     19(int) Constant 2
 | 
						|
              34:             TypePointer PushConstant 6(float)
 | 
						|
         4(main):           2 Function None 3
 | 
						|
               5:             Label
 | 
						|
              22:     21(ptr) AccessChain 18(uPC) 20
 | 
						|
              23:    7(fvec4) Load 22
 | 
						|
              24:    7(fvec4) FunctionCall 9(getColor2()
 | 
						|
              25:    6(float) FunctionCall 12(getScale()
 | 
						|
              26:    7(fvec4) VectorTimesScalar 24 25
 | 
						|
              27:    7(fvec4) FAdd 23 26
 | 
						|
                              Store 15(color) 27
 | 
						|
                              Return
 | 
						|
                              FunctionEnd
 | 
						|
   9(getColor2():    7(fvec4) Function None 8
 | 
						|
              10:             Label
 | 
						|
              29:     21(ptr) AccessChain 18(uPC) 28
 | 
						|
              30:    7(fvec4) Load 29
 | 
						|
                              ReturnValue 30
 | 
						|
                              FunctionEnd
 | 
						|
   12(getScale():    6(float) Function None 11
 | 
						|
              13:             Label
 | 
						|
              35:     34(ptr) AccessChain 18(uPC) 33
 | 
						|
              36:    6(float) Load 35
 | 
						|
                              ReturnValue 36
 | 
						|
                              FunctionEnd
 |