mesa: Branch 'glsl-compiler-1' - 2 commits

Brian Paul brianp at kemper.freedesktop.org
Thu Feb 22 16:43:30 UTC 2007


 src/mesa/shader/arbprogparse.c        |  234 ++--------------------------------
 src/mesa/shader/prog_parameter.c      |    2 
 src/mesa/shader/prog_statevars.c      |   71 +++-------
 src/mesa/shader/prog_statevars.h      |    4 
 src/mesa/shader/programopt.c          |    9 -
 src/mesa/shader/slang/slang_builtin.c |   18 +-
 src/mesa/tnl/t_vp_build.c             |    4 
 7 files changed, 66 insertions(+), 276 deletions(-)

New commits:
diff-tree b618ac8c0b6d8ebd8af6c6d44d368f6b033acae8 (from 776bc9cf55b116e17dddde4d097985b51879c83f)
Author: Brian <brian at yutani.localnet.net>
Date:   Thu Feb 22 09:39:25 2007 -0700

    updated debug code

diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c
index 9dbcb60..43e2c7e 100644
--- a/src/mesa/shader/arbprogparse.c
+++ b/src/mesa/shader/arbprogparse.c
@@ -3336,206 +3336,18 @@ parse_vp_instruction (GLcontext * ctx, c
 #if DEBUG_PARSING
 
 static GLvoid
-print_state_token (GLint token)
-{
-   switch (token) {
-      case STATE_MATERIAL:
-         fprintf (stderr, "STATE_MATERIAL ");
-         break;
-      case STATE_LIGHT:
-         fprintf (stderr, "STATE_LIGHT ");
-         break;
-
-      case STATE_LIGHTMODEL_AMBIENT:
-         fprintf (stderr, "STATE_AMBIENT ");
-         break;
-
-      case STATE_LIGHTMODEL_SCENECOLOR:
-         fprintf (stderr, "STATE_SCENECOLOR ");
-         break;
-
-      case STATE_LIGHTPROD:
-         fprintf (stderr, "STATE_LIGHTPROD ");
-         break;
-
-      case STATE_TEXGEN:
-         fprintf (stderr, "STATE_TEXGEN ");
-         break;
-
-      case STATE_FOG:
-         fprintf (stderr, "STATE_FOG ");
-         break;
-
-      case STATE_FOG_COLOR:
-         fprintf (stderr, "STATE_FOG_COLOR ");
-         break;
-
-      case STATE_FOG_PARAMS:
-         fprintf (stderr, "STATE_FOG_PARAMS ");
-         break;
-
-      case STATE_CLIPPLANE:
-         fprintf (stderr, "STATE_CLIPPLANE ");
-         break;
-
-      case STATE_POINT:
-         fprintf (stderr, "STATE_POINT ");
-         break;
-
-      case STATE_POINT_SIZE:
-         fprintf (stderr, "STATE_POINT_SIZE ");
-         break;
-
-      case STATE_POINT_ATTENUATION:
-         fprintf (stderr, "STATE_ATTENUATION ");
-         break;
-
-      case STATE_MATRIX:
-         fprintf (stderr, "STATE_MATRIX ");
-         break;
-
-      case STATE_MODELVIEW:
-         fprintf (stderr, "STATE_MODELVIEW ");
-         break;
-
-      case STATE_PROJECTION:
-         fprintf (stderr, "STATE_PROJECTION ");
-         break;
-
-      case STATE_MVP:
-         fprintf (stderr, "STATE_MVP ");
-         break;
-
-      case STATE_TEXTURE:
-         fprintf (stderr, "STATE_TEXTURE ");
-         break;
-
-      case STATE_PROGRAM:
-         fprintf (stderr, "STATE_PROGRAM ");
-         break;
-
-      case STATE_MATRIX_INVERSE:
-         fprintf (stderr, "STATE_INVERSE ");
-         break;
-
-      case STATE_MATRIX_TRANSPOSE:
-         fprintf (stderr, "STATE_TRANSPOSE ");
-         break;
-
-      case STATE_MATRIX_INVTRANS:
-         fprintf (stderr, "STATE_INVTRANS ");
-         break;
-
-      case STATE_AMBIENT:
-         fprintf (stderr, "STATE_AMBIENT ");
-         break;
-
-      case STATE_DIFFUSE:
-         fprintf (stderr, "STATE_DIFFUSE ");
-         break;
-
-      case STATE_SPECULAR:
-         fprintf (stderr, "STATE_SPECULAR ");
-         break;
-
-      case STATE_EMISSION:
-         fprintf (stderr, "STATE_EMISSION ");
-         break;
-
-      case STATE_SHININESS:
-         fprintf (stderr, "STATE_SHININESS ");
-         break;
-
-      case STATE_HALF:
-         fprintf (stderr, "STATE_HALF ");
-         break;
-
-      case STATE_POSITION:
-         fprintf (stderr, "STATE_POSITION ");
-         break;
-
-      case STATE_ATTENUATION:
-         fprintf (stderr, "STATE_ATTENUATION ");
-         break;
-
-      case STATE_SPOT_DIRECTION:
-         fprintf (stderr, "STATE_DIRECTION ");
-         break;
-
-      case STATE_TEXGEN_EYE_S:
-         fprintf (stderr, "STATE_TEXGEN_EYE_S ");
-         break;
-
-      case STATE_TEXGEN_EYE_T:
-         fprintf (stderr, "STATE_TEXGEN_EYE_T ");
-         break;
-
-      case STATE_TEXGEN_EYE_R:
-         fprintf (stderr, "STATE_TEXGEN_EYE_R ");
-         break;
-
-      case STATE_TEXGEN_EYE_Q:
-         fprintf (stderr, "STATE_TEXGEN_EYE_Q ");
-         break;
-
-      case STATE_TEXGEN_OBJECT_S:
-         fprintf (stderr, "STATE_TEXGEN_EYE_S ");
-         break;
-
-      case STATE_TEXGEN_OBJECT_T:
-         fprintf (stderr, "STATE_TEXGEN_OBJECT_T ");
-         break;
-
-      case STATE_TEXGEN_OBJECT_R:
-         fprintf (stderr, "STATE_TEXGEN_OBJECT_R ");
-         break;
-
-      case STATE_TEXGEN_OBJECT_Q:
-         fprintf (stderr, "STATE_TEXGEN_OBJECT_Q ");
-         break;
-
-      case STATE_TEXENV_COLOR:
-         fprintf (stderr, "STATE_TEXENV_COLOR ");
-         break;
-
-      case STATE_DEPTH_RANGE:
-         fprintf (stderr, "STATE_DEPTH_RANGE ");
-         break;
-
-      case STATE_VERTEX_PROGRAM:
-         fprintf (stderr, "STATE_VERTEX_PROGRAM ");
-         break;
-
-      case STATE_FRAGMENT_PROGRAM:
-         fprintf (stderr, "STATE_FRAGMENT_PROGRAM ");
-         break;
-
-      case STATE_ENV:
-         fprintf (stderr, "STATE_ENV ");
-         break;
-
-      case STATE_LOCAL:
-         fprintf (stderr, "STATE_LOCAL ");
-         break;
-
-   }
-   fprintf (stderr, "[%d] ", token);
-}
-
-
-static GLvoid
 debug_variables (GLcontext * ctx, struct var_cache *vc_head,
                  struct arb_program *Program)
 {
    struct var_cache *vc;
    GLint a, b;
 
-   fprintf (stderr, "debug_variables, vc_head: %x\n", vc_head);
+   fprintf (stderr, "debug_variables, vc_head: %p\n", (void*) vc_head);
 
    /* First of all, print out the contents of the var_cache */
    vc = vc_head;
    while (vc) {
-      fprintf (stderr, "[%x]\n", vc);
+      fprintf (stderr, "[%p]\n", (void*) vc);
       switch (vc->type) {
          case vt_none:
             fprintf (stderr, "UNDEFINED %s\n", vc->name);
@@ -3550,27 +3362,20 @@ debug_variables (GLcontext * ctx, struct
             b = vc->param_binding_begin;
             for (a = 0; a < vc->param_binding_length; a++) {
                fprintf (stderr, "%s\n",
-                        Program->Parameters->Parameters[a + b].Name);
-               if (Program->Parameters->Parameters[a + b].Type == STATE) {
-                  print_state_token (Program->Parameters->Parameters[a + b].
-                                     StateIndexes[0]);
-                  print_state_token (Program->Parameters->Parameters[a + b].
-                                     StateIndexes[1]);
-                  print_state_token (Program->Parameters->Parameters[a + b].
-                                     StateIndexes[2]);
-                  print_state_token (Program->Parameters->Parameters[a + b].
-                                     StateIndexes[3]);
-                  print_state_token (Program->Parameters->Parameters[a + b].
-                                     StateIndexes[4]);
-                  print_state_token (Program->Parameters->Parameters[a + b].
-                                     StateIndexes[5]);
+                        Program->Base.Parameters->Parameters[a + b].Name);
+               if (Program->Base.Parameters->Parameters[a + b].Type == PROGRAM_STATE_VAR) {
+                  const char *s;
+                  s = _mesa_program_state_string(Program->Base.Parameters->Parameters
+                                                 [a + b].StateIndexes);
+                  fprintf(stderr, "%s\n", s);
+                  _mesa_free((char *) s);
                }
                else
                   fprintf (stderr, "%f %f %f %f\n",
-                           Program->Parameters->Parameters[a + b].Values[0],
-                           Program->Parameters->Parameters[a + b].Values[1],
-                           Program->Parameters->Parameters[a + b].Values[2],
-                           Program->Parameters->Parameters[a + b].Values[3]);
+                           Program->Base.Parameters->ParameterValues[a + b][0],
+                           Program->Base.Parameters->ParameterValues[a + b][1],
+                           Program->Base.Parameters->ParameterValues[a + b][2],
+                           Program->Base.Parameters->ParameterValues[a + b][3]);
             }
             break;
          case vt_temp:
@@ -3583,9 +3388,12 @@ debug_variables (GLcontext * ctx, struct
             break;
          case vt_alias:
             fprintf (stderr, "ALIAS     %s\n", vc->name);
-            fprintf (stderr, "          binding: 0x%x (%s)\n",
-                     vc->alias_binding, vc->alias_binding->name);
+            fprintf (stderr, "          binding: 0x%p (%s)\n",
+                     (void*) vc->alias_binding, vc->alias_binding->name);
             break;
+         default:
+            /* nothing */
+            ;
       }
       vc = vc->next;
    }
diff-tree 776bc9cf55b116e17dddde4d097985b51879c83f (from 3f4826a358cab8b6d638fc8eb46aef668a7bcf46)
Author: Brian <brian at yutani.localnet.net>
Date:   Thu Feb 22 09:29:46 2007 -0700

    Undo some STATE_POINT/FOG changes.  Max length of state token array is now 5.

diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c
index 480fdf5..9dbcb60 100644
--- a/src/mesa/shader/arbprogparse.c
+++ b/src/mesa/shader/arbprogparse.c
@@ -1276,13 +1276,11 @@ parse_state_single_item (GLcontext * ctx
       case STATE_POINT:
          switch (*(*inst++)) {
             case POINT_SIZE:
-               state_tokens[0] = STATE_POINT;
-               state_tokens[1] = STATE_POINT_SIZE;
+               state_tokens[0] = STATE_POINT_SIZE;
                break;
 
             case POINT_ATTENUATION:
-               state_tokens[0] = STATE_POINT;
-               state_tokens[1] = STATE_POINT_ATTENUATION;
+               state_tokens[0] = STATE_POINT_ATTENUATION;
                break;
          }
          break;
diff --git a/src/mesa/shader/prog_parameter.c b/src/mesa/shader/prog_parameter.c
index 3ebd559..505c501 100644
--- a/src/mesa/shader/prog_parameter.c
+++ b/src/mesa/shader/prog_parameter.c
@@ -379,7 +379,7 @@ _mesa_add_state_reference(struct gl_prog
    /* Check if the state reference is already in the list */
    for (index = 0; index < (GLint) paramList->NumParameters; index++) {
       GLuint i, match = 0;
-      for (i = 0; i < 6; i++) {
+      for (i = 0; i < STATE_LENGTH; i++) {
          if (paramList->Parameters[index].StateIndexes[i] == stateTokens[i]) {
             match++;
          }
diff --git a/src/mesa/shader/prog_statevars.c b/src/mesa/shader/prog_statevars.c
index 5377818..0d70af3 100644
--- a/src/mesa/shader/prog_statevars.c
+++ b/src/mesa/shader/prog_statevars.c
@@ -246,17 +246,14 @@ _mesa_fetch_state(GLcontext *ctx, const 
          COPY_4V(value, ctx->Texture.Unit[unit].EnvColor);
       }			
       return;
-   case STATE_FOG:
-      if (state[1] == STATE_FOG_COLOR) {
-         COPY_4V(value, ctx->Fog.Color);
-      }
-      else {
-         ASSERT(state[1] == STATE_FOG_PARAMS);
-         value[0] = ctx->Fog.Density;
-         value[1] = ctx->Fog.Start;
-         value[2] = ctx->Fog.End;
-         value[3] = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
-      }
+   case STATE_FOG_COLOR:
+      COPY_4V(value, ctx->Fog.Color);
+      return;
+   case STATE_FOG_PARAMS:
+      value[0] = ctx->Fog.Density;
+      value[1] = ctx->Fog.Start;
+      value[2] = ctx->Fog.End;
+      value[3] = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
       return;
    case STATE_CLIPPLANE:
       {
@@ -264,20 +261,17 @@ _mesa_fetch_state(GLcontext *ctx, const 
          COPY_4V(value, ctx->Transform.EyeUserPlane[plane]);
       }
       return;
-   case STATE_POINT:
-      if (state[1] == STATE_POINT_SIZE) {
-         value[0] = ctx->Point.Size;
-         value[1] = ctx->Point.MinSize;
-         value[2] = ctx->Point.MaxSize;
-         value[3] = ctx->Point.Threshold;
-      }
-      else {
-         ASSERT(state[1] == STATE_POINT_ATTENUATION);
-         value[0] = ctx->Point.Params[0];
-         value[1] = ctx->Point.Params[1];
-         value[2] = ctx->Point.Params[2];
-         value[3] = 1.0F;
-      }
+   case STATE_POINT_SIZE:
+      value[0] = ctx->Point.Size;
+      value[1] = ctx->Point.MinSize;
+      value[2] = ctx->Point.MaxSize;
+      value[3] = ctx->Point.Threshold;
+      return;
+   case STATE_POINT_ATTENUATION:
+      value[0] = ctx->Point.Params[0];
+      value[1] = ctx->Point.Params[1];
+      value[2] = ctx->Point.Params[2];
+      value[3] = 1.0F;
       return;
    case STATE_MODELVIEW_MATRIX:
    case STATE_PROJECTION_MATRIX:
@@ -459,17 +453,15 @@ _mesa_program_state_flags(const GLint st
    case STATE_TEXENV_COLOR:
       return _NEW_TEXTURE;
 
-   case STATE_FOG:
-#if 0
    case STATE_FOG_COLOR:
    case STATE_FOG_PARAMS:
-#endif
       return _NEW_FOG;
 
    case STATE_CLIPPLANE:
       return _NEW_TRANSFORM;
 
-   case STATE_POINT:
+   case STATE_POINT_SIZE:
+   case STATE_POINT_ATTENUATION:
       return _NEW_POINT;
 
    case STATE_MODELVIEW_MATRIX:
@@ -543,26 +535,20 @@ append_token(char *dst, gl_state_index k
    case STATE_TEXGEN:
       append(dst, "texgen");
       break;
-   case STATE_FOG:
-      append(dst, "fog");
-      break;
    case STATE_FOG_COLOR:
-      append(dst, ".color");
+      append(dst, "fog.color");
       break;
    case STATE_FOG_PARAMS:
-      append(dst, ".params");
+      append(dst, "fog.params");
       break;
    case STATE_CLIPPLANE:
       append(dst, "clip");
       break;
-   case STATE_POINT:
-      append(dst, "point");
-      break;
    case STATE_POINT_SIZE:
-      append(dst, "size");
+      append(dst, "point.size");
       break;
    case STATE_POINT_ATTENUATION:
-      append(dst, "attenuation");
+      append(dst, "point.attenuation");
       break;
    case STATE_MODELVIEW_MATRIX:
       append(dst, "matrix.modelview");
@@ -733,17 +719,10 @@ _mesa_program_state_string(const GLint s
       append_index(str, state[1]); /* tex unit [i] */
       append(str, "color");
       break;
-   case STATE_FOG:
-      append(str, "fog");
-      append_token(str, (gl_state_index) state[1]); /* color or params */
-      break;
    case STATE_CLIPPLANE:
       append_index(str, state[1]); /* plane [i] */
       append(str, ".plane");
       break;
-   case STATE_POINT:
-      append_token(str, state[1]);
-      break;
    case STATE_MODELVIEW_MATRIX:
    case STATE_PROJECTION_MATRIX:
    case STATE_MVP_MATRIX:
diff --git a/src/mesa/shader/prog_statevars.h b/src/mesa/shader/prog_statevars.h
index 91713f3..8216934 100644
--- a/src/mesa/shader/prog_statevars.h
+++ b/src/mesa/shader/prog_statevars.h
@@ -32,7 +32,7 @@
  * Number of STATE_* values we need to address any GL state.
  * Used to dimension arrays.
  */
-#define STATE_LENGTH 6
+#define STATE_LENGTH 5
 
 
 /**
@@ -54,13 +54,11 @@ typedef enum gl_state_index_ {
 
    STATE_TEXGEN,
 
-   STATE_FOG,
    STATE_FOG_COLOR,
    STATE_FOG_PARAMS,
 
    STATE_CLIPPLANE,
 
-   STATE_POINT,
    STATE_POINT_SIZE,
    STATE_POINT_ATTENUATION,
 
diff --git a/src/mesa/shader/programopt.c b/src/mesa/shader/programopt.c
index 05a05cd..18da39c 100644
--- a/src/mesa/shader/programopt.c
+++ b/src/mesa/shader/programopt.c
@@ -56,7 +56,7 @@ _mesa_insert_mvp_code(GLcontext *ctx, st
     * Setup state references for the modelview/projection matrix.
     * XXX we should check if these state vars are already declared.
     */
-   static const GLint mvpState[4][5] = {
+   static const GLint mvpState[4][STATE_LENGTH] = {
       { STATE_MVP_MATRIX, 0, 0, 0, 0 },  /* state.matrix.mvp.row[0] */
       { STATE_MVP_MATRIX, 0, 1, 1, 0 },  /* state.matrix.mvp.row[1] */
       { STATE_MVP_MATRIX, 0, 2, 2, 0 },  /* state.matrix.mvp.row[2] */
@@ -125,9 +125,10 @@ _mesa_insert_mvp_code(GLcontext *ctx, st
 void
 _mesa_append_fog_code(GLcontext *ctx, struct gl_fragment_program *fprog)
 {
-   static const GLint fogPStateOpt[] = { STATE_INTERNAL,
-					 STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 };
-   static const GLint fogColorState[] = { STATE_FOG, STATE_FOG_COLOR, 0, 0, 0};
+   static const GLint fogPStateOpt[STATE_LENGTH]
+      = { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 };
+   static const GLint fogColorState[STATE_LENGTH]
+      = { STATE_FOG_COLOR, 0, 0, 0, 0};
    struct prog_instruction *newInst, *inst;
    const GLuint origLen = fprog->Base.NumInstructions;
    const GLuint newLen = origLen + 5;
diff --git a/src/mesa/shader/slang/slang_builtin.c b/src/mesa/shader/slang/slang_builtin.c
index 47e6bcb..7f4290b 100644
--- a/src/mesa/shader/slang/slang_builtin.c
+++ b/src/mesa/shader/slang/slang_builtin.c
@@ -99,6 +99,13 @@ lookup_statevar(const char *var, GLint i
       tokens[0] = STATE_CLIPPLANE;
       tokens[1] = index1;
    }
+   else if (strcmp(var, "gl_Point") == 0) {
+      if (strcmp(field, "size") == 0) {
+         tokens[0] = STATE_POINT_SIZE;
+         *swizzleOut = SWIZZLE_XXXX;
+      }
+         /* XXX finish */
+   }
    else if (strcmp(var, "gl_FrontMaterial") == 0 ||
             strcmp(var, "gl_BackMaterial") == 0) {
       tokens[0] = STATE_MATERIAL;
@@ -269,24 +276,23 @@ lookup_statevar(const char *var, GLint i
       tokens[2] = STATE_TEXGEN_OBJECT_Q;
    }
    else if (strcmp(var, "gl_Fog") == 0) {
-      tokens[0] = STATE_FOG;
       if (strcmp(field, "color") == 0) {
-         tokens[1] = STATE_FOG_COLOR;
+         tokens[0] = STATE_FOG_COLOR;
       }
       else if (strcmp(field, "density") == 0) {
-         tokens[1] = STATE_FOG_PARAMS;
+         tokens[0] = STATE_FOG_PARAMS;
          *swizzleOut = SWIZZLE_XXXX;
       }
       else if (strcmp(field, "start") == 0) {
-         tokens[1] = STATE_FOG_PARAMS;
+         tokens[0] = STATE_FOG_PARAMS;
          *swizzleOut = SWIZZLE_YYYY;
       }
       else if (strcmp(field, "end") == 0) {
-         tokens[1] = STATE_FOG_PARAMS;
+         tokens[0] = STATE_FOG_PARAMS;
          *swizzleOut = SWIZZLE_ZZZZ;
       }
       else if (strcmp(field, "scale") == 0) {
-         tokens[1] = STATE_FOG_PARAMS;
+         tokens[0] = STATE_FOG_PARAMS;
          *swizzleOut = SWIZZLE_WWWW;
       }
       else {
diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c
index 2837825..17f115f 100644
--- a/src/mesa/tnl/t_vp_build.c
+++ b/src/mesa/tnl/t_vp_build.c
@@ -1323,8 +1323,8 @@ static void build_texture_transform( str
 static void build_pointsize( struct tnl_program *p )
 {
    struct ureg eye = get_eye_position(p);
-   struct ureg state_size = register_param2(p, STATE_POINT, STATE_POINT_SIZE);
-   struct ureg state_attenuation = register_param2(p, STATE_POINT, STATE_POINT_ATTENUATION);
+   struct ureg state_size = register_param1(p, STATE_POINT_SIZE);
+   struct ureg state_attenuation = register_param1(p, STATE_POINT_ATTENUATION);
    struct ureg out = register_output(p, VERT_RESULT_PSIZ);
    struct ureg ut = get_temp(p);
 



More information about the mesa-commit mailing list