Commit f5dcdf01 by John Kessenich

Front-end: Don't lower precision of bit operations taking highp inputs.

See issue #350 for detail. This may be an ESSL specification issue.
parent ae3e7730
...@@ -161,9 +161,9 @@ ERROR: node is still EOpNull! ...@@ -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! ...@@ -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! ...@@ -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! ...@@ -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! ...@@ -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! ...@@ -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: ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment