FROMLIST: glsl: Allow precision mismatch on dead uniform with GLSL ES 1.00 (v3)
Commit 259fc505454ea6a67aeacf6cdebf1398d9947759 added linker error for
mismatching uniform precision, as required by GLES 3.0 specification and
conformance test-suite.
Several Android applications, including Forge of Empires, have shaders
which violate this rule, on uniforms that are declared but not used
further in shader code. The problem affects a big number of Android
games, including ones built on top of one of the common 2D graphics
engines and other GLES implementations accept this, which poses a serious
application compatibility issue.
Starting from GLSL ES 3.0, declarations with conflicting precision
qualifiers are explicitly prohibited. However GLSL ES 1.00 does not
clearly specify the behavior, except that
"Uniforms are defined to behave as if they are using the same storage in
the vertex and fragment processors and may be implemented this way.
If uniforms are used in both the vertex and fragment shaders, developers
should be warned if the precisions are different. Conversion of
precision should never be implicit."
The word "used" is not clear in this context and might refer to
1) declared (same as GLES 3.x)
2) referred after post-processing, or
3) linked after all optimizations are done.
Looking at existing applications, 2) or 3) seems to be widely adopted.
To avoid compatibility issues, turn the error into a warning if GLSL ES
version is lower than 3.0 and the data is dead in at least one of the
shaders.
v3:
- Add a comment explaining the behavior.
- Fix bad copy/paste in commit message (s/varyings/uniforms).
v2:
- Change the behavior only for GLSL ES 1.00 shaders.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97532
Signed-off-by: Tomasz Figa <tfiga@chromium.org>
(am from https://patchwork.freedesktop.org/patch/179064/)
BUG=b:64614192
TEST=Forge of Empires works fine on Cyan
Change-Id: I5c8d8ea2293c2a891e3ab0f8458d04c379fcaa72
Reviewed-on: https://chromium-review.googlesource.com/644974
Commit-Ready: Tomasz Figa <tfiga@chromium.org>
Tested-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
(cherry picked from commit 8f8647b40297ec1da07fb17d477523d4091cc431)
Reviewed-on: https://chromium-review.googlesource.com/691498
Reviewed-by: Bernie Thompson <bhthompson@chromium.org>
Commit-Queue: Bernie Thompson <bhthompson@chromium.org>
Tested-by: Bernie Thompson <bhthompson@chromium.org>
1 file changed