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

@@ -241,7 +241,7 @@ ERROR: node is still EOpNull!
0:122 'sExt' (uniform lowp samplerExternalOES)
0:122 Construct vec3 (temp lowp 3-component vector of float)
0:122 'f13' (invariant global mediump float)
0:123 textureProj (global lowp 4-component vector of float)
0:123 textureProj (global lowp 4-component vector of float, operation at mediump)
0:123 'sExt' (uniform lowp samplerExternalOES)
0:123 direct index (smooth temp mediump 4-component vector of float)
0:123 'v' (smooth in 3-element array of mediump 4-component vector of float)
@@ -278,7 +278,7 @@ ERROR: node is still EOpNull!
0:145 'a' (in mediump int)
0:145 'b' (in mediump float)
0:147 Sequence
0:147 textureProjGrad (global lowp 4-component vector of float)
0:147 textureProjGrad (global lowp 4-component vector of float, operation at mediump)
0:147 's2Dg' (uniform lowp sampler2D)
0:147 Construct vec3 (temp mediump 3-component vector of float)
0:147 'f13' (invariant global mediump float)
@@ -299,17 +299,17 @@ ERROR: node is still EOpNull!
0:158 Function Definition: foo323433( (global void)
0:158 Function Parameters:
0:160 Sequence
0:160 textureLod (global lowp 4-component vector of float)
0:160 textureLod (global lowp 4-component vector of float, operation at mediump)
0:160 's2Dg' (uniform lowp sampler2D)
0:160 'uv2' (invariant uniform mediump 2-component vector of float)
0:160 'f13' (invariant global mediump float)
0:161 textureProjGrad (global lowp 4-component vector of float)
0:161 textureProjGrad (global lowp 4-component vector of float, operation at mediump)
0:161 's2Dg' (uniform lowp sampler2D)
0:161 Construct vec3 (temp mediump 3-component vector of float)
0:161 'f13' (invariant global mediump float)
0:161 'uv2' (invariant uniform mediump 2-component vector of float)
0:161 'uv2' (invariant uniform mediump 2-component vector of float)
0:162 textureGrad (global lowp 4-component vector of float)
0:162 textureGrad (global lowp 4-component vector of float, operation at mediump)
0:162 's2Dg' (uniform lowp sampler2D)
0:162 'uv2' (invariant uniform mediump 2-component vector of float)
0:162 'uv2' (invariant uniform mediump 2-component vector of float)
@@ -579,7 +579,7 @@ ERROR: node is still EOpNull!
0:122 'sExt' (uniform lowp samplerExternalOES)
0:122 Construct vec3 (temp lowp 3-component vector of float)
0:122 'f13' (invariant global mediump float)
0:123 textureProj (global lowp 4-component vector of float)
0:123 textureProj (global lowp 4-component vector of float, operation at mediump)
0:123 'sExt' (uniform lowp samplerExternalOES)
0:123 direct index (smooth temp mediump 4-component vector of float)
0:123 'v' (smooth in 3-element array of mediump 4-component vector of float)
@@ -616,7 +616,7 @@ ERROR: node is still EOpNull!
0:145 'a' (in mediump int)
0:145 'b' (in mediump float)
0:147 Sequence
0:147 textureProjGrad (global lowp 4-component vector of float)
0:147 textureProjGrad (global lowp 4-component vector of float, operation at mediump)
0:147 's2Dg' (uniform lowp sampler2D)
0:147 Construct vec3 (temp mediump 3-component vector of float)
0:147 'f13' (invariant global mediump float)
@@ -637,17 +637,17 @@ ERROR: node is still EOpNull!
0:158 Function Definition: foo323433( (global void)
0:158 Function Parameters:
0:160 Sequence
0:160 textureLod (global lowp 4-component vector of float)
0:160 textureLod (global lowp 4-component vector of float, operation at mediump)
0:160 's2Dg' (uniform lowp sampler2D)
0:160 'uv2' (invariant uniform mediump 2-component vector of float)
0:160 'f13' (invariant global mediump float)
0:161 textureProjGrad (global lowp 4-component vector of float)
0:161 textureProjGrad (global lowp 4-component vector of float, operation at mediump)
0:161 's2Dg' (uniform lowp sampler2D)
0:161 Construct vec3 (temp mediump 3-component vector of float)
0:161 'f13' (invariant global mediump float)
0:161 'uv2' (invariant uniform mediump 2-component vector of float)
0:161 'uv2' (invariant uniform mediump 2-component vector of float)
0:162 textureGrad (global lowp 4-component vector of float)
0:162 textureGrad (global lowp 4-component vector of float, operation at mediump)
0:162 's2Dg' (uniform lowp sampler2D)
0:162 'uv2' (invariant uniform mediump 2-component vector of float)
0:162 'uv2' (invariant uniform mediump 2-component vector of float)