X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fprogram%2Fprog_print.c;h=7e043302da219074e682e1ffb8723a7255659380;hb=HEAD;hp=bdeb8fd675230e543ab4ce238aa65a30bc8e6b73;hpb=c3df65c123c6392b0b116900395a89fd3dbb9b85;p=mesa.git diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index bdeb8fd6752..7e043302da2 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -33,11 +33,12 @@ #include "main/glheader.h" #include "main/context.h" -#include "main/imports.h" + #include "prog_instruction.h" #include "prog_parameter.h" #include "prog_print.h" #include "prog_statevars.h" +#include "util/bitscan.h" @@ -50,12 +51,14 @@ _mesa_register_file_name(gl_register_file f) switch (f) { case PROGRAM_TEMPORARY: return "TEMP"; - case PROGRAM_STATE_VAR: - return "STATE"; + case PROGRAM_ARRAY: + return "ARRAY"; case PROGRAM_INPUT: return "INPUT"; case PROGRAM_OUTPUT: return "OUTPUT"; + case PROGRAM_STATE_VAR: + return "STATE"; case PROGRAM_CONSTANT: return "CONST"; case PROGRAM_UNIFORM: @@ -68,10 +71,20 @@ _mesa_register_file_name(gl_register_file f) return "SYSVAL"; case PROGRAM_UNDEFINED: return "UNDEFINED"; + case PROGRAM_IMMEDIATE: + return "IMM"; + case PROGRAM_BUFFER: + return "BUFFER"; + case PROGRAM_MEMORY: + return "MEMORY"; + case PROGRAM_IMAGE: + return "IMAGE"; + case PROGRAM_HW_ATOMIC: + return "HWATOMIC"; default: { static char s[20]; - _mesa_snprintf(s, sizeof(s), "FILE%u", f); + snprintf(s, sizeof(s), "FILE%u", f); return s; } } @@ -89,7 +102,6 @@ arb_input_attrib_string(GLuint index, GLenum progType) */ static const char *const vertAttribs[] = { "vertex.position", - "vertex.weight", "vertex.normal", "vertex.color.primary", "vertex.color.secondary", @@ -153,6 +165,8 @@ arb_input_attrib_string(GLuint index, GLenum progType) "fragment.(twenty-seven)", /* VARYING_SLOT_CULL_DIST1 */ "fragment.(twenty-eight)", /* VARYING_SLOT_BOUNDING_BOX0 */ "fragment.(twenty-nine)", /* VARYING_SLOT_BOUNDING_BOX1 */ + "fragment.(thirty)", /* VARYING_SLOT_VIEW_INDEX */ + "fragment.(thirty-one)", /* VARYING_SLOT_VIEWPORT_MASK */ "fragment.varying[0]", "fragment.varying[1]", "fragment.varying[2]", @@ -284,6 +298,8 @@ arb_output_attrib_string(GLuint index, GLenum progType) "result.(twenty-seven)", /* VARYING_SLOT_CULL_DIST1 */ "result.(twenty-eight)", /* VARYING_SLOT_BOUNDING_BOX0 */ "result.(twenty-nine)", /* VARYING_SLOT_BOUNDING_BOX1 */ + "result.(thirty)", /* VARYING_SLOT_VIEW_INDEX */ + "result.(thirty-one)", /* VARYING_SLOT_VIEWPORT_MASK */ "result.varying[0]", "result.varying[1]", "result.varying[2]", @@ -520,7 +536,7 @@ fprint_dst_reg(FILE * f, reg_string((gl_register_file) dstReg->File, dstReg->Index, mode, dstReg->RelAddr, prog), _mesa_writemask_string(dstReg->WriteMask)); - + #if 0 fprintf(f, "%s[%d]%s", _mesa_register_file_name((gl_register_file) dstReg->File), @@ -532,7 +548,7 @@ fprint_dst_reg(FILE * f, static void fprint_src_reg(FILE *f, - const struct prog_src_register *srcReg, + const struct prog_src_register *srcReg, gl_prog_print_mode mode, const struct gl_program *prog) { @@ -886,7 +902,7 @@ _mesa_fprint_program_parameters(FILE *f, const GLfloat *p = prog->LocalParams[i]; fprintf(f, "%2d: %f, %f, %f, %f\n", i, p[0], p[1], p[2], p[3]); } -#endif +#endif _mesa_print_parameter_list(prog->Parameters); } @@ -918,7 +934,9 @@ _mesa_fprint_parameter_list(FILE *f, 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; - const GLfloat *v = (GLfloat *) list->ParameterValues[i]; + unsigned pvo = list->ParameterValueOffset[i]; + const GLfloat *v = (GLfloat *) list->ParameterValues + pvo; + fprintf(f, "param[%d] sz=%d %s %s = {%.3g, %.3g, %.3g, %.3g}", i, param->Size, _mesa_register_file_name(list->Parameters[i].Type), @@ -967,16 +985,22 @@ _mesa_write_shader_to_file(const struct gl_shader *shader) case MESA_SHADER_COMPUTE: type = "comp"; break; + default: + break; } - _mesa_snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type); + snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type); f = fopen(filename, "w"); if (!f) { fprintf(stderr, "Unable to open %s for writing\n", filename); return; } +#ifdef DEBUG fprintf(f, "/* Shader %u source, checksum %u */\n", shader->Name, shader->SourceChecksum); +#else + fprintf(f, "/* Shader %u source */\n", shader->Name); +#endif fputs(shader->Source, f); fprintf(f, "\n"); @@ -997,19 +1021,18 @@ _mesa_write_shader_to_file(const struct gl_shader *shader) * _mesa_write_shader_to_file function. */ void -_mesa_append_uniforms_to_file(const struct gl_linked_shader *shader) +_mesa_append_uniforms_to_file(const struct gl_program *prog) { - const struct gl_program *const prog = shader->Program; const char *type; char filename[100]; FILE *f; - if (shader->Stage == MESA_SHADER_FRAGMENT) + if (prog->info.stage == MESA_SHADER_FRAGMENT) type = "frag"; else type = "vert"; - _mesa_snprintf(filename, sizeof(filename), "shader.%s", type); + snprintf(filename, sizeof(filename), "shader.%s", type); f = fopen(filename, "a"); /* append */ if (!f) { fprintf(stderr, "Unable to open %s for appending\n", filename);