IR print visitor: Add some support for printing types and constants
This commit is contained in:
@@ -22,6 +22,28 @@
|
||||
*/
|
||||
#include <cstdio>
|
||||
#include "ir_print_visitor.h"
|
||||
#include "glsl_types.h"
|
||||
|
||||
static void
|
||||
print_type(const glsl_type *t)
|
||||
{
|
||||
if (t->base_type == GLSL_TYPE_ARRAY) {
|
||||
printf("array\n");
|
||||
printf(" (");
|
||||
print_type(t->fields.array);
|
||||
printf(")\n");
|
||||
|
||||
printf(" (%u)\n", t->length);
|
||||
printf(")");
|
||||
} else if (t->base_type == GLSL_TYPE_STRUCT) {
|
||||
printf("struct (%s %u\n", t->name ? t->name : "@", t->length);
|
||||
printf(" (FINISHME: structure fields go here)\n");
|
||||
printf(")");
|
||||
} else {
|
||||
printf("%s", t->name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ir_print_visitor::visit(ir_variable *ir)
|
||||
{
|
||||
@@ -35,7 +57,10 @@ void ir_print_visitor::visit(ir_variable *ir)
|
||||
printf(" (%s%s%s%s)\n",
|
||||
cent, inv, mode[ir->mode], interp[ir->interpolation]);
|
||||
|
||||
printf(" (FINISHME: type goes here)\n");
|
||||
printf(" (");
|
||||
print_type(ir->type);
|
||||
printf(")\n");
|
||||
|
||||
printf(" (%s)\n", ir->name);
|
||||
printf(")\n");
|
||||
}
|
||||
@@ -98,6 +123,12 @@ void ir_print_visitor::visit(ir_assignment *ir)
|
||||
|
||||
void ir_print_visitor::visit(ir_constant *ir)
|
||||
{
|
||||
printf("%s:%d:\n", __func__, __LINE__);
|
||||
(void) ir;
|
||||
|
||||
printf("(constant\n");
|
||||
printf(" (");
|
||||
print_type(ir->type);
|
||||
printf(")\n");
|
||||
printf(" (FINISHME: value goes here)\n");
|
||||
printf(")\n");
|
||||
}
|
||||
|
Reference in New Issue
Block a user