X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fshader%2Fprog_print.c;h=22b8f1de3c25f6b5041a89056f58cfe33ee96412;hb=19e4222f937c9bb95d3a899dd788afb930eecaa4;hp=3ab004191a8d85bb684fd96a2d1c23abc85c3c6a;hpb=037c06846041877fb03890864520daa33b5fa4a9;p=mesa.git diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index 3ab004191a8..22b8f1de3c2 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.5.3 + * Version: 7.3 * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -28,9 +28,9 @@ * \author Brian Paul */ -#include "glheader.h" -#include "context.h" -#include "imports.h" +#include "main/glheader.h" +#include "main/context.h" +#include "main/imports.h" #include "prog_instruction.h" #include "prog_parameter.h" #include "prog_print.h" @@ -99,7 +99,23 @@ arb_input_attrib_string(GLint index, GLenum progType) "vertex.texcoord[4]", "vertex.texcoord[5]", "vertex.texcoord[6]", - "vertex.texcoord[7]" + "vertex.texcoord[7]", + "vertex.attrib[0]", + "vertex.attrib[1]", + "vertex.attrib[2]", + "vertex.attrib[3]", + "vertex.attrib[4]", + "vertex.attrib[5]", + "vertex.attrib[6]", + "vertex.attrib[7]", + "vertex.attrib[8]", + "vertex.attrib[9]", + "vertex.attrib[10]", + "vertex.attrib[11]", + "vertex.attrib[12]", + "vertex.attrib[13]", + "vertex.attrib[14]", + "vertex.attrib[15]" }; const char *fragAttribs[] = { "fragment.position", @@ -190,7 +206,7 @@ arb_output_attrib_string(GLint index, GLenum progType) */ static const char * reg_string(enum register_file f, GLint index, gl_prog_print_mode mode, - const struct gl_program *prog) + GLboolean relAddr, const struct gl_program *prog) { static char str[100]; @@ -198,7 +214,10 @@ reg_string(enum register_file f, GLint index, gl_prog_print_mode mode, switch (mode) { case PROG_PRINT_DEBUG: - sprintf(str, "%s[%d]", file_string(f, mode), index); + if (relAddr) + sprintf(str, "%s[ADDR%s%d]", file_string(f, mode), (index > 0) ? "+" : "", index); + else + sprintf(str, "%s[%d]", file_string(f, mode), index); break; case PROG_PRINT_ARB: @@ -231,7 +250,9 @@ reg_string(enum register_file f, GLint index, gl_prog_print_mode mode, { struct gl_program_parameter *param = prog->Parameters->Parameters + index; - sprintf(str, _mesa_program_state_string(param->StateIndexes)); + char *state = _mesa_program_state_string(param->StateIndexes); + sprintf(str, state); + _mesa_free(state); } break; case PROGRAM_ADDRESS: @@ -294,7 +315,7 @@ reg_string(enum register_file f, GLint index, gl_prog_print_mode mode, const char * _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended) { - static const char swz[] = "xyzw01?!"; + static const char swz[] = "xyzw01!?"; /* See SWIZZLE_x definitions */ static char s[20]; GLuint i = 0; @@ -304,7 +325,7 @@ _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended) if (!extended) s[i++] = '.'; - if (negateBase & 0x1) + if (negateBase & NEGATE_X) s[i++] = '-'; s[i++] = swz[GET_SWZ(swizzle, 0)]; @@ -312,7 +333,7 @@ _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended) s[i++] = ','; } - if (negateBase & 0x2) + if (negateBase & NEGATE_Y) s[i++] = '-'; s[i++] = swz[GET_SWZ(swizzle, 1)]; @@ -320,7 +341,7 @@ _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended) s[i++] = ','; } - if (negateBase & 0x4) + if (negateBase & NEGATE_Z) s[i++] = '-'; s[i++] = swz[GET_SWZ(swizzle, 2)]; @@ -328,7 +349,7 @@ _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended) s[i++] = ','; } - if (negateBase & 0x8) + if (negateBase & NEGATE_W) s[i++] = '-'; s[i++] = swz[GET_SWZ(swizzle, 3)]; @@ -337,6 +358,19 @@ _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended) } +void +_mesa_print_swizzle(GLuint swizzle) +{ + if (swizzle == SWIZZLE_XYZW) { + _mesa_printf(".xyzw\n"); + } + else { + const char *s = _mesa_swizzle_string(swizzle, 0, 0); + _mesa_printf("%s\n", s); + } +} + + static const char * writemask_string(GLuint writeMask) { @@ -361,8 +395,8 @@ writemask_string(GLuint writeMask) } -static const char * -condcode_string(GLuint condcode) +const char * +_mesa_condcode_string(GLuint condcode) { switch (condcode) { case COND_GT: return "GT"; @@ -385,12 +419,12 @@ print_dst_reg(const struct prog_dst_register *dstReg, gl_prog_print_mode mode, { _mesa_printf("%s%s", reg_string((enum register_file) dstReg->File, - dstReg->Index, mode, prog), + dstReg->Index, mode, dstReg->RelAddr, prog), writemask_string(dstReg->WriteMask)); if (dstReg->CondMask != COND_TR) { _mesa_printf(" (%s.%s)", - condcode_string(dstReg->CondMask), + _mesa_condcode_string(dstReg->CondMask), _mesa_swizzle_string(dstReg->CondSwizzle, GL_FALSE, GL_FALSE)); } @@ -408,9 +442,9 @@ print_src_reg(const struct prog_src_register *srcReg, gl_prog_print_mode mode, { _mesa_printf("%s%s", reg_string((enum register_file) srcReg->File, - srcReg->Index, mode, prog), + srcReg->Index, mode, srcReg->RelAddr, prog), _mesa_swizzle_string(srcReg->Swizzle, - srcReg->NegateBase, GL_FALSE)); + srcReg->NegateBase, GL_FALSE)); #if 0 _mesa_printf("%s[%d]%s", file_string((enum register_file) srcReg->File, mode), @@ -525,7 +559,7 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, _mesa_printf("_SAT"); _mesa_printf(" "); print_dst_reg(&inst->DstReg, mode, prog); - _mesa_printf("%s[%d], %s", + _mesa_printf(", %s[%d], %s", file_string((enum register_file) inst->SrcReg[0].File, mode), inst->SrcReg[0].Index, @@ -535,6 +569,7 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, break; case OPCODE_TEX: case OPCODE_TXP: + case OPCODE_TXL: case OPCODE_TXB: _mesa_printf("%s", _mesa_opcode_string(inst->Opcode)); if (inst->SaturateMode == SATURATE_ZERO_ONE) @@ -555,27 +590,35 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, } print_comment(inst); break; - case OPCODE_ARL: - _mesa_printf("ARL addr.x, "); + + case OPCODE_KIL: + _mesa_printf("%s", _mesa_opcode_string(inst->Opcode)); + _mesa_printf(" "); print_src_reg(&inst->SrcReg[0], mode, prog); print_comment(inst); break; - case OPCODE_BRA: - _mesa_printf("BRA %u (%s%s)", - inst->BranchTarget, - condcode_string(inst->DstReg.CondMask), - _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE)); + case OPCODE_KIL_NV: + _mesa_printf("%s", _mesa_opcode_string(inst->Opcode)); + _mesa_printf(" "); + _mesa_printf("%s.%s", + _mesa_condcode_string(inst->DstReg.CondMask), + _mesa_swizzle_string(inst->DstReg.CondSwizzle, + GL_FALSE, GL_FALSE)); print_comment(inst); break; - case OPCODE_CAL: - _mesa_printf("CAL %u", inst->BranchTarget); + + case OPCODE_ARL: + _mesa_printf("ARL "); + print_dst_reg(&inst->DstReg, mode, prog); + _mesa_printf(", "); + print_src_reg(&inst->SrcReg[0], mode, prog); print_comment(inst); break; - case OPCODE_RET: - _mesa_printf("RET (%s%s); # (goto %d)", - condcode_string(inst->DstReg.CondMask), - _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE), - inst->BranchTarget); + case OPCODE_BRA: + _mesa_printf("BRA %d (%s%s)", + inst->BranchTarget, + _mesa_condcode_string(inst->DstReg.CondMask), + _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE)); print_comment(inst); break; case OPCODE_IF: @@ -588,7 +631,7 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, else { /* Use cond codes */ _mesa_printf("IF (%s%s);", - condcode_string(inst->DstReg.CondMask), + _mesa_condcode_string(inst->DstReg.CondMask), _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE)); } @@ -611,31 +654,44 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, case OPCODE_CONT: _mesa_printf("%s (%s%s); # (goto %d)", _mesa_opcode_string(inst->Opcode), - condcode_string(inst->DstReg.CondMask), + _mesa_condcode_string(inst->DstReg.CondMask), _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE), inst->BranchTarget); print_comment(inst); break; - case OPCODE_BRK0: - case OPCODE_BRK1: - case OPCODE_CONT0: - case OPCODE_CONT1: - _mesa_printf("%s ", _mesa_opcode_string(inst->Opcode)); - print_src_reg(&inst->SrcReg[0], mode, prog); - _mesa_printf("; "); - _mesa_printf(" # (goto %d)", inst->BranchTarget); - print_comment(inst); - break; - case OPCODE_BGNSUB: - _mesa_printf("SUB"); - print_comment(inst); - return indent + 3; + if (mode == PROG_PRINT_NV) { + _mesa_printf("%s:\n", inst->Comment); /* comment is label */ + return indent; + } + else { + _mesa_printf("BGNSUB"); + print_comment(inst); + return indent + 3; + } case OPCODE_ENDSUB: - _mesa_printf("ENDSUB"); + if (mode == PROG_PRINT_DEBUG) { + _mesa_printf("ENDSUB"); + print_comment(inst); + } + break; + case OPCODE_CAL: + if (mode == PROG_PRINT_NV) { + _mesa_printf("CAL %s; # (goto %d)\n", inst->Comment, inst->BranchTarget); + } + else { + _mesa_printf("CAL %u", inst->BranchTarget); + print_comment(inst); + } + break; + case OPCODE_RET: + _mesa_printf("RET (%s%s)", + _mesa_condcode_string(inst->DstReg.CondMask), + _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE)); print_comment(inst); break; + case OPCODE_END: _mesa_printf("END\n"); break; @@ -717,6 +773,8 @@ _mesa_print_program_opt(const struct gl_program *prog, void _mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog) { + GLuint i; + _mesa_printf("InputsRead: 0x%x\n", prog->InputsRead); _mesa_printf("OutputsWritten: 0x%x\n", prog->OutputsWritten); _mesa_printf("NumInstructions=%d\n", prog->NumInstructions); @@ -724,9 +782,14 @@ _mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog) _mesa_printf("NumParameters=%d\n", prog->NumParameters); _mesa_printf("NumAttributes=%d\n", prog->NumAttributes); _mesa_printf("NumAddressRegs=%d\n", prog->NumAddressRegs); - + _mesa_printf("Samplers=[ "); + for (i = 0; i < MAX_SAMPLERS; i++) { + _mesa_printf("%d ", prog->SamplerUnits[i]); + } + _mesa_printf("]\n"); + _mesa_load_state_parameters(ctx, prog->Parameters); - + #if 0 _mesa_printf("Local Params:\n"); for (i = 0; i < MAX_PROGRAM_LOCAL_PARAMS; i++){ @@ -744,6 +807,9 @@ _mesa_print_parameter_list(const struct gl_program_parameter_list *list) const gl_prog_print_mode mode = PROG_PRINT_DEBUG; GLuint i; + if (!list) + return; + _mesa_printf("param list %p\n", (void *) list); for (i = 0; i < list->NumParameters; i++){ struct gl_program_parameter *param = list->Parameters + i;