[Mesa-dev] [PATCH 0/6] Improve precision qualifier support
Iago Toral Quiroga
itoral at igalia.com
Thu Feb 26 03:15:15 PST 2015
Right now the GLSL compiler eats precision qualifiers and detects basic
parsing errors but it does not anything with them beyond that. This
series adds:
1. Default precision values for the types specified in the spec
(patches 1-2)
2. Proper tracking of precision statements for each scope (patch 3)
3. Inclusion of precision information in ir_variable considering
type qualifiers and default precision statements (patch 4)
4. Compile-time errors when no precision qualifier is used for float,
integer and sampler types and no default precision qualifier is set
(patch 4)
5. Link-time checks for uniform/global variables (patch 5). This fixes
a small set of dEQP tests that check this behavior.
Patch 6 disallows precision qualifiers on structs, since that is not
valid.
Notice that this does not implement all the necessary bits to fully
incorporate precision information into the IR, it only adds the
stuff we need to handle copile-time and link-time errors.
The missing stuff would involve including precision information in
ir_rvalue, expresions, etc but this can be added later.
I ran series this against piglit and deqp and observed no regressions.
Iago Toral Quiroga (6):
glsl: Add API to put default precision qualifiers in the symbol table
glsl: Add default precision qualifiers to the symbol table
glsl: Add user-defined default precision qualifiers to the symbol
table
glsl: Add precision information to ir_variable
glsl: Add link time checks for GLSL precision qualifiers
glsl: Precision qualifiers are not allowed on structs
src/glsl/ast_to_hir.cpp | 317 ++++++++++++++++++++++++++++++++---------
src/glsl/glsl_parser.yy | 12 ++
src/glsl/glsl_symbol_table.cpp | 24 ++++
src/glsl/glsl_symbol_table.h | 2 +
src/glsl/glsl_types.cpp | 4 +
src/glsl/glsl_types.h | 12 ++
src/glsl/ir.h | 13 ++
src/glsl/linker.cpp | 48 +++++--
8 files changed, 353 insertions(+), 79 deletions(-)
--
1.9.1
More information about the mesa-dev
mailing list