[Mesa-dev] [PATCH] glsl: Emit better warnings for things that look like default precision statements

Ian Romanick idr at freedesktop.org
Tue Aug 13 17:16:27 PDT 2013


On 08/13/2013 03:50 PM, Matt Turner wrote:
> On Tue, Aug 13, 2013 at 1:35 PM, Ian Romanick <idr at freedesktop.org> wrote:
>> and the spec doesn't explicitly forbid it.
>
> I was surprised by this, so I verified it.
>
> In the GLSL ES 3.0 spec:
>
> single_declaration
>   fully_specified_type
>    type_specifier
>     precision_qualifier type_specifier_no_prec
>
> precision_qualifier
>   <highp, mediump, lowp>
>
> type_specifier_no_prec
>   type_specifier_nonarray
>    <expands to list of built-in types>
>
> Seems weird, but legitimate.

C allows empty declarations too.  I believe it's a side-effect of 
function prototypes without formal parameter names.  If you can do

int foo(int, float, struct S *);

it's easy to end up with a parser that can also do

int;
float;
struct S *;

It's actually more work to reject those (or generate a warning).

> Have we actually seen 'highp float;' in the wild (outside of piglit)?

Not that I know of.

> Assuming that the two instances of "highp" in precision_names is
> intentional (or was not, but is fixed)

I had to put something in the ast_precision_none slot, and that seemed 
as good a choice as any.  "" didn't seem too good. :)

> Reviewed-by: Matt Turner <mattst88 at gmail.com>



More information about the mesa-dev mailing list