Front-end: Implement 2nd task of issue #400; precision of result and operation.

From the ES spec + Bugzilla 15931 and GL_KHR_vulkan_glsl:
- Update precision qualifiers for all built-in function prototypes.
- Implement the new algorithm used to distinguish built-in function
  operation precisions from result precisions.
Also add tracking of separate result and operation precisions, and
use that in generating SPIR-V.
(SPIR-V cares about precision of operation, while the front-end
cares about precision of result, for propagation.)
This commit is contained in:
John Kessenich
2016-08-01 19:44:00 -06:00
parent 6c136223ed
commit f6640761c4
18 changed files with 408 additions and 308 deletions

View File

@@ -113,7 +113,7 @@ ERROR: node is still EOpNull!
0:55 true case
0:56 move second child to first child (temp mediump 4-component vector of uint)
0:56 'c' (out mediump 4-component vector of uint)
0:56 texture (global lowp 4-component vector of uint)
0:56 texture (global lowp 4-component vector of uint, operation at highp)
0:56 'usampler' (uniform lowp usampler2D)
0:56 'tc' (smooth in highp 2-component vector of float)
0:57 Test condition and select (temp void)
@@ -124,7 +124,7 @@ ERROR: node is still EOpNull!
0:57 true case
0:58 move second child to first child (temp mediump 4-component vector of uint)
0:58 'c' (out mediump 4-component vector of uint)
0:58 texture (global lowp 4-component vector of uint)
0:58 texture (global lowp 4-component vector of uint, operation at highp)
0:58 'usampler' (uniform lowp usampler2D)
0:58 add (temp highp 2-component vector of float)
0:58 'tc' (smooth in highp 2-component vector of float)
@@ -139,7 +139,7 @@ ERROR: node is still EOpNull!
0:59 true case
0:60 move second child to first child (temp mediump 4-component vector of uint)
0:60 'c' (out mediump 4-component vector of uint)
0:60 texture (global lowp 4-component vector of uint)
0:60 texture (global lowp 4-component vector of uint, operation at highp)
0:60 'usampler' (uniform lowp usampler2D)
0:60 subtract (temp highp 2-component vector of float)
0:60 'tc' (smooth in highp 2-component vector of float)
@@ -412,7 +412,7 @@ ERROR: node is still EOpNull!
0:55 true case
0:56 move second child to first child (temp mediump 4-component vector of uint)
0:56 'c' (out mediump 4-component vector of uint)
0:56 texture (global lowp 4-component vector of uint)
0:56 texture (global lowp 4-component vector of uint, operation at highp)
0:56 'usampler' (uniform lowp usampler2D)
0:56 'tc' (smooth in highp 2-component vector of float)
0:57 Test condition and select (temp void)
@@ -423,7 +423,7 @@ ERROR: node is still EOpNull!
0:57 true case
0:58 move second child to first child (temp mediump 4-component vector of uint)
0:58 'c' (out mediump 4-component vector of uint)
0:58 texture (global lowp 4-component vector of uint)
0:58 texture (global lowp 4-component vector of uint, operation at highp)
0:58 'usampler' (uniform lowp usampler2D)
0:58 add (temp highp 2-component vector of float)
0:58 'tc' (smooth in highp 2-component vector of float)
@@ -438,7 +438,7 @@ ERROR: node is still EOpNull!
0:59 true case
0:60 move second child to first child (temp mediump 4-component vector of uint)
0:60 'c' (out mediump 4-component vector of uint)
0:60 texture (global lowp 4-component vector of uint)
0:60 texture (global lowp 4-component vector of uint, operation at highp)
0:60 'usampler' (uniform lowp usampler2D)
0:60 subtract (temp highp 2-component vector of float)
0:60 'tc' (smooth in highp 2-component vector of float)