diff options
author | Sergii Romantsov <[email protected]> | 2018-08-30 15:04:35 +0300 |
---|---|---|
committer | Dylan Baker <[email protected]> | 2019-07-03 12:13:37 -0700 |
commit | 9f85b4940c58b36fe5f26222e3f94e97fc654afa (patch) | |
tree | 437c45934d032d3557e56644955bd097b9db63d4 /src | |
parent | ea5b7de138bb7e9a4e7e4f0c39c4ceb16acae923 (diff) |
glsl/standalone: exit on unsupported texture functions
glsl/standalone with --dump-builder will exit when unsupported texture
functions are encountered.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107767
Signed-off-by: Sergii Romantsov <[email protected]>
Signed-off-by: Yevhenii Kolesnikov <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Reviewed-by: Dylan Baker <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/glsl/ir_builder_print_visitor.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/compiler/glsl/ir_builder_print_visitor.cpp b/src/compiler/glsl/ir_builder_print_visitor.cpp index 57424699d00..d34afa3daee 100644 --- a/src/compiler/glsl/ir_builder_print_visitor.cpp +++ b/src/compiler/glsl/ir_builder_print_visitor.cpp @@ -60,6 +60,8 @@ public: virtual ir_visitor_status visit_leave(class ir_swizzle *); virtual ir_visitor_status visit_leave(class ir_return *); + virtual ir_visitor_status visit_enter(ir_texture *ir); + private: void print_with_indent(const char *fmt, ...); void print_without_indent(const char *fmt, ...); @@ -445,6 +447,7 @@ ir_builder_print_visitor::print_without_declaration(const ir_swizzle *ir) print_without_declaration(ir->val); print_without_indent(")"); } else { + assert(he); print_without_indent("swizzle_%c(r%04X)", swiz[ir->mask.x], (unsigned)(uintptr_t) he->data); @@ -452,6 +455,7 @@ ir_builder_print_visitor::print_without_declaration(const ir_swizzle *ir) } else { static const char swiz[4] = { 'X', 'Y', 'Z', 'W' }; + assert(he); print_without_indent("swizzle(r%04X, MAKE_SWIZZLE4(SWIZZLE_%c, SWIZZLE_%c, SWIZZLE_%c, SWIZZLE_%c), %u)", (unsigned)(uintptr_t) he->data, swiz[ir->mask.x], @@ -526,6 +530,7 @@ ir_builder_print_visitor::visit_leave(ir_assignment *ir) _mesa_hash_table_search(index_map, ir->rhs); assert(ir->condition == NULL); + assert(ir->lhs && ir->rhs); print_with_indent("body.emit(assign(r%04X, r%04X, 0x%02x));\n\n", (unsigned)(uintptr_t) he_lhs->data, @@ -640,7 +645,7 @@ ir_builder_print_visitor::visit_enter(ir_if *ir) if (s != visit_continue_with_parent) { s = visit_list_elements(this, &ir->then_instructions); if (s == visit_stop) - return s; + return s; } print_without_indent("\n"); @@ -683,6 +688,14 @@ ir_builder_print_visitor::visit_leave(ir_return *ir) } ir_visitor_status +ir_builder_print_visitor::visit_enter(ir_texture *ir) +{ + print_with_indent("\nUnsupported IR is encountered: texture functions are not supported. Exiting.\n"); + + return visit_stop; +} + +ir_visitor_status ir_builder_print_visitor::visit_leave(ir_call *ir) { const unsigned my_index = next_ir_index++; |