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:
John Kessenich 2016-06-30 16:46:24 -06:00
parent ae3e77308c
commit f5dcdf0123
4 changed files with 52 additions and 60 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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

View File

@ -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");
} }