diff options
Diffstat (limited to 'src/mesa/shader')
| -rw-r--r-- | src/mesa/shader/nvfragparse.c | 244 | ||||
| -rw-r--r-- | src/mesa/shader/nvfragparse.h | 4 | ||||
| -rw-r--r-- | src/mesa/shader/nvvertparse.c | 158 | ||||
| -rw-r--r-- | src/mesa/shader/nvvertparse.h | 5 | 
4 files changed, 4 insertions, 407 deletions
| diff --git a/src/mesa/shader/nvfragparse.c b/src/mesa/shader/nvfragparse.c index b935cb562a..56b7c29bea 100644 --- a/src/mesa/shader/nvfragparse.c +++ b/src/mesa/shader/nvfragparse.c @@ -43,6 +43,7 @@  #include "main/macros.h"  #include "program.h"  #include "prog_parameter.h" +#include "prog_print.h"  #include "prog_instruction.h"  #include "nvfragparse.h" @@ -385,10 +386,6 @@ static const char *InputRegisters[MAX_NV_FRAGMENT_PROGRAM_INPUTS + 1] = {  }; -static const char *OutputRegisters[MAX_NV_FRAGMENT_PROGRAM_OUTPUTS + 1] = { -   "DEPR", "COLR", "DATA0", NULL -}; -  /**********************************************************************/ @@ -1559,7 +1556,7 @@ _mesa_parse_nv_fragment_program(GLcontext *ctx, GLenum dstTarget,  #ifdef DEBUG_foo        _mesa_printf("--- glLoadProgramNV(%d) result ---\n", program->Base.Id); -      _mesa_print_nv_fragment_program(program); +      _mesa_fprint_program_opt(stdout, &program->Base, PROG_PRINT_NV, 0);        _mesa_printf("----------------------------------\n");  #endif     } @@ -1571,243 +1568,6 @@ _mesa_parse_nv_fragment_program(GLcontext *ctx, GLenum dstTarget,  } -static void -PrintSrcReg(const struct gl_fragment_program *program, -            const struct prog_src_register *src) -{ -   static const char comps[5] = "xyzw"; - -   if (src->NegateAbs) { -      _mesa_printf("-"); -   } -   if (src->Abs) { -      _mesa_printf("|"); -   } -   if (src->NegateBase) { -      _mesa_printf("-"); -   } -   if (src->File == PROGRAM_NAMED_PARAM) { -      if (program->Base.Parameters->Parameters[src->Index].Type -          == PROGRAM_CONSTANT) { -         const GLfloat *v; -         v = program->Base.Parameters->ParameterValues[src->Index]; -         _mesa_printf("{%g, %g, %g, %g}", v[0], v[1], v[2], v[3]); -      } -      else { -         ASSERT(program->Base.Parameters->Parameters[src->Index].Type -                == PROGRAM_NAMED_PARAM); -         _mesa_printf("%s", program->Base.Parameters->Parameters[src->Index].Name); -      } -   } -   else if (src->File == PROGRAM_OUTPUT) { -      _mesa_printf("o[%s]", OutputRegisters[src->Index]); -   } -   else if (src->File == PROGRAM_INPUT) { -      _mesa_printf("f[%s]", InputRegisters[src->Index]); -   } -   else if (src->File == PROGRAM_LOCAL_PARAM) { -      _mesa_printf("p[%d]", src->Index); -   } -   else if (src->File == PROGRAM_TEMPORARY) { -      if (src->Index >= 32) -         _mesa_printf("H%d", src->Index); -      else -         _mesa_printf("R%d", src->Index); -   } -   else if (src->File == PROGRAM_WRITE_ONLY) { -      _mesa_printf("%cC", "HR"[src->Index]); -   } -   else { -      _mesa_problem(NULL, "Invalid fragment register %d", src->Index); -      return; -   } -   if (GET_SWZ(src->Swizzle, 0) == GET_SWZ(src->Swizzle, 1) && -       GET_SWZ(src->Swizzle, 0) == GET_SWZ(src->Swizzle, 2) && -       GET_SWZ(src->Swizzle, 0) == GET_SWZ(src->Swizzle, 3)) { -      _mesa_printf(".%c", comps[GET_SWZ(src->Swizzle, 0)]); -   } -   else if (src->Swizzle != SWIZZLE_NOOP) { -      _mesa_printf(".%c%c%c%c", -                   comps[GET_SWZ(src->Swizzle, 0)], -                   comps[GET_SWZ(src->Swizzle, 1)], -                   comps[GET_SWZ(src->Swizzle, 2)], -                   comps[GET_SWZ(src->Swizzle, 3)]); -   } -   if (src->Abs) { -      _mesa_printf("|"); -   } -} - -static void -PrintTextureSrc(const struct prog_instruction *inst) -{ -   _mesa_printf("TEX%d, ", inst->TexSrcUnit); -   switch (inst->TexSrcTarget) { -   case TEXTURE_1D_INDEX: -      _mesa_printf("1D"); -      break; -   case TEXTURE_2D_INDEX: -      _mesa_printf("2D"); -      break; -   case TEXTURE_3D_INDEX: -      _mesa_printf("3D"); -      break; -   case TEXTURE_RECT_INDEX: -      _mesa_printf("RECT"); -      break; -   case TEXTURE_CUBE_INDEX: -      _mesa_printf("CUBE"); -      break; -   default: -      _mesa_problem(NULL, "Invalid textue target in PrintTextureSrc"); -   } -} - -static void -PrintCondCode(const struct prog_dst_register *dst) -{ -   static const char *comps = "xyzw"; -   static const char *ccString[] = { -      "??", "GT", "EQ", "LT", "UN", "GE", "LE", "NE", "TR", "FL", "??" -   }; - -   _mesa_printf("%s", ccString[dst->CondMask]); -   if (GET_SWZ(dst->CondSwizzle, 0) == GET_SWZ(dst->CondSwizzle, 1) && -       GET_SWZ(dst->CondSwizzle, 0) == GET_SWZ(dst->CondSwizzle, 2) && -       GET_SWZ(dst->CondSwizzle, 0) == GET_SWZ(dst->CondSwizzle, 3)) { -      _mesa_printf(".%c", comps[GET_SWZ(dst->CondSwizzle, 0)]); -   } -   else if (dst->CondSwizzle != SWIZZLE_NOOP) { -      _mesa_printf(".%c%c%c%c", -                   comps[GET_SWZ(dst->CondSwizzle, 0)], -                   comps[GET_SWZ(dst->CondSwizzle, 1)], -                   comps[GET_SWZ(dst->CondSwizzle, 2)], -                   comps[GET_SWZ(dst->CondSwizzle, 3)]); -   } -} - - -static void -PrintDstReg(const struct prog_dst_register *dst) -{ -   if (dst->File == PROGRAM_OUTPUT) { -      _mesa_printf("o[%s]", OutputRegisters[dst->Index]); -   } -   else if (dst->File == PROGRAM_TEMPORARY) { -      if (dst->Index >= 32) -         _mesa_printf("H%d", dst->Index); -      else -         _mesa_printf("R%d", dst->Index); -   } -   else if (dst->File == PROGRAM_LOCAL_PARAM) { -      _mesa_printf("p[%d]", dst->Index); -   } -   else if (dst->File == PROGRAM_WRITE_ONLY) { -      _mesa_printf("%cC", "HR"[dst->Index]); -   } -   else { -      _mesa_printf("???"); -   } - -   if (dst->WriteMask != 0 && dst->WriteMask != WRITEMASK_XYZW) { -      _mesa_printf("."); -      if (dst->WriteMask & WRITEMASK_X) -         _mesa_printf("x"); -      if (dst->WriteMask & WRITEMASK_Y) -         _mesa_printf("y"); -      if (dst->WriteMask & WRITEMASK_Z) -         _mesa_printf("z"); -      if (dst->WriteMask & WRITEMASK_W) -         _mesa_printf("w"); -   } - -   if (dst->CondMask != COND_TR || -       dst->CondSwizzle != SWIZZLE_NOOP) { -      _mesa_printf(" ("); -      PrintCondCode(dst); -      _mesa_printf(")"); -   } -} - - -/** - * Print (unparse) the given vertex program.  Just for debugging. - */ -void -_mesa_print_nv_fragment_program(const struct gl_fragment_program *program) -{ -   const struct prog_instruction *inst; - -   for (inst = program->Base.Instructions; inst->Opcode != OPCODE_END; inst++) { -      int i; -      for (i = 0; Instructions[i].name; i++) { -         if (inst->Opcode == Instructions[i].opcode) { -            /* print instruction name */ -            _mesa_printf("%s", Instructions[i].name); -            if (inst->Precision == FLOAT16) -               _mesa_printf("H"); -            else if (inst->Precision == FIXED12) -               _mesa_printf("X"); -            if (inst->CondUpdate) -               _mesa_printf("C"); -            if (inst->SaturateMode == SATURATE_ZERO_ONE) -               _mesa_printf("_SAT"); -            _mesa_printf(" "); - -            if (Instructions[i].inputs == INPUT_CC) { -               PrintCondCode(&inst->DstReg); -            } -            else if (Instructions[i].outputs == OUTPUT_V || -                     Instructions[i].outputs == OUTPUT_S) { -               /* print dest register */ -               PrintDstReg(&inst->DstReg); -               _mesa_printf(", "); -            } - -            /* print source register(s) */ -            if (Instructions[i].inputs == INPUT_1V || -                Instructions[i].inputs == INPUT_1S) { -               PrintSrcReg(program, &inst->SrcReg[0]); -            } -            else if (Instructions[i].inputs == INPUT_2V || -                     Instructions[i].inputs == INPUT_2S) { -               PrintSrcReg(program, &inst->SrcReg[0]); -               _mesa_printf(", "); -               PrintSrcReg(program, &inst->SrcReg[1]); -            } -            else if (Instructions[i].inputs == INPUT_3V) { -               PrintSrcReg(program, &inst->SrcReg[0]); -               _mesa_printf(", "); -               PrintSrcReg(program, &inst->SrcReg[1]); -               _mesa_printf(", "); -               PrintSrcReg(program, &inst->SrcReg[2]); -            } -            else if (Instructions[i].inputs == INPUT_1V_T) { -               PrintSrcReg(program, &inst->SrcReg[0]); -               _mesa_printf(", "); -               PrintTextureSrc(inst); -            } -            else if (Instructions[i].inputs == INPUT_3V_T) { -               PrintSrcReg(program, &inst->SrcReg[0]); -               _mesa_printf(", "); -               PrintSrcReg(program, &inst->SrcReg[1]); -               _mesa_printf(", "); -               PrintSrcReg(program, &inst->SrcReg[2]); -               _mesa_printf(", "); -               PrintTextureSrc(inst); -            } -            _mesa_printf(";\n"); -            break; -         } -      } -      if (!Instructions[i].name) { -         _mesa_printf("Invalid opcode %d\n", inst->Opcode); -      } -   } -   _mesa_printf("END\n"); -} - -  const char *  _mesa_nv_fragment_input_register_name(GLuint i)  { diff --git a/src/mesa/shader/nvfragparse.h b/src/mesa/shader/nvfragparse.h index ac97921080..544ab80c56 100644 --- a/src/mesa/shader/nvfragparse.h +++ b/src/mesa/shader/nvfragparse.h @@ -37,10 +37,6 @@ _mesa_parse_nv_fragment_program(GLcontext *ctx, GLenum target,                                  struct gl_fragment_program *program); -extern void -_mesa_print_nv_fragment_program(const struct gl_fragment_program *program); - -  extern const char *  _mesa_nv_fragment_input_register_name(GLuint i); diff --git a/src/mesa/shader/nvvertparse.c b/src/mesa/shader/nvvertparse.c index 268b577aec..624262395b 100644 --- a/src/mesa/shader/nvvertparse.c +++ b/src/mesa/shader/nvvertparse.c @@ -44,6 +44,7 @@  #include "nvprogram.h"  #include "nvvertparse.h"  #include "prog_instruction.h" +#include "prog_print.h"  #include "program.h" @@ -1394,7 +1395,7 @@ _mesa_parse_nv_vertex_program(GLcontext *ctx, GLenum dstTarget,  #ifdef DEBUG_foo        _mesa_printf("--- glLoadProgramNV result ---\n"); -      _mesa_print_nv_vertex_program(program); +      _mesa_fprint_program_opt(stdout, &program->Base, PROG_PRINT_NV, 0);        _mesa_printf("------------------------------\n");  #endif     } @@ -1410,161 +1411,6 @@ _mesa_parse_nv_vertex_program(GLcontext *ctx, GLenum dstTarget,  } -static void -PrintSrcReg(const struct prog_src_register *src) -{ -   static const char comps[5] = "xyzw"; -   if (src->NegateBase) -      _mesa_printf("-"); -   if (src->RelAddr) { -      if (src->Index > 0) -         _mesa_printf("c[A0.x + %d]", src->Index); -      else if (src->Index < 0) -         _mesa_printf("c[A0.x - %d]", -src->Index); -      else -         _mesa_printf("c[A0.x]"); -   } -   else if (src->File == PROGRAM_OUTPUT) { -      _mesa_printf("o[%s]", OutputRegisters[src->Index]); -   } -   else if (src->File == PROGRAM_INPUT) { -      _mesa_printf("v[%s]", InputRegisters[src->Index]); -   } -   else if (src->File == PROGRAM_ENV_PARAM) { -      _mesa_printf("c[%d]", src->Index); -   } -   else { -      ASSERT(src->File == PROGRAM_TEMPORARY); -      _mesa_printf("R%d", src->Index); -   } - -   if (GET_SWZ(src->Swizzle, 0) == GET_SWZ(src->Swizzle, 1) && -       GET_SWZ(src->Swizzle, 0) == GET_SWZ(src->Swizzle, 2) && -       GET_SWZ(src->Swizzle, 0) == GET_SWZ(src->Swizzle, 3)) { -      _mesa_printf(".%c", comps[GET_SWZ(src->Swizzle, 0)]); -   } -   else if (src->Swizzle != SWIZZLE_NOOP) { -      _mesa_printf(".%c%c%c%c", -             comps[GET_SWZ(src->Swizzle, 0)], -             comps[GET_SWZ(src->Swizzle, 1)], -             comps[GET_SWZ(src->Swizzle, 2)], -             comps[GET_SWZ(src->Swizzle, 3)]); -   } -} - - -static void -PrintDstReg(const struct prog_dst_register *dst) -{ -   if (dst->File == PROGRAM_OUTPUT) { -      _mesa_printf("o[%s]", OutputRegisters[dst->Index]); -   } -   else if (dst->File == PROGRAM_INPUT) { -      _mesa_printf("v[%s]", InputRegisters[dst->Index]); -   } -   else if (dst->File == PROGRAM_ENV_PARAM) { -      _mesa_printf("c[%d]", dst->Index); -   } -   else { -      ASSERT(dst->File == PROGRAM_TEMPORARY); -      _mesa_printf("R%d", dst->Index); -   } - -   if (dst->WriteMask != 0 && dst->WriteMask != WRITEMASK_XYZW) { -      _mesa_printf("."); -      if (dst->WriteMask & WRITEMASK_X) -         _mesa_printf("x"); -      if (dst->WriteMask & WRITEMASK_Y) -         _mesa_printf("y"); -      if (dst->WriteMask & WRITEMASK_Z) -         _mesa_printf("z"); -      if (dst->WriteMask & WRITEMASK_W) -         _mesa_printf("w"); -   } -} - - -/** - * Print a single NVIDIA vertex program instruction. - */ -void -_mesa_print_nv_vertex_instruction(const struct prog_instruction *inst) -{ -   GLuint i, n; - -   switch (inst->Opcode) { -      case OPCODE_MOV: -      case OPCODE_LIT: -      case OPCODE_RCP: -      case OPCODE_RSQ: -      case OPCODE_EXP: -      case OPCODE_LOG: -      case OPCODE_RCC: -      case OPCODE_ABS: -      case OPCODE_MUL: -      case OPCODE_ADD: -      case OPCODE_DP3: -      case OPCODE_DP4: -      case OPCODE_DST: -      case OPCODE_MIN: -      case OPCODE_MAX: -      case OPCODE_SLT: -      case OPCODE_SGE: -      case OPCODE_DPH: -      case OPCODE_SUB: -      case OPCODE_MAD: -         _mesa_printf("%s ", _mesa_opcode_string(inst->Opcode)); -         PrintDstReg(&inst->DstReg); -         _mesa_printf(", "); -         n = _mesa_num_inst_src_regs(inst->Opcode); -         for (i = 0; i < n; i++) { -            PrintSrcReg(&inst->SrcReg[i]); -            if (i + 1 < n) -               _mesa_printf(", "); -         } -         _mesa_printf(";\n"); -         break; -      case OPCODE_ARL: -         _mesa_printf("ARL A0.x, "); -         PrintSrcReg(&inst->SrcReg[0]); -         _mesa_printf(";\n"); -         break; -      case OPCODE_PRINT: -         _mesa_printf("PRINT '%s'", inst->Data); -         if (inst->SrcReg[0].File != PROGRAM_UNDEFINED) { -            _mesa_printf(", "); -            PrintSrcReg(&inst->SrcReg[0]); -            _mesa_printf(";\n"); -         } -         else { -            _mesa_printf("\n"); -         } -         break; -      case OPCODE_END: -         _mesa_printf("END\n"); -         break; -      default: -         _mesa_printf("BAD INSTRUCTION\n"); -   } -} - - -/** - * Print (unparse) the given vertex program.  Just for debugging. - */ -void -_mesa_print_nv_vertex_program(const struct gl_vertex_program *program) -{ -   const struct prog_instruction *inst; - -   for (inst = program->Base.Instructions; ; inst++) { -      _mesa_print_nv_vertex_instruction(inst); -      if (inst->Opcode == OPCODE_END) -         return; -   } -} - -  const char *  _mesa_nv_vertex_input_register_name(GLuint i)  { diff --git a/src/mesa/shader/nvvertparse.h b/src/mesa/shader/nvvertparse.h index 15fb03cd4e..9919e22388 100644 --- a/src/mesa/shader/nvvertparse.h +++ b/src/mesa/shader/nvvertparse.h @@ -35,11 +35,6 @@ _mesa_parse_nv_vertex_program(GLcontext *ctx, GLenum target,                                const GLubyte *str, GLsizei len,                                struct gl_vertex_program *program); -extern void -_mesa_print_nv_vertex_instruction(const struct prog_instruction *inst); - -extern void -_mesa_print_nv_vertex_program(const struct gl_vertex_program *program);  extern const char *  _mesa_nv_vertex_input_register_name(GLuint i); | 
