X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fshader%2Fprog_print.c;h=9f9789e010c7bc778d0fa28c11d331445b999b38;hb=3510a1b0c5398b4fce4157d5b578344d2a0bd7d3;hp=1763a358e936a9d9a1b3f34693f07453100bd018;hpb=a512985fd81c1ed4ccc5e69aaa05015cf7ff844d;p=mesa.git diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index 1763a358e93..9f9789e010c 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -533,7 +533,7 @@ void _mesa_print_alu_instruction(const struct prog_instruction *inst, const char *opcode_string, GLuint numRegs) { - fprint_alu_instruction(stdout, inst, opcode_string, + fprint_alu_instruction(stderr, inst, opcode_string, numRegs, PROG_PRINT_DEBUG, NULL); } @@ -757,7 +757,7 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, gl_prog_print_mode mode, const struct gl_program *prog) { - return _mesa_fprint_instruction_opt(stdout, inst, indent, mode, prog); + return _mesa_fprint_instruction_opt(stderr, inst, indent, mode, prog); } @@ -765,7 +765,7 @@ void _mesa_print_instruction(const struct prog_instruction *inst) { /* note: 4th param should be ignored for PROG_PRINT_DEBUG */ - _mesa_fprint_instruction_opt(stdout, inst, 0, PROG_PRINT_DEBUG, NULL); + _mesa_fprint_instruction_opt(stderr, inst, 0, PROG_PRINT_DEBUG, NULL); } @@ -788,7 +788,7 @@ _mesa_fprint_program_opt(FILE *f, else if (mode == PROG_PRINT_NV) _mesa_fprintf(f, "!!VP1.0\n"); else - _mesa_fprintf(f, "# Vertex Program/Shader\n"); + _mesa_fprintf(f, "# Vertex Program/Shader %u\n", prog->Id); break; case GL_FRAGMENT_PROGRAM_ARB: case GL_FRAGMENT_PROGRAM_NV: @@ -797,7 +797,7 @@ _mesa_fprint_program_opt(FILE *f, else if (mode == PROG_PRINT_NV) _mesa_fprintf(f, "!!FP1.0\n"); else - _mesa_fprintf(f, "# Fragment Program/Shader\n"); + _mesa_fprintf(f, "# Fragment Program/Shader %u\n", prog->Id); break; } @@ -811,7 +811,7 @@ _mesa_fprint_program_opt(FILE *f, /** - * Print program to stdout, default options. + * Print program to stderr, default options. */ void _mesa_print_program(const struct gl_program *prog) @@ -820,6 +820,31 @@ _mesa_print_program(const struct gl_program *prog) } +/** + * Return binary representation of 64-bit value (as a string). + * Insert a comma to separate each group of 8 bits. + * Note we return a pointer to local static storage so this is not + * re-entrant, etc. + * XXX move to imports.[ch] if useful elsewhere. + */ +static const char * +binary(GLbitfield64 val) +{ + static char buf[80]; + GLint i, len = 0; + for (i = 63; i >= 0; --i) { + if (val & (1ULL << i)) + buf[len++] = '1'; + else if (len > 0 || i == 0) + buf[len++] = '0'; + if (len > 0 && ((i-1) % 8) == 7) + buf[len++] = ','; + } + buf[len] = '\0'; + return buf; +} + + /** * Print all of a program's parameters/fields to given file. */ @@ -830,13 +855,17 @@ _mesa_fprint_program_parameters(FILE *f, { GLuint i; - _mesa_fprintf(f, "InputsRead: 0x%x\n", prog->InputsRead); - _mesa_fprintf(f, "OutputsWritten: 0x%x\n", prog->OutputsWritten); + _mesa_fprintf(f, "InputsRead: 0x%x (0b%s)\n", + prog->InputsRead, binary(prog->InputsRead)); + _mesa_fprintf(f, "OutputsWritten: 0x%llx (0b%s)\n", + prog->OutputsWritten, binary(prog->OutputsWritten)); _mesa_fprintf(f, "NumInstructions=%d\n", prog->NumInstructions); _mesa_fprintf(f, "NumTemporaries=%d\n", prog->NumTemporaries); _mesa_fprintf(f, "NumParameters=%d\n", prog->NumParameters); _mesa_fprintf(f, "NumAttributes=%d\n", prog->NumAttributes); _mesa_fprintf(f, "NumAddressRegs=%d\n", prog->NumAddressRegs); + _mesa_fprintf(f, "SamplersUsed: 0x%x (0b%s)\n", + prog->SamplersUsed, binary(prog->SamplersUsed)); _mesa_fprintf(f, "Samplers=[ "); for (i = 0; i < MAX_SAMPLERS; i++) { _mesa_fprintf(f, "%d ", prog->SamplerUnits[i]); @@ -857,12 +886,12 @@ _mesa_fprint_program_parameters(FILE *f, /** - * Print all of a program's parameters/fields to stdout. + * Print all of a program's parameters/fields to stderr. */ void _mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog) { - _mesa_fprint_program_parameters(stdout, ctx, prog); + _mesa_fprint_program_parameters(stderr, ctx, prog); } @@ -879,7 +908,8 @@ _mesa_fprint_parameter_list(FILE *f, if (!list) return; - _mesa_fprintf(f, "param list %p\n", (void *) list); + if (0) + _mesa_fprintf(f, "param list %p\n", (void *) list); _mesa_fprintf(f, "dirty state flags: 0x%x\n", list->StateFlags); for (i = 0; i < list->NumParameters; i++){ struct gl_program_parameter *param = list->Parameters + i; @@ -902,12 +932,12 @@ _mesa_fprint_parameter_list(FILE *f, /** - * Print a program parameter list to stdout. + * Print a program parameter list to stderr. */ void _mesa_print_parameter_list(const struct gl_program_parameter_list *list) { - _mesa_fprint_parameter_list(stdout, list); + _mesa_fprint_parameter_list(stderr, list); }