- parse_alias() Was totally borked
authorKarl Rasche <karlrasche@gmail.com>
Sun, 23 Nov 2003 19:29:18 +0000 (19:29 +0000)
committerKarl Rasche <karlrasche@gmail.com>
Sun, 23 Nov 2003 19:29:18 +0000 (19:29 +0000)
- forgot a ++ in texSrcBit switch
- copy/paste error in arbfragparse.c

src/mesa/main/arbfragparse.c
src/mesa/main/arbparse.c

index a12fd93cf3720adba4a5c104f9bab1e276da2631..1723e6c5d9a8a7784158736060737a5f66c31bb6 100644 (file)
@@ -184,7 +184,7 @@ _mesa_parse_arb_fragment_program(GLcontext * ctx, GLenum target,
                                  const GLubyte * str, GLsizei len,
                                  struct fragment_program *program)
 {
-   GLuint retval;
+   GLuint a, retval;
    struct arb_program ap;
        
    retval = _mesa_parse_arb_program(ctx, str, len, &ap);
@@ -200,8 +200,8 @@ _mesa_parse_arb_fragment_program(GLcontext * ctx, GLenum target,
        
    program->InputsRead     = ap.InputsRead;
    program->OutputsWritten = ap.OutputsWritten;
-   for (retval=0; retval<MAX_TEXTURE_IMAGE_UNITS; retval++)
-      program->TexturesUsed[retval] = ap.TexturesUsed[retval];
+   for (a=0; a<MAX_TEXTURE_IMAGE_UNITS; a++)
+      program->TexturesUsed[a] = ap.TexturesUsed[a];
    program->NumAluInstructions = ap.NumAluInstructions;
    program->NumTexInstructions = ap.NumTexInstructions;
    program->NumTexIndirections = ap.NumTexIndirections;
index a300c5d200a95e74baefbf5f8e3e1f341ada506a..e510f969760796e56128eceec0b2fdd0cda082e2 100644 (file)
@@ -42,7 +42,6 @@
 #include "nvfragprog.h"
 #include "arbparse.h"
 
-
 /* TODO:
  *    Fragment Program Stuff:
  *    -----------------------------------------------------
@@ -2726,7 +2725,7 @@ struct var_cache
    GLuint output_binding_idx;   /* This is the index into the result register file
                                  * corresponding to the bound result state         */
    struct var_cache *alias_binding;     /* For type vt_alias, points to the var_cache entry
-                                         * that this is aliased to                         */
+                                         * that this is aliased to                         */
    GLuint param_binding_type;   /* {PROGRAM_STATE_VAR, PROGRAM_LOCAL_PARAM, 
                                  *    PROGRAM_ENV_PARAM}                           */
    GLuint param_binding_begin;  /* This is the offset into the program_parameter_list where
@@ -4116,41 +4115,40 @@ parse_alias (GLcontext * ctx, GLubyte ** inst, struct var_cache **vc_head,
    struct var_cache *temp_var;
    char *error_msg;
 
-   while (**inst != 0) {
-      temp_var = parse_string (inst, vc_head, Program, &found);
-      Program->Position = parse_position (inst);
-      if (found) {
-         error_msg =
+       
+   temp_var = parse_string (inst, vc_head, Program, &found);
+   Program->Position = parse_position (inst);
+
+   if (found) {
+      error_msg =
+         _mesa_malloc (_mesa_strlen ((char *) temp_var->name) + 40);
+      _mesa_sprintf (error_msg, "Duplicate Varible Declaration: %s",
+                     temp_var->name);
+
+      _mesa_set_program_error (ctx, Program->Position, error_msg);
+      _mesa_error (ctx, GL_INVALID_OPERATION, error_msg);
+
+      _mesa_free (error_msg);
+      return 1;
+   }
+
+   temp_var->type = vt_alias;
+   temp_var->alias_binding =  parse_string (inst, vc_head, Program, &found);
+   Program->Position = parse_position (inst);
+
+   if (!found)
+   {
+       error_msg =
             _mesa_malloc (_mesa_strlen ((char *) temp_var->name) + 40);
-         _mesa_sprintf (error_msg, "Duplicate Varible Declaration: %s",
-                        temp_var->name);
+         _mesa_sprintf (error_msg, "Alias value %s is not defined",
+                        temp_var->alias_binding->name);
 
          _mesa_set_program_error (ctx, Program->Position, error_msg);
          _mesa_error (ctx, GL_INVALID_OPERATION, error_msg);
 
          _mesa_free (error_msg);
          return 1;
-      }
-
-      temp_var->type = vt_temp;
-
-      if (((Program->type == GL_FRAGMENT_PROGRAM_ARB) &&
-           (Program->Base.NumTemporaries >=
-            ctx->Const.MaxFragmentProgramTemps))
-          || ((Program->type == GL_VERTEX_PROGRAM_ARB)
-              && (Program->Base.NumTemporaries >=
-                  ctx->Const.MaxVertexProgramTemps))) {
-         _mesa_set_program_error (ctx, Program->Position,
-                                  "Too many TEMP variables declared");
-         _mesa_error (ctx, GL_INVALID_OPERATION,
-                      "Too many TEMP variables declared");
-         return 1;
-      }
-
-      temp_var->temp_binding = Program->Base.NumTemporaries;
-      Program->Base.NumTemporaries++;
    }
-   (*inst)++;
 
    return 0;
 }
@@ -4668,7 +4666,6 @@ parse_fp_instruction (GLcontext * ctx, GLubyte ** inst,
    /* The actual opcode name */
    code = *(*inst)++;
 
-
    /* Increment the correct count */
    switch (class) {
       case F_ALU_INST:
@@ -5015,7 +5012,7 @@ parse_fp_instruction (GLcontext * ctx, GLubyte ** inst,
          fp->TexSrcUnit = texcoord;
 
          /* texTarget */
-         switch (*(*inst)) {
+         switch (*(*inst)++) {
             case TEXTARGET_1D:
                fp->TexSrcBit = TEXTURE_1D_BIT;
                break;