 bc17b0a96a
			
		
	
	
		bc17b0a96a
		
	
	
	
	
		
			
			Basic (component) type conversion was done, but checking that the composite was correct was not being done. Fixes issue #353.
		
			
				
	
	
		
			416 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			416 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| functionSemantics.frag
 | |
| Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
 | |
| ERROR: 0:74: 'return' : cannot convert return value to function return type 
 | |
| WARNING: 0:74: 'return' : type conversion on return values was not explicitly allowed until version 420 
 | |
| ERROR: 1 compilation errors.  No code generated.
 | |
| 
 | |
| 
 | |
| Shader version: 400
 | |
| ERROR: node is still EOpNull!
 | |
| 0:5  Function Definition: foo(i1;i1;i1;i1;i1;i1; (global int)
 | |
| 0:5    Function Parameters: 
 | |
| 0:5      'a' (in int)
 | |
| 0:5      'b' (const (read only) int)
 | |
| 0:5      'c' (in int)
 | |
| 0:5      'd' (const (read only) int)
 | |
| 0:5      'e' (out int)
 | |
| 0:5      'f' (inout int)
 | |
| 0:7    Sequence
 | |
| 0:7      Sequence
 | |
| 0:7        move second child to first child (temp int)
 | |
| 0:7          'sum' (temp int)
 | |
| 0:7          add (temp int)
 | |
| 0:7            add (temp int)
 | |
| 0:7              add (temp int)
 | |
| 0:7                add (temp int)
 | |
| 0:7                  'a' (in int)
 | |
| 0:7                  'b' (const (read only) int)
 | |
| 0:7                'c' (in int)
 | |
| 0:7              'd' (const (read only) int)
 | |
| 0:7            'f' (inout int)
 | |
| 0:10      multiply second child into first child (temp int)
 | |
| 0:10        'a' (in int)
 | |
| 0:10        Constant:
 | |
| 0:10          64 (const int)
 | |
| 0:12      multiply second child into first child (temp int)
 | |
| 0:12        'c' (in int)
 | |
| 0:12        Constant:
 | |
| 0:12          64 (const int)
 | |
| 0:14      move second child to first child (temp int)
 | |
| 0:14        'e' (out int)
 | |
| 0:14        Constant:
 | |
| 0:14          1024 (const int)
 | |
| 0:15      multiply second child into first child (temp int)
 | |
| 0:15        'f' (inout int)
 | |
| 0:15        Constant:
 | |
| 0:15          64 (const int)
 | |
| 0:17      add second child into first child (temp int)
 | |
| 0:17        'sum' (temp int)
 | |
| 0:17        add (temp int)
 | |
| 0:17          add (temp int)
 | |
| 0:17            add (temp int)
 | |
| 0:17              add (temp int)
 | |
| 0:17                add (temp int)
 | |
| 0:17                  'a' (in int)
 | |
| 0:17                  component-wise multiply (temp int)
 | |
| 0:17                    Constant:
 | |
| 0:17                      64 (const int)
 | |
| 0:17                    'b' (const (read only) int)
 | |
| 0:17                'c' (in int)
 | |
| 0:17              component-wise multiply (temp int)
 | |
| 0:17                Constant:
 | |
| 0:17                  64 (const int)
 | |
| 0:17                'd' (const (read only) int)
 | |
| 0:17            'e' (out int)
 | |
| 0:17          'f' (inout int)
 | |
| 0:20      Branch: Return with expression
 | |
| 0:20        'sum' (temp int)
 | |
| 0:23  Function Definition: foo2(f1;vf3;i1; (global int)
 | |
| 0:23    Function Parameters: 
 | |
| 0:23      'a' (in float)
 | |
| 0:23      'b' (in 3-component vector of float)
 | |
| 0:23      'r' (out int)
 | |
| 0:25    Sequence
 | |
| 0:25      move second child to first child (temp int)
 | |
| 0:25        'r' (out int)
 | |
| 0:25        Convert float to int (temp int)
 | |
| 0:25          component-wise multiply (temp float)
 | |
| 0:25            Constant:
 | |
| 0:25              3.000000
 | |
| 0:25            'a' (in float)
 | |
| 0:26      Branch: Return with expression
 | |
| 0:26        Convert float to int (temp int)
 | |
| 0:26          component-wise multiply (temp float)
 | |
| 0:26            Constant:
 | |
| 0:26              5.000000
 | |
| 0:26            direct index (temp float)
 | |
| 0:26              'b' (in 3-component vector of float)
 | |
| 0:26              Constant:
 | |
| 0:26                1 (const int)
 | |
| 0:29  Function Definition: foo3( (global int)
 | |
| 0:29    Function Parameters: 
 | |
| 0:31    Sequence
 | |
| 0:31      Test condition and select (temp void)
 | |
| 0:31        Condition
 | |
| 0:31        Compare Greater Than (temp bool)
 | |
| 0:31          'u' (uniform float)
 | |
| 0:31          Constant:
 | |
| 0:31            3.200000
 | |
| 0:31        true case
 | |
| 0:32        Sequence
 | |
| 0:32          Branch: Kill
 | |
| 0:33          Branch: Return with expression
 | |
| 0:33            Constant:
 | |
| 0:33              1000000 (const int)
 | |
| 0:36      Branch: Return with expression
 | |
| 0:36        Constant:
 | |
| 0:36          2000000 (const int)
 | |
| 0:39  Function Definition: main( (global void)
 | |
| 0:39    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:42      Sequence
 | |
| 0:42        move second child to first child (temp int)
 | |
| 0:42          't' (temp int)
 | |
| 0:42          Constant:
 | |
| 0:42            2 (const int)
 | |
| 0:46      move second child to first child (temp int)
 | |
| 0:46        direct index (temp int)
 | |
| 0:46          t: direct index for structure (temp 4-component vector of int)
 | |
| 0:46            'f' (temp structure{temp 4-component vector of int t})
 | |
| 0:46            Constant:
 | |
| 0:46              0 (const int)
 | |
| 0:46          Constant:
 | |
| 0:46            1 (const int)
 | |
| 0:46        Constant:
 | |
| 0:46          32 (const int)
 | |
| 0:49      Sequence
 | |
| 0:49        move second child to first child (temp int)
 | |
| 0:49          'color' (temp int)
 | |
| 0:49          Function Call: foo(i1;i1;i1;i1;i1;i1; (global int)
 | |
| 0:49            Constant:
 | |
| 0:49              1 (const int)
 | |
| 0:49            Constant:
 | |
| 0:49              2 (const int)
 | |
| 0:49            add (temp int)
 | |
| 0:49              't' (temp int)
 | |
| 0:49              't' (temp int)
 | |
| 0:49            Constant:
 | |
| 0:49              8 (const int)
 | |
| 0:49            'e' (temp int)
 | |
| 0:49            direct index (temp int)
 | |
| 0:49              t: direct index for structure (temp 4-component vector of int)
 | |
| 0:49                'f' (temp structure{temp 4-component vector of int t})
 | |
| 0:49                Constant:
 | |
| 0:49                  0 (const int)
 | |
| 0:49              Constant:
 | |
| 0:49                1 (const int)
 | |
| 0:51      add second child into first child (temp int)
 | |
| 0:51        'color' (temp int)
 | |
| 0:51        component-wise multiply (temp int)
 | |
| 0:51          Constant:
 | |
| 0:51            128 (const int)
 | |
| 0:51          add (temp int)
 | |
| 0:51            'e' (temp int)
 | |
| 0:51            direct index (temp int)
 | |
| 0:51              t: direct index for structure (temp 4-component vector of int)
 | |
| 0:51                'f' (temp structure{temp 4-component vector of int t})
 | |
| 0:51                Constant:
 | |
| 0:51                  0 (const int)
 | |
| 0:51              Constant:
 | |
| 0:51                1 (const int)
 | |
| 0:57      move second child to first child (temp float)
 | |
| 0:57        'ret' (temp float)
 | |
| 0:57        Convert int to float (temp float)
 | |
| 0:57          Comma (global int)
 | |
| 0:57            move second child to first child (temp int)
 | |
| 0:57              'tempReturn' (global int)
 | |
| 0:57              Function Call: foo2(f1;vf3;i1; (global int)
 | |
| 0:57                Constant:
 | |
| 0:57                  4.000000
 | |
| 0:57                Constant:
 | |
| 0:57                  1.000000
 | |
| 0:57                  2.000000
 | |
| 0:57                  3.000000
 | |
| 0:57                'tempArg' (temp int)
 | |
| 0:57            move second child to first child (temp float)
 | |
| 0:57              'arg' (temp float)
 | |
| 0:57              Convert int to float (temp float)
 | |
| 0:57                'tempArg' (temp int)
 | |
| 0:57            'tempReturn' (global int)
 | |
| 0:58      add second child into first child (temp int)
 | |
| 0:58        'color' (temp int)
 | |
| 0:58        Convert float to int (temp int)
 | |
| 0:58          add (temp float)
 | |
| 0:58            'ret' (temp float)
 | |
| 0:58            'arg' (temp float)
 | |
| 0:60      add second child into first child (temp int)
 | |
| 0:60        'color' (temp int)
 | |
| 0:60        Function Call: foo3( (global int)
 | |
| 0:62      move second child to first child (temp 4-component vector of float)
 | |
| 0:62        'gl_FragColor' (fragColor 4-component vector of float FragColor)
 | |
| 0:62        Construct vec4 (temp 4-component vector of float)
 | |
| 0:62          Convert int to float (temp float)
 | |
| 0:62            'color' (temp int)
 | |
| 0:66  Function Definition: aggCall( (global void)
 | |
| 0:66    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:69      Function Call: m(vf2; (global 3-component vector of float)
 | |
| 0:69        Convert int to float (temp 2-component vector of float)
 | |
| 0:69          Construct ivec2 (temp 2-component vector of int)
 | |
| 0:69            Convert float to int (temp int)
 | |
| 0:69              'F' (temp float)
 | |
| 0:72  Function Definition: badConv( (global 4-component vector of float)
 | |
| 0:72    Function Parameters: 
 | |
| 0:74    Sequence
 | |
| 0:74      Branch: Return with expression
 | |
| 0:74        'u' (uniform float)
 | |
| 0:?   Linker Objects
 | |
| 0:?     'u' (uniform float)
 | |
| 
 | |
| 
 | |
| Linked fragment stage:
 | |
| 
 | |
| 
 | |
| Shader version: 400
 | |
| ERROR: node is still EOpNull!
 | |
| 0:5  Function Definition: foo(i1;i1;i1;i1;i1;i1; (global int)
 | |
| 0:5    Function Parameters: 
 | |
| 0:5      'a' (in int)
 | |
| 0:5      'b' (const (read only) int)
 | |
| 0:5      'c' (in int)
 | |
| 0:5      'd' (const (read only) int)
 | |
| 0:5      'e' (out int)
 | |
| 0:5      'f' (inout int)
 | |
| 0:7    Sequence
 | |
| 0:7      Sequence
 | |
| 0:7        move second child to first child (temp int)
 | |
| 0:7          'sum' (temp int)
 | |
| 0:7          add (temp int)
 | |
| 0:7            add (temp int)
 | |
| 0:7              add (temp int)
 | |
| 0:7                add (temp int)
 | |
| 0:7                  'a' (in int)
 | |
| 0:7                  'b' (const (read only) int)
 | |
| 0:7                'c' (in int)
 | |
| 0:7              'd' (const (read only) int)
 | |
| 0:7            'f' (inout int)
 | |
| 0:10      multiply second child into first child (temp int)
 | |
| 0:10        'a' (in int)
 | |
| 0:10        Constant:
 | |
| 0:10          64 (const int)
 | |
| 0:12      multiply second child into first child (temp int)
 | |
| 0:12        'c' (in int)
 | |
| 0:12        Constant:
 | |
| 0:12          64 (const int)
 | |
| 0:14      move second child to first child (temp int)
 | |
| 0:14        'e' (out int)
 | |
| 0:14        Constant:
 | |
| 0:14          1024 (const int)
 | |
| 0:15      multiply second child into first child (temp int)
 | |
| 0:15        'f' (inout int)
 | |
| 0:15        Constant:
 | |
| 0:15          64 (const int)
 | |
| 0:17      add second child into first child (temp int)
 | |
| 0:17        'sum' (temp int)
 | |
| 0:17        add (temp int)
 | |
| 0:17          add (temp int)
 | |
| 0:17            add (temp int)
 | |
| 0:17              add (temp int)
 | |
| 0:17                add (temp int)
 | |
| 0:17                  'a' (in int)
 | |
| 0:17                  component-wise multiply (temp int)
 | |
| 0:17                    Constant:
 | |
| 0:17                      64 (const int)
 | |
| 0:17                    'b' (const (read only) int)
 | |
| 0:17                'c' (in int)
 | |
| 0:17              component-wise multiply (temp int)
 | |
| 0:17                Constant:
 | |
| 0:17                  64 (const int)
 | |
| 0:17                'd' (const (read only) int)
 | |
| 0:17            'e' (out int)
 | |
| 0:17          'f' (inout int)
 | |
| 0:20      Branch: Return with expression
 | |
| 0:20        'sum' (temp int)
 | |
| 0:23  Function Definition: foo2(f1;vf3;i1; (global int)
 | |
| 0:23    Function Parameters: 
 | |
| 0:23      'a' (in float)
 | |
| 0:23      'b' (in 3-component vector of float)
 | |
| 0:23      'r' (out int)
 | |
| 0:25    Sequence
 | |
| 0:25      move second child to first child (temp int)
 | |
| 0:25        'r' (out int)
 | |
| 0:25        Convert float to int (temp int)
 | |
| 0:25          component-wise multiply (temp float)
 | |
| 0:25            Constant:
 | |
| 0:25              3.000000
 | |
| 0:25            'a' (in float)
 | |
| 0:26      Branch: Return with expression
 | |
| 0:26        Convert float to int (temp int)
 | |
| 0:26          component-wise multiply (temp float)
 | |
| 0:26            Constant:
 | |
| 0:26              5.000000
 | |
| 0:26            direct index (temp float)
 | |
| 0:26              'b' (in 3-component vector of float)
 | |
| 0:26              Constant:
 | |
| 0:26                1 (const int)
 | |
| 0:29  Function Definition: foo3( (global int)
 | |
| 0:29    Function Parameters: 
 | |
| 0:31    Sequence
 | |
| 0:31      Test condition and select (temp void)
 | |
| 0:31        Condition
 | |
| 0:31        Compare Greater Than (temp bool)
 | |
| 0:31          'u' (uniform float)
 | |
| 0:31          Constant:
 | |
| 0:31            3.200000
 | |
| 0:31        true case
 | |
| 0:32        Sequence
 | |
| 0:32          Branch: Kill
 | |
| 0:33          Branch: Return with expression
 | |
| 0:33            Constant:
 | |
| 0:33              1000000 (const int)
 | |
| 0:36      Branch: Return with expression
 | |
| 0:36        Constant:
 | |
| 0:36          2000000 (const int)
 | |
| 0:39  Function Definition: main( (global void)
 | |
| 0:39    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:42      Sequence
 | |
| 0:42        move second child to first child (temp int)
 | |
| 0:42          't' (temp int)
 | |
| 0:42          Constant:
 | |
| 0:42            2 (const int)
 | |
| 0:46      move second child to first child (temp int)
 | |
| 0:46        direct index (temp int)
 | |
| 0:46          t: direct index for structure (temp 4-component vector of int)
 | |
| 0:46            'f' (temp structure{temp 4-component vector of int t})
 | |
| 0:46            Constant:
 | |
| 0:46              0 (const int)
 | |
| 0:46          Constant:
 | |
| 0:46            1 (const int)
 | |
| 0:46        Constant:
 | |
| 0:46          32 (const int)
 | |
| 0:49      Sequence
 | |
| 0:49        move second child to first child (temp int)
 | |
| 0:49          'color' (temp int)
 | |
| 0:49          Function Call: foo(i1;i1;i1;i1;i1;i1; (global int)
 | |
| 0:49            Constant:
 | |
| 0:49              1 (const int)
 | |
| 0:49            Constant:
 | |
| 0:49              2 (const int)
 | |
| 0:49            add (temp int)
 | |
| 0:49              't' (temp int)
 | |
| 0:49              't' (temp int)
 | |
| 0:49            Constant:
 | |
| 0:49              8 (const int)
 | |
| 0:49            'e' (temp int)
 | |
| 0:49            direct index (temp int)
 | |
| 0:49              t: direct index for structure (temp 4-component vector of int)
 | |
| 0:49                'f' (temp structure{temp 4-component vector of int t})
 | |
| 0:49                Constant:
 | |
| 0:49                  0 (const int)
 | |
| 0:49              Constant:
 | |
| 0:49                1 (const int)
 | |
| 0:51      add second child into first child (temp int)
 | |
| 0:51        'color' (temp int)
 | |
| 0:51        component-wise multiply (temp int)
 | |
| 0:51          Constant:
 | |
| 0:51            128 (const int)
 | |
| 0:51          add (temp int)
 | |
| 0:51            'e' (temp int)
 | |
| 0:51            direct index (temp int)
 | |
| 0:51              t: direct index for structure (temp 4-component vector of int)
 | |
| 0:51                'f' (temp structure{temp 4-component vector of int t})
 | |
| 0:51                Constant:
 | |
| 0:51                  0 (const int)
 | |
| 0:51              Constant:
 | |
| 0:51                1 (const int)
 | |
| 0:57      move second child to first child (temp float)
 | |
| 0:57        'ret' (temp float)
 | |
| 0:57        Convert int to float (temp float)
 | |
| 0:57          Comma (global int)
 | |
| 0:57            move second child to first child (temp int)
 | |
| 0:57              'tempReturn' (global int)
 | |
| 0:57              Function Call: foo2(f1;vf3;i1; (global int)
 | |
| 0:57                Constant:
 | |
| 0:57                  4.000000
 | |
| 0:57                Constant:
 | |
| 0:57                  1.000000
 | |
| 0:57                  2.000000
 | |
| 0:57                  3.000000
 | |
| 0:57                'tempArg' (temp int)
 | |
| 0:57            move second child to first child (temp float)
 | |
| 0:57              'arg' (temp float)
 | |
| 0:57              Convert int to float (temp float)
 | |
| 0:57                'tempArg' (temp int)
 | |
| 0:57            'tempReturn' (global int)
 | |
| 0:58      add second child into first child (temp int)
 | |
| 0:58        'color' (temp int)
 | |
| 0:58        Convert float to int (temp int)
 | |
| 0:58          add (temp float)
 | |
| 0:58            'ret' (temp float)
 | |
| 0:58            'arg' (temp float)
 | |
| 0:60      add second child into first child (temp int)
 | |
| 0:60        'color' (temp int)
 | |
| 0:60        Function Call: foo3( (global int)
 | |
| 0:62      move second child to first child (temp 4-component vector of float)
 | |
| 0:62        'gl_FragColor' (fragColor 4-component vector of float FragColor)
 | |
| 0:62        Construct vec4 (temp 4-component vector of float)
 | |
| 0:62          Convert int to float (temp float)
 | |
| 0:62            'color' (temp int)
 | |
| 0:66  Function Definition: aggCall( (global void)
 | |
| 0:66    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:69      Function Call: m(vf2; (global 3-component vector of float)
 | |
| 0:69        Convert int to float (temp 2-component vector of float)
 | |
| 0:69          Construct ivec2 (temp 2-component vector of int)
 | |
| 0:69            Convert float to int (temp int)
 | |
| 0:69              'F' (temp float)
 | |
| 0:72  Function Definition: badConv( (global 4-component vector of float)
 | |
| 0:72    Function Parameters: 
 | |
| 0:74    Sequence
 | |
| 0:74      Branch: Return with expression
 | |
| 0:74        'u' (uniform float)
 | |
| 0:?   Linker Objects
 | |
| 0:?     'u' (uniform float)
 | |
| 
 |