Front-end: Don't lower precision of bit operations taking highp inputs.
See issue #350 for detail. This may be an ESSL specification issue.
This commit is contained in:
		
							parent
							
								
									ae3e77308c
								
							
						
					
					
						commit
						f5dcdf0123
					
				| @ -161,9 +161,9 @@ ERROR: node is still EOpNull! | |||||||
| 0:62          packSnorm2x16 (global highp uint) | 0:62          packSnorm2x16 (global highp uint) | ||||||
| 0:62            'v2a' (global mediump 2-component vector of float) | 0:62            'v2a' (global mediump 2-component vector of float) | ||||||
| 0:63      Sequence | 0:63      Sequence | ||||||
| 0:63        move second child to first child (temp highp 2-component vector of float) | 0:63        move second child to first child (temp mediump 2-component vector of float) | ||||||
| 0:63          'v20' (temp mediump 2-component vector of float) | 0:63          'v20' (temp mediump 2-component vector of float) | ||||||
| 0:63          unpackSnorm2x16 (global highp 2-component vector of float) | 0:63          unpackSnorm2x16 (global mediump 2-component vector of float) | ||||||
| 0:63            'uy' (global mediump uint) | 0:63            'uy' (global mediump uint) | ||||||
| 0:64      Sequence | 0:64      Sequence | ||||||
| 0:64        move second child to first child (temp highp uint) | 0:64        move second child to first child (temp highp uint) | ||||||
| @ -368,9 +368,9 @@ ERROR: node is still EOpNull! | |||||||
| 0:62          packSnorm2x16 (global highp uint) | 0:62          packSnorm2x16 (global highp uint) | ||||||
| 0:62            'v2a' (global mediump 2-component vector of float) | 0:62            'v2a' (global mediump 2-component vector of float) | ||||||
| 0:63      Sequence | 0:63      Sequence | ||||||
| 0:63        move second child to first child (temp highp 2-component vector of float) | 0:63        move second child to first child (temp mediump 2-component vector of float) | ||||||
| 0:63          'v20' (temp mediump 2-component vector of float) | 0:63          'v20' (temp mediump 2-component vector of float) | ||||||
| 0:63          unpackSnorm2x16 (global highp 2-component vector of float) | 0:63          unpackSnorm2x16 (global mediump 2-component vector of float) | ||||||
| 0:63            'uy' (global mediump uint) | 0:63            'uy' (global mediump uint) | ||||||
| 0:64      Sequence | 0:64      Sequence | ||||||
| 0:64        move second child to first child (temp highp uint) | 0:64        move second child to first child (temp highp uint) | ||||||
|  | |||||||
| @ -179,27 +179,27 @@ ERROR: node is still EOpNull! | |||||||
| 0:31          'u4' (temp highp 4-component vector of uint) | 0:31          'u4' (temp highp 4-component vector of uint) | ||||||
| 0:32      move second child to first child (temp highp int) | 0:32      move second child to first child (temp highp int) | ||||||
| 0:32        'i1' (temp highp int) | 0:32        'i1' (temp highp int) | ||||||
| 0:32        bitCount (global lowp int) | 0:32        bitCount (global highp int) | ||||||
| 0:32          'i1' (temp highp int) | 0:32          'i1' (temp highp int) | ||||||
| 0:33      move second child to first child (temp highp 3-component vector of int) | 0:33      move second child to first child (temp highp 3-component vector of int) | ||||||
| 0:33        'i3' (temp highp 3-component vector of int) | 0:33        'i3' (temp highp 3-component vector of int) | ||||||
| 0:33        bitCount (global lowp 3-component vector of int) | 0:33        bitCount (global highp 3-component vector of int) | ||||||
| 0:33          'u3' (temp highp 3-component vector of uint) | 0:33          'u3' (temp highp 3-component vector of uint) | ||||||
| 0:34      move second child to first child (temp highp 2-component vector of int) | 0:34      move second child to first child (temp highp 2-component vector of int) | ||||||
| 0:34        'i2' (temp highp 2-component vector of int) | 0:34        'i2' (temp highp 2-component vector of int) | ||||||
| 0:34        findLSB (global lowp 2-component vector of int) | 0:34        findLSB (global highp 2-component vector of int) | ||||||
| 0:34          'i2' (temp highp 2-component vector of int) | 0:34          'i2' (temp highp 2-component vector of int) | ||||||
| 0:35      move second child to first child (temp highp 4-component vector of int) | 0:35      move second child to first child (temp highp 4-component vector of int) | ||||||
| 0:35        'i4' (temp highp 4-component vector of int) | 0:35        'i4' (temp highp 4-component vector of int) | ||||||
| 0:35        findLSB (global lowp 4-component vector of int) | 0:35        findLSB (global highp 4-component vector of int) | ||||||
| 0:35          'u4' (temp highp 4-component vector of uint) | 0:35          'u4' (temp highp 4-component vector of uint) | ||||||
| 0:36      move second child to first child (temp highp int) | 0:36      move second child to first child (temp highp int) | ||||||
| 0:36        'i1' (temp highp int) | 0:36        'i1' (temp highp int) | ||||||
| 0:36        findMSB (global lowp int) | 0:36        findMSB (global highp int) | ||||||
| 0:36          'i1' (temp highp int) | 0:36          'i1' (temp highp int) | ||||||
| 0:37      move second child to first child (temp highp 2-component vector of int) | 0:37      move second child to first child (temp highp 2-component vector of int) | ||||||
| 0:37        'i2' (temp highp 2-component vector of int) | 0:37        'i2' (temp highp 2-component vector of int) | ||||||
| 0:37        findMSB (global lowp 2-component vector of int) | 0:37        findMSB (global highp 2-component vector of int) | ||||||
| 0:37          'u2' (temp highp 2-component vector of uint) | 0:37          'u2' (temp highp 2-component vector of uint) | ||||||
| 0:40      move second child to first child (temp highp 3-component vector of float) | 0:40      move second child to first child (temp highp 3-component vector of float) | ||||||
| 0:40        'v3' (temp highp 3-component vector of float) | 0:40        'v3' (temp highp 3-component vector of float) | ||||||
| @ -219,13 +219,13 @@ ERROR: node is still EOpNull! | |||||||
| 0:46        'u1' (temp highp uint) | 0:46        'u1' (temp highp uint) | ||||||
| 0:46        PackSnorm4x8 (global highp uint) | 0:46        PackSnorm4x8 (global highp uint) | ||||||
| 0:46          'v4' (temp mediump 4-component vector of float) | 0:46          'v4' (temp mediump 4-component vector of float) | ||||||
| 0:47      move second child to first child (temp mediump 4-component vector of float) | 0:47      move second child to first child (temp highp 4-component vector of float) | ||||||
| 0:47        'v4' (temp mediump 4-component vector of float) | 0:47        'v4' (temp mediump 4-component vector of float) | ||||||
| 0:47        UnpackUnorm4x8 (global mediump 4-component vector of float) | 0:47        UnpackUnorm4x8 (global highp 4-component vector of float) | ||||||
| 0:47          'u1' (temp highp uint) | 0:47          'u1' (temp highp uint) | ||||||
| 0:48      move second child to first child (temp mediump 4-component vector of float) | 0:48      move second child to first child (temp highp 4-component vector of float) | ||||||
| 0:48        'v4' (temp mediump 4-component vector of float) | 0:48        'v4' (temp mediump 4-component vector of float) | ||||||
| 0:48        UnpackSnorm4x8 (global mediump 4-component vector of float) | 0:48        UnpackSnorm4x8 (global highp 4-component vector of float) | ||||||
| 0:48          'u1' (temp highp uint) | 0:48          'u1' (temp highp uint) | ||||||
| 0:60  Function Definition: foo( (global void) | 0:60  Function Definition: foo( (global void) | ||||||
| 0:60    Function Parameters:  | 0:60    Function Parameters:  | ||||||
| @ -1110,27 +1110,27 @@ ERROR: node is still EOpNull! | |||||||
| 0:31          'u4' (temp highp 4-component vector of uint) | 0:31          'u4' (temp highp 4-component vector of uint) | ||||||
| 0:32      move second child to first child (temp highp int) | 0:32      move second child to first child (temp highp int) | ||||||
| 0:32        'i1' (temp highp int) | 0:32        'i1' (temp highp int) | ||||||
| 0:32        bitCount (global lowp int) | 0:32        bitCount (global highp int) | ||||||
| 0:32          'i1' (temp highp int) | 0:32          'i1' (temp highp int) | ||||||
| 0:33      move second child to first child (temp highp 3-component vector of int) | 0:33      move second child to first child (temp highp 3-component vector of int) | ||||||
| 0:33        'i3' (temp highp 3-component vector of int) | 0:33        'i3' (temp highp 3-component vector of int) | ||||||
| 0:33        bitCount (global lowp 3-component vector of int) | 0:33        bitCount (global highp 3-component vector of int) | ||||||
| 0:33          'u3' (temp highp 3-component vector of uint) | 0:33          'u3' (temp highp 3-component vector of uint) | ||||||
| 0:34      move second child to first child (temp highp 2-component vector of int) | 0:34      move second child to first child (temp highp 2-component vector of int) | ||||||
| 0:34        'i2' (temp highp 2-component vector of int) | 0:34        'i2' (temp highp 2-component vector of int) | ||||||
| 0:34        findLSB (global lowp 2-component vector of int) | 0:34        findLSB (global highp 2-component vector of int) | ||||||
| 0:34          'i2' (temp highp 2-component vector of int) | 0:34          'i2' (temp highp 2-component vector of int) | ||||||
| 0:35      move second child to first child (temp highp 4-component vector of int) | 0:35      move second child to first child (temp highp 4-component vector of int) | ||||||
| 0:35        'i4' (temp highp 4-component vector of int) | 0:35        'i4' (temp highp 4-component vector of int) | ||||||
| 0:35        findLSB (global lowp 4-component vector of int) | 0:35        findLSB (global highp 4-component vector of int) | ||||||
| 0:35          'u4' (temp highp 4-component vector of uint) | 0:35          'u4' (temp highp 4-component vector of uint) | ||||||
| 0:36      move second child to first child (temp highp int) | 0:36      move second child to first child (temp highp int) | ||||||
| 0:36        'i1' (temp highp int) | 0:36        'i1' (temp highp int) | ||||||
| 0:36        findMSB (global lowp int) | 0:36        findMSB (global highp int) | ||||||
| 0:36          'i1' (temp highp int) | 0:36          'i1' (temp highp int) | ||||||
| 0:37      move second child to first child (temp highp 2-component vector of int) | 0:37      move second child to first child (temp highp 2-component vector of int) | ||||||
| 0:37        'i2' (temp highp 2-component vector of int) | 0:37        'i2' (temp highp 2-component vector of int) | ||||||
| 0:37        findMSB (global lowp 2-component vector of int) | 0:37        findMSB (global highp 2-component vector of int) | ||||||
| 0:37          'u2' (temp highp 2-component vector of uint) | 0:37          'u2' (temp highp 2-component vector of uint) | ||||||
| 0:40      move second child to first child (temp highp 3-component vector of float) | 0:40      move second child to first child (temp highp 3-component vector of float) | ||||||
| 0:40        'v3' (temp highp 3-component vector of float) | 0:40        'v3' (temp highp 3-component vector of float) | ||||||
| @ -1150,13 +1150,13 @@ ERROR: node is still EOpNull! | |||||||
| 0:46        'u1' (temp highp uint) | 0:46        'u1' (temp highp uint) | ||||||
| 0:46        PackSnorm4x8 (global highp uint) | 0:46        PackSnorm4x8 (global highp uint) | ||||||
| 0:46          'v4' (temp mediump 4-component vector of float) | 0:46          'v4' (temp mediump 4-component vector of float) | ||||||
| 0:47      move second child to first child (temp mediump 4-component vector of float) | 0:47      move second child to first child (temp highp 4-component vector of float) | ||||||
| 0:47        'v4' (temp mediump 4-component vector of float) | 0:47        'v4' (temp mediump 4-component vector of float) | ||||||
| 0:47        UnpackUnorm4x8 (global mediump 4-component vector of float) | 0:47        UnpackUnorm4x8 (global highp 4-component vector of float) | ||||||
| 0:47          'u1' (temp highp uint) | 0:47          'u1' (temp highp uint) | ||||||
| 0:48      move second child to first child (temp mediump 4-component vector of float) | 0:48      move second child to first child (temp highp 4-component vector of float) | ||||||
| 0:48        'v4' (temp mediump 4-component vector of float) | 0:48        'v4' (temp mediump 4-component vector of float) | ||||||
| 0:48        UnpackSnorm4x8 (global mediump 4-component vector of float) | 0:48        UnpackSnorm4x8 (global highp 4-component vector of float) | ||||||
| 0:48          'u1' (temp highp uint) | 0:48          'u1' (temp highp uint) | ||||||
| 0:60  Function Definition: foo( (global void) | 0:60  Function Definition: foo( (global void) | ||||||
| 0:60    Function Parameters:  | 0:60    Function Parameters:  | ||||||
|  | |||||||
| @ -44,14 +44,6 @@ Linked vertex stage: | |||||||
|                               Name 173  "u3" |                               Name 173  "u3" | ||||||
|                               Name 182  "i3" |                               Name 182  "i3" | ||||||
|                               Name 247  "v4" |                               Name 247  "v4" | ||||||
|                               Decorate 210 RelaxedPrecision |  | ||||||
|                               Decorate 216 RelaxedPrecision |  | ||||||
|                               Decorate 223 RelaxedPrecision |  | ||||||
|                               Decorate 230 RelaxedPrecision |  | ||||||
|                               Decorate 234 RelaxedPrecision |  | ||||||
|                               Decorate 240 RelaxedPrecision |  | ||||||
|                               Decorate 261 RelaxedPrecision |  | ||||||
|                               Decorate 265 RelaxedPrecision |  | ||||||
|                2:             TypeVoid |                2:             TypeVoid | ||||||
|                3:             TypeFunction 2 |                3:             TypeFunction 2 | ||||||
|                6:             TypeInt 32 1 |                6:             TypeInt 32 1 | ||||||
|  | |||||||
| @ -948,9 +948,9 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV | |||||||
|         (profile != EEsProfile && version >= 420)) { |         (profile != EEsProfile && version >= 420)) { | ||||||
|         commonBuiltins.append( |         commonBuiltins.append( | ||||||
|             "highp uint packSnorm2x16(vec2);" |             "highp uint packSnorm2x16(vec2);" | ||||||
|             "highp vec2 unpackSnorm2x16(highp uint);" |             "      vec2 unpackSnorm2x16(highp uint);" | ||||||
|             "highp uint packHalf2x16(mediump vec2);" |             "highp uint packHalf2x16(mediump vec2);" | ||||||
|             "mediump vec2 unpackHalf2x16(highp uint);" |             "      vec2 unpackHalf2x16(highp uint);" | ||||||
|             "\n"); |             "\n"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -958,9 +958,9 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV | |||||||
|         (profile != EEsProfile && version >= 400)) { |         (profile != EEsProfile && version >= 400)) { | ||||||
|         commonBuiltins.append( |         commonBuiltins.append( | ||||||
|             "highp   uint packSnorm4x8  (mediump vec4);" |             "highp   uint packSnorm4x8  (mediump vec4);" | ||||||
|             "mediump vec4 unpackSnorm4x8(highp   uint);" |             "        vec4 unpackSnorm4x8(highp   uint);" | ||||||
|             "highp   uint packUnorm4x8  (mediump vec4);" |             "highp   uint packUnorm4x8  (mediump vec4);" | ||||||
|             "mediump vec4 unpackUnorm4x8(highp   uint);" |             "        vec4 unpackUnorm4x8(highp   uint);" | ||||||
|             "\n"); |             "\n"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -1298,15 +1298,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV | |||||||
|             "uvec3 bitfieldInsert(uvec3 base, uvec3, int, int);" |             "uvec3 bitfieldInsert(uvec3 base, uvec3, int, int);" | ||||||
|             "uvec4 bitfieldInsert(uvec4 base, uvec4, int, int);" |             "uvec4 bitfieldInsert(uvec4 base, uvec4, int, int);" | ||||||
| 
 | 
 | ||||||
|             "lowp   int findLSB(  int);" |             "  int findLSB(  int);" | ||||||
|             "lowp ivec2 findLSB(ivec2);" |             "ivec2 findLSB(ivec2);" | ||||||
|             "lowp ivec3 findLSB(ivec3);" |             "ivec3 findLSB(ivec3);" | ||||||
|             "lowp ivec4 findLSB(ivec4);" |             "ivec4 findLSB(ivec4);" | ||||||
| 
 | 
 | ||||||
|             "lowp   int findLSB( uint);" |             "  int findLSB( uint);" | ||||||
|             "lowp ivec2 findLSB(uvec2);" |             "ivec2 findLSB(uvec2);" | ||||||
|             "lowp ivec3 findLSB(uvec3);" |             "ivec3 findLSB(uvec3);" | ||||||
|             "lowp ivec4 findLSB(uvec4);" |             "ivec4 findLSB(uvec4);" | ||||||
| 
 | 
 | ||||||
|             "\n"); |             "\n"); | ||||||
|     } |     } | ||||||
| @ -1398,25 +1398,25 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV | |||||||
|             "highp uvec3 bitfieldReverse(highp uvec3);" |             "highp uvec3 bitfieldReverse(highp uvec3);" | ||||||
|             "highp uvec4 bitfieldReverse(highp uvec4);" |             "highp uvec4 bitfieldReverse(highp uvec4);" | ||||||
| 
 | 
 | ||||||
|             "lowp   int bitCount(  int);" |             "  int bitCount(  int);" | ||||||
|             "lowp ivec2 bitCount(ivec2);" |             "ivec2 bitCount(ivec2);" | ||||||
|             "lowp ivec3 bitCount(ivec3);" |             "ivec3 bitCount(ivec3);" | ||||||
|             "lowp ivec4 bitCount(ivec4);" |             "ivec4 bitCount(ivec4);" | ||||||
| 
 | 
 | ||||||
|             "lowp   int bitCount( uint);" |             "  int bitCount( uint);" | ||||||
|             "lowp ivec2 bitCount(uvec2);" |             "ivec2 bitCount(uvec2);" | ||||||
|             "lowp ivec3 bitCount(uvec3);" |             "ivec3 bitCount(uvec3);" | ||||||
|             "lowp ivec4 bitCount(uvec4);" |             "ivec4 bitCount(uvec4);" | ||||||
| 
 | 
 | ||||||
|             "lowp   int findMSB(highp   int);" |             "  int findMSB(highp   int);" | ||||||
|             "lowp ivec2 findMSB(highp ivec2);" |             "ivec2 findMSB(highp ivec2);" | ||||||
|             "lowp ivec3 findMSB(highp ivec3);" |             "ivec3 findMSB(highp ivec3);" | ||||||
|             "lowp ivec4 findMSB(highp ivec4);" |             "ivec4 findMSB(highp ivec4);" | ||||||
| 
 | 
 | ||||||
|             "lowp   int findMSB(highp  uint);" |             "  int findMSB(highp  uint);" | ||||||
|             "lowp ivec2 findMSB(highp uvec2);" |             "ivec2 findMSB(highp uvec2);" | ||||||
|             "lowp ivec3 findMSB(highp uvec3);" |             "ivec3 findMSB(highp uvec3);" | ||||||
|             "lowp ivec4 findMSB(highp uvec4);" |             "ivec4 findMSB(highp uvec4);" | ||||||
|              |              | ||||||
|             "\n"); |             "\n"); | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 John Kessenich
						John Kessenich