Hi, Because ARB_bindless_texture [1] is a massive feature which requires a bunch of changes in Mesa, I splitted the whole series in order to help reviewers. The first one adds all GLSL bits to the compiler.
This implements a new alternative which no longer introduces new base types for bindless samplers/images (ie. GLSL_TYPE_BINDLESS_SAMPLER and GLSL_TYPE_BINDLESS_IMAGE have been removed). This has been requested by Nicolai. I have to admit that it was a bunch of frustration but in the end it looks pretty good. :-) It was actually simpler than expected to rework the whole thing because all other parts are working. I have the same passrate with this series. No regressions with a full piglit run (including compiler tests). And my private shader-db doesn't report anything bad. The whole series which implements ARB_bindless_texture for RadeonSI seems to work fine. It has been tested with some Feral games (Dirt Rally). Some parts still need to be improved though, but one thing at a time! Please review, Thanks! [1] https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_bindless_texture.txt Samuel Pitoiset (31): mesa: add ARB_bindless_texture to the extensions list glsl: add ARB_bindless_texture enable glsl: make sampler/image types as 64-bit glsl: make component_slots() returns 2 for samplers/images glsl: process bindless/bound layout qualifiers glsl: allow to declare bindless samplers/images as non-uniform glsl: allow bindless samplers/images as shader outputs glsl: allow bindless samplers/images as out and inout parameters glsl: allow bindless samplers/images as function return glsl: allow bindless samplers/images inside interface blocks glsl: fix std140/std430 interfaces for bindless samplers/images glsl: allow bindless images to be declared inside structures glsl: allow image qualifiers inside structures glsl: allow input memory qualifiers for images glsl: allow bindless samplers/images as varying variables glsl: allow bindless samplers/images as vertex shader inputs glsl: reject bindless samplers/images frag inputs without 'flat' glsl: relax bindless sampler arrays indexing glsl: fix explicit binding location for bindless samplers/images glsl: add _mesa_glsl_parse_state object to is_lvalue() glsl: allow bindless samplers/images to be l-values glsl: allow bindless samplers/images to be initialized glsl: allow bindless samplers/images to be assigned glsl: add ARB_bindless_texture operations glsl: add is_valid_constructor() helper function glsl: allow bindless samplers/images to be used with constructors glsl: implement ARB_bindless_texture conversions glsl: lower bindless sampler/image packed varyings glsl: do not count bindless samplers/images when linking uniforms glsl: disable tree grafting optimization for bindless images glsl: link bindless layout qualifiers src/compiler/glsl/ast.h | 8 + src/compiler/glsl/ast_array_index.cpp | 10 +- src/compiler/glsl/ast_function.cpp | 93 ++++++++-- src/compiler/glsl/ast_to_hir.cpp | 245 ++++++++++++++++++++++++--- src/compiler/glsl/ast_type.cpp | 65 +++++++ src/compiler/glsl/glsl_parser.yy | 49 +++++- src/compiler/glsl/glsl_parser_extras.cpp | 12 ++ src/compiler/glsl/glsl_parser_extras.h | 17 ++ src/compiler/glsl/ir.cpp | 41 ++++- src/compiler/glsl/ir.h | 20 ++- src/compiler/glsl/ir_clone.cpp | 4 +- src/compiler/glsl/ir_expression_operation.py | 6 + src/compiler/glsl/ir_print_visitor.cpp | 8 +- src/compiler/glsl/ir_validate.cpp | 20 +++ src/compiler/glsl/link_uniforms.cpp | 12 +- src/compiler/glsl/linker.cpp | 44 +++++ src/compiler/glsl/lower_packed_varyings.cpp | 24 ++- src/compiler/glsl/opt_tree_grafting.cpp | 9 + src/compiler/glsl/standalone_scaffolding.cpp | 1 + src/compiler/glsl_types.cpp | 30 ++++ src/compiler/glsl_types.h | 4 +- src/mesa/main/extensions_table.h | 1 + src/mesa/main/mtypes.h | 11 ++ src/mesa/main/uniform_query.cpp | 4 +- src/mesa/program/ir_to_mesa.cpp | 4 + src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 5 + 26 files changed, 682 insertions(+), 65 deletions(-) -- 2.12.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev