nir/print: print variable constant-initializers
Signed-off-by: Rob Clark <robclark@freedesktop.org> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
6524897606
commit
dc21747838
|
@ -219,6 +219,53 @@ print_alu_instr(nir_alu_instr *instr, print_state *state)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_constant(nir_constant *c, const struct glsl_type *type, print_state *state)
|
||||
{
|
||||
FILE *fp = state->fp;
|
||||
unsigned total_elems = glsl_get_components(type);
|
||||
unsigned i;
|
||||
|
||||
switch (glsl_get_base_type(type)) {
|
||||
case GLSL_TYPE_UINT:
|
||||
case GLSL_TYPE_INT:
|
||||
case GLSL_TYPE_BOOL:
|
||||
for (i = 0; i < total_elems; i++) {
|
||||
if (i > 0) fprintf(fp, ", ");
|
||||
fprintf(fp, "0x%08x", c->value.u[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GLSL_TYPE_FLOAT:
|
||||
for (i = 0; i < total_elems; i++) {
|
||||
if (i > 0) fprintf(fp, ", ");
|
||||
fprintf(fp, "%f", c->value.f[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GLSL_TYPE_STRUCT:
|
||||
for (i = 0; i < c->num_elements; i++) {
|
||||
if (i > 0) fprintf(fp, ", ");
|
||||
fprintf(fp, "{ ");
|
||||
print_constant(c->elements[i], glsl_get_struct_field(type, i), state);
|
||||
fprintf(fp, " }");
|
||||
}
|
||||
break;
|
||||
|
||||
case GLSL_TYPE_ARRAY:
|
||||
for (i = 0; i < c->num_elements; i++) {
|
||||
if (i > 0) fprintf(fp, ", ");
|
||||
fprintf(fp, "{ ");
|
||||
print_constant(c->elements[i], glsl_get_array_element(type), state);
|
||||
fprintf(fp, " }");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
unreachable("not reached");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_var_decl(nir_variable *var, print_state *state)
|
||||
{
|
||||
|
@ -295,6 +342,12 @@ print_var_decl(nir_variable *var, print_state *state)
|
|||
fprintf(fp, " (%s, %u)", loc, var->data.driver_location);
|
||||
}
|
||||
|
||||
if (var->constant_initializer) {
|
||||
fprintf(fp, " = { ");
|
||||
print_constant(var->constant_initializer, var->type, state);
|
||||
fprintf(fp, " }");
|
||||
}
|
||||
|
||||
fprintf(fp, "\n");
|
||||
|
||||
if (state->syms) {
|
||||
|
|
Loading…
Reference in New Issue