From f407cada8aa0bfea1b8dfae766392162c702aaa4 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 27 Mar 2007 14:53:17 -0600 Subject: fix some printing issues related to subroutines --- src/mesa/shader/prog_print.c | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) (limited to 'src/mesa/shader') diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index 8fa7ef3d82..4ecdc82d15 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -567,17 +567,6 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE)); print_comment(inst); break; - case OPCODE_CAL: - _mesa_printf("CAL %u", inst->BranchTarget); - 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); - print_comment(inst); - break; case OPCODE_IF: if (inst->SrcReg[0].File != PROGRAM_UNDEFINED) { /* Use ordinary register */ @@ -629,13 +618,38 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent, break; case OPCODE_BGNSUB: - _mesa_printf("BGNSUB"); - 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;\n", inst->Comment); + } + else { + _mesa_printf("CAL %u", inst->BranchTarget); + 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); print_comment(inst); break; + case OPCODE_END: _mesa_printf("END\n"); break; -- cgit v1.2.3