compiler: add glsl_print_type
authorMarek Olšák <marek.olsak@amd.com>
Thu, 13 Aug 2020 17:39:38 +0000 (13:39 -0400)
committerMarge Bot <eric+marge@anholt.net>
Mon, 17 Aug 2020 11:06:49 +0000 (11:06 +0000)
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>

src/compiler/glsl/ir.h
src/compiler/glsl/ir_print_visitor.cpp
src/compiler/glsl_types.cpp
src/compiler/glsl_types.h

index e2e46adc8554866cb2d6b08d5e202f411c677eee..2ec78f7bdfd9db931dcae17f4051103d20ef17f1 100644 (file)
@@ -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 _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);
 
 extern void
 fprint_ir(FILE *f, const void *instruction);
 
index 034ee163cf9f3c2f2cfa7695f8da0174ec8c8659..7e5e6440a2bbf2ad43c639ecfbf5b807ca88d2d4 100644 (file)
@@ -59,7 +59,7 @@ _mesa_print_ir(FILE *f, exec_list *instructions,
 
         for (unsigned j = 0; j < s->length; j++) {
            fprintf(f, "\t((");
 
         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);
         }
 
            fprintf(f, ")(%s))\n", s->fields.structure[j].name);
         }
 
@@ -141,20 +141,6 @@ ir_print_visitor::unique_name(ir_variable *var)
    return name;
 }
 
    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");
 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]);
 
            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) {
    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++;
 
    fprintf(f, "(signature ");
    indentation++;
 
-   ir_print_type(f, ir->return_type);
+   glsl_print_type(f, ir->return_type);
    fprintf(f, "\n");
    indent();
 
    fprintf(f, "\n");
    indent();
 
@@ -299,7 +285,7 @@ void ir_print_visitor::visit(ir_expression *ir)
 {
    fprintf(f, "(expression ");
 
 {
    fprintf(f, "(expression ");
 
-   ir_print_type(f, ir->type);
+   glsl_print_type(f, ir->type);
 
    fprintf(f, " %s ", ir_expression_operation_strings[ir->operation]);
 
 
    fprintf(f, " %s ", ir_expression_operation_strings[ir->operation]);
 
@@ -323,7 +309,7 @@ void ir_print_visitor::visit(ir_texture *ir)
       return;
    }
 
       return;
    }
 
-   ir_print_type(f, ir->type);
+   glsl_print_type(f, ir->type);
    fprintf(f, " ");
 
    ir->sampler->accept(this);
    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 ");
 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()) {
    fprintf(f, " (");
 
    if (ir->type->is_array()) {
index d6315845e683973afd220071c62864bffd9076f5..051d8e8c38282ee8e95bae0f154672791a9088cf 100644 (file)
@@ -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);
+   }
+}
+
 }
 }
index df5ca4629e5b1c266f97430c9f19036bc90e330e..6a57c7026a6d87e8d0172489df350875977a12da 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <string.h>
 #include <assert.h>
 
 #include <string.h>
 #include <assert.h>
+#include <stdio.h>
 
 #include "shader_enums.h"
 #include "c11/threads.h"
 
 #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);
 
 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);
 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);