compiler: add glsl_print_type

Move it from the glsl compiler. For debugging.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6328>
This commit is contained in:
Marek Olšák
2020-08-13 13:39:38 -04:00
committed by Marge Bot
parent b7c04b1790
commit f3a9781ee1
4 changed files with 24 additions and 23 deletions

View File

@@ -59,7 +59,7 @@ _mesa_print_ir(FILE *f, exec_list *instructions,
for (unsigned j = 0; j < s->length; j++) {
fprintf(f, "\t((");
ir_print_type(f, s->fields.structure[j].type);
glsl_print_type(f, s->fields.structure[j].type);
fprintf(f, ")(%s))\n", s->fields.structure[j].name);
}
@@ -141,20 +141,6 @@ ir_print_visitor::unique_name(ir_variable *var)
return name;
}
extern "C" void
ir_print_type(FILE *f, const glsl_type *t)
{
if (t->is_array()) {
fprintf(f, "(array ");
ir_print_type(f, t->fields.array);
fprintf(f, " %u)", t->length);
} else if (t->is_struct() && !is_gl_identifier(t->name)) {
fprintf(f, "%s@%p", t->name, (void *) t);
} else {
fprintf(f, "%s", t->name);
}
}
void ir_print_visitor::visit(ir_rvalue *)
{
fprintf(f, "error");
@@ -224,7 +210,7 @@ void ir_print_visitor::visit(ir_variable *ir)
stream,
interp[ir->data.interpolation], precision[ir->data.precision]);
ir_print_type(f, ir->type);
glsl_print_type(f, ir->type);
fprintf(f, " %s)", unique_name(ir));
if (ir->constant_initializer) {
@@ -245,7 +231,7 @@ void ir_print_visitor::visit(ir_function_signature *ir)
fprintf(f, "(signature ");
indentation++;
ir_print_type(f, ir->return_type);
glsl_print_type(f, ir->return_type);
fprintf(f, "\n");
indent();
@@ -299,7 +285,7 @@ void ir_print_visitor::visit(ir_expression *ir)
{
fprintf(f, "(expression ");
ir_print_type(f, ir->type);
glsl_print_type(f, ir->type);
fprintf(f, " %s ", ir_expression_operation_strings[ir->operation]);
@@ -323,7 +309,7 @@ void ir_print_visitor::visit(ir_texture *ir)
return;
}
ir_print_type(f, ir->type);
glsl_print_type(f, ir->type);
fprintf(f, " ");
ir->sampler->accept(this);
@@ -487,7 +473,7 @@ print_float_constant(FILE *f, float val)
void ir_print_visitor::visit(ir_constant *ir)
{
fprintf(f, "(constant ");
ir_print_type(f, ir->type);
glsl_print_type(f, ir->type);
fprintf(f, " (");
if (ir->type->is_array()) {