glsl: Emit better warnings for things that look like default precision statements
authorIan Romanick <ian.d.romanick@intel.com>
Fri, 9 Aug 2013 20:32:40 +0000 (13:32 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 14 Aug 2013 03:47:20 +0000 (20:47 -0700)
commit830f4df993b41fc90c776b19f77f77a29ce0e7f4
tree2aac8e1a5e9624f609d24dd6012313ecab193b1a
parent825f9ff5d3a0c4d6da20e14c34e3220be624ef8e
glsl: Emit better warnings for things that look like default precision statements

Previously we would emit a warning for empty declarations like

float;

We would also emit the same warning for things like

highp float;

However, this second case is most likely the application trying to set
the default precision.  This makes the compiler generate a stronger
warning with some suggestion of a fix.

It really seems like this should be an error.  I'll bet that 100% of the
time someone writes 'highp float;' the actually meant 'precision highp
float;'.  Alas, both AMD and NVIDIA accept this syntax, and the spec
doesn't explicitly forbid it.

This makes piglit's precision-05.vert generate the following warnings:

0:12(11): warning: empty declaration with precision qualifier, to set the default precision, use `precision lowp float;'
0:13(12): warning: empty declaration with precision qualifier, to set the default precision, use `precision mediump int;'

v2: Add { } around a one-line if body and fix a comment.  Suggested by
Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: "9.2" <mesa-stable@lists.freedesktop.org>
src/glsl/ast_to_hir.cpp