From: Marek Olšák Date: Thu, 13 Aug 2020 17:39:38 +0000 (-0400) Subject: compiler: add glsl_print_type X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=f3a9781ee190a81766dcf6243aabef57839ab5a2 compiler: add glsl_print_type Move it from the glsl compiler. For debugging. Reviewed-by: Timothy Arceri Part-of: --- diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h index e2e46adc855..2ec78f7bdfd 100644 --- a/src/compiler/glsl/ir.h +++ b/src/compiler/glsl/ir.h @@ -2535,9 +2535,6 @@ extern "C" { extern void _mesa_print_ir(FILE *f, struct exec_list *instructions, struct _mesa_glsl_parse_state *state); -extern void -ir_print_type(FILE *f, const struct glsl_type *t); - extern void fprint_ir(FILE *f, const void *instruction); diff --git a/src/compiler/glsl/ir_print_visitor.cpp b/src/compiler/glsl/ir_print_visitor.cpp index 034ee163cf9..7e5e6440a2b 100644 --- a/src/compiler/glsl/ir_print_visitor.cpp +++ b/src/compiler/glsl/ir_print_visitor.cpp @@ -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()) { diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp index d6315845e68..051d8e8c382 100644 --- a/src/compiler/glsl_types.cpp +++ b/src/compiler/glsl_types.cpp @@ -2971,4 +2971,18 @@ glsl_get_sampler_dim_coordinate_components(enum glsl_sampler_dim dim) } } +void +glsl_print_type(FILE *f, const glsl_type *t) +{ + if (t->is_array()) { + fprintf(f, "(array "); + glsl_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); + } +} + } diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h index df5ca4629e5..6a57c7026a6 100644 --- a/src/compiler/glsl_types.h +++ b/src/compiler/glsl_types.h @@ -27,6 +27,7 @@ #include #include +#include #include "shader_enums.h" #include "c11/threads.h" @@ -56,6 +57,9 @@ glsl_type_singleton_decref(); extern void _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state); +void +glsl_print_type(FILE *f, const struct glsl_type *t); + void encode_type_to_blob(struct blob *blob, const struct glsl_type *type); const struct glsl_type *decode_type_from_blob(struct blob_reader *blob);