Minor re-org of state for fog and precision options.
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 12 Feb 2004 21:57:29 +0000 (21:57 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 12 Feb 2004 21:57:29 +0000 (21:57 +0000)
src/mesa/main/arbfragparse.c
src/mesa/main/arbparse.c
src/mesa/main/arbparse.h
src/mesa/main/arbvertparse.c

index 9a986b4a835efcc7ed043b9347b3227634eed63e..0443862020af92c28edc740e168c2c580476e3dc 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.1
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  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"),
@@ -211,20 +211,20 @@ _mesa_parse_arb_fragment_program(GLcontext * ctx, GLenum target,
    if (retval)
    {
       program->Instructions = (struct fp_instruction *) _mesa_malloc (
-                                     sizeof(struct fp_instruction) );                    
+                                     sizeof(struct fp_instruction) );
       program->Instructions[0].Opcode = FP_OPCODE_END;
       return;
    }
 
    /* XXX: Eh.. we parsed something that wasn't a fragment program. doh! */
-   if (ap.type != GL_FRAGMENT_PROGRAM_ARB)
+   if (ap.Base.Target != GL_FRAGMENT_PROGRAM_ARB)
    {
       program->Instructions = (struct fp_instruction *) _mesa_malloc (
-                                     sizeof(struct fp_instruction) );                    
+                                     sizeof(struct fp_instruction) );
       program->Instructions[0].Opcode = FP_OPCODE_END;
 
       _mesa_error (ctx, GL_INVALID_OPERATION, "Parsed a non-fragment program as a fragment program");
-      return;      
+      return;
    }
 
 #if DEBUG_FP
index a84f16f59ed26938fab301067f300b3e381c3263..fe08d48b94b49a12bc13cbfff11d302d597cf2ea 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.0
+ * Version:  6.1
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -3515,7 +3515,7 @@ static GLuint
 parse_program_single_item (GLcontext * ctx, GLubyte ** inst,
                            struct arb_program *Program, GLint * state_tokens)
 {
-   if (Program->type == GL_FRAGMENT_PROGRAM_ARB)
+   if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB)
       state_tokens[0] = STATE_FRAGMENT_PROGRAM;
    else
       state_tokens[0] = STATE_VERTEX_PROGRAM;
@@ -3527,10 +3527,10 @@ parse_program_single_item (GLcontext * ctx, GLubyte ** inst,
          state_tokens[2] = parse_integer (inst, Program);
 
          /* Check state_tokens[2] against the number of ENV parameters available */
-         if (((Program->type == GL_FRAGMENT_PROGRAM_ARB) &&
+         if (((Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) &&
               (state_tokens[2] >= (GLint) ctx->Const.MaxFragmentProgramEnvParams))
              ||
-             ((Program->type == GL_VERTEX_PROGRAM_ARB) &&
+             ((Program->Base.Target == GL_VERTEX_PROGRAM_ARB) &&
               (state_tokens[2] >= (GLint) ctx->Const.MaxVertexProgramEnvParams))) {
             _mesa_set_program_error (ctx, Program->Position,
                                      "Invalid Program Env Parameter");
@@ -3547,10 +3547,10 @@ parse_program_single_item (GLcontext * ctx, GLubyte ** inst,
          state_tokens[2] = parse_integer (inst, Program);
 
          /* Check state_tokens[2] against the number of LOCAL parameters available */
-         if (((Program->type == GL_FRAGMENT_PROGRAM_ARB) &&
+         if (((Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) &&
               (state_tokens[2] >= (GLint) ctx->Const.MaxFragmentProgramLocalParams))
              ||
-             ((Program->type == GL_VERTEX_PROGRAM_ARB) &&
+             ((Program->Base.Target == GL_VERTEX_PROGRAM_ARB) &&
               (state_tokens[2] >= (GLint) ctx->Const.MaxVertexProgramLocalParams))) {
             _mesa_set_program_error (ctx, Program->Position,
                                      "Invalid Program Local Parameter");
@@ -3626,7 +3626,7 @@ parse_attrib_binding (GLcontext * ctx, GLubyte ** inst,
    GLint err = 0;
 
    *is_generic = 0;
-   if (Program->type == GL_FRAGMENT_PROGRAM_ARB) {
+   if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
       switch (*(*inst)++) {
          case FRAGMENT_ATTRIB_COLOR:
             err = parse_color_type (ctx, inst, Program, &coord);
@@ -3805,7 +3805,7 @@ parse_result_binding (GLcontext * ctx, GLubyte ** inst, GLuint * binding,
    switch (*(*inst)++) {
       case FRAGMENT_RESULT_COLOR:
          /* for frag programs, this is FRAGMENT_RESULT_COLOR */
-         if (Program->type == GL_FRAGMENT_PROGRAM_ARB) {
+         if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
             *binding = FRAG_OUTPUT_COLR;
             *binding_idx = 0;
          }
@@ -3817,7 +3817,7 @@ parse_result_binding (GLcontext * ctx, GLubyte ** inst, GLuint * binding,
 
       case FRAGMENT_RESULT_DEPTH:
          /* for frag programs, this is FRAGMENT_RESULT_DEPTH */
-         if (Program->type == GL_FRAGMENT_PROGRAM_ARB) {
+         if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
             *binding = FRAG_OUTPUT_DEPR;
             *binding_idx = 2;
          }
@@ -4000,7 +4000,7 @@ parse_param_elements (GLcontext * ctx, GLubyte ** inst,
             GLuint end_idx = parse_integer (inst, Program);
 
             out_of_range = 0;
-            if (Program->type == GL_FRAGMENT_PROGRAM_ARB) {
+            if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
                if (((state_tokens[1] == STATE_ENV)
                     && (end_idx >= ctx->Const.MaxFragmentProgramEnvParams))
                    || ((state_tokens[1] == STATE_LOCAL)
@@ -4059,10 +4059,10 @@ parse_param_elements (GLcontext * ctx, GLubyte ** inst,
    }
 
    /* Make sure we haven't blown past our parameter limits */
-   if (((Program->type == GL_VERTEX_PROGRAM_ARB) &&
+   if (((Program->Base.Target == GL_VERTEX_PROGRAM_ARB) &&
         (Program->Base.NumParameters >=
          ctx->Const.MaxVertexProgramLocalParams))
-       || ((Program->type == GL_FRAGMENT_PROGRAM_ARB)
+       || ((Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB)
            && (Program->Base.NumParameters >=
                ctx->Const.MaxFragmentProgramLocalParams))) {
       _mesa_set_program_error (ctx, Program->Position,
@@ -4216,10 +4216,10 @@ parse_temp (GLcontext * ctx, GLubyte ** inst, struct var_cache **vc_head,
 
       temp_var->type = vt_temp;
 
-      if (((Program->type == GL_FRAGMENT_PROGRAM_ARB) &&
+      if (((Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) &&
            (Program->Base.NumTemporaries >=
             ctx->Const.MaxFragmentProgramTemps))
-          || ((Program->type == GL_VERTEX_PROGRAM_ARB)
+          || ((Program->Base.Target == GL_VERTEX_PROGRAM_ARB)
               && (Program->Base.NumTemporaries >=
                   ctx->Const.MaxVertexProgramTemps))) {
          _mesa_set_program_error (ctx, Program->Position,
@@ -5795,27 +5795,27 @@ parse_arb_program (GLcontext * ctx, GLubyte * inst, struct var_cache **vc_head,
          case OPTION:
             switch (*inst++) {
                case ARB_PRECISION_HINT_FASTEST:
-                  Program->HintPrecisionFastest = 1;
+                  Program->PrecisionOption = GL_FASTEST;
                   break;
 
                case ARB_PRECISION_HINT_NICEST:
-                  Program->HintPrecisionNicest = 1;
+                  Program->PrecisionOption = GL_NICEST;
                   break;
 
                case ARB_FOG_EXP:
-                  Program->HintFogExp = 1;
+                  Program->FogOption = GL_EXP;
                   break;
 
                case ARB_FOG_EXP2:
-                  Program->HintFogExp2 = 1;
+                  Program->FogOption = GL_EXP2;
                   break;
 
                case ARB_FOG_LINEAR:
-                  Program->HintFogLinear = 1;
+                  Program->FogOption = GL_LINEAR;
                   break;
 
                case ARB_POSITION_INVARIANT:
-                  if (Program->type == GL_VERTEX_PROGRAM_ARB)                                          
+                  if (Program->Base.Target == GL_VERTEX_PROGRAM_ARB)
                      Program->HintPositionInvariant = 1;
                   break;
             }
@@ -5824,7 +5824,7 @@ parse_arb_program (GLcontext * ctx, GLubyte * inst, struct var_cache **vc_head,
          case INSTRUCTION:
             Program->Position = parse_position (&inst);
 
-            if (Program->type == GL_FRAGMENT_PROGRAM_ARB) {
+            if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
 
                /* Check the instruction count 
                 * XXX: Does END count as an instruction?
@@ -5886,7 +5886,7 @@ parse_arb_program (GLcontext * ctx, GLubyte * inst, struct var_cache **vc_head,
    }
 
    /* Finally, tag on an OPCODE_END instruction */
-   if (Program->type == GL_FRAGMENT_PROGRAM_ARB) {
+   if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
       Program->FPInstructions =
          (struct fp_instruction *) _mesa_realloc (Program->FPInstructions,
                                                  Program->Base.NumInstructions*sizeof(struct fp_instruction),
@@ -5981,11 +5981,9 @@ _mesa_parse_arb_program (GLcontext * ctx, const GLubyte * str, GLsizei len,
    program->OutputsWritten = 0;
    program->Position = 0;
    program->MajorVersion = program->MinorVersion = 0;
-   program->HintPrecisionFastest =
-   program->HintPrecisionNicest =
-   program->HintFogExp2 =
-   program->HintFogExp =
-   program->HintFogLinear = program->HintPositionInvariant = 0;
+   program->PrecisionOption = GL_DONT_CARE;
+   program->FogOption = GL_NONE;
+   program->HintPositionInvariant = GL_FALSE;
    for (a = 0; a < MAX_TEXTURE_IMAGE_UNITS; a++)
       program->TexturesUsed[a] = 0;
    program->NumAluInstructions =
@@ -6010,11 +6008,11 @@ _mesa_parse_arb_program (GLcontext * ctx, const GLubyte * str, GLsizei len,
    else {
       switch (*inst++) {
          case FRAGMENT_PROGRAM:
-            program->type = GL_FRAGMENT_PROGRAM_ARB;
+            program->Base.Target = GL_FRAGMENT_PROGRAM_ARB;
             break;
 
          case VERTEX_PROGRAM:
-            program->type = GL_VERTEX_PROGRAM_ARB;
+            program->Base.Target = GL_VERTEX_PROGRAM_ARB;
             break;
       }
 
index e6c43b9a9834e35705611145e2b0584d6b4fff24..e47e97fbf98d139b3fa8a343f9faae90d78aacdb 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.1
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  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"),
@@ -22,7 +22,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  * Authors:
- *    Brian Paul
+ *    Michal Krol
  */
 
 
  */
 struct arb_program
 {
-       GLuint type; /* FRAGMENT_PROGRAM_ARB or VERTEX_PROGRAM_ARB */
-
-       struct program Base;
+   struct program Base;
    struct program_parameter_list *Parameters; 
-       GLuint InputsRead;
-       GLuint OutputsWritten;
+   GLuint InputsRead;
+   GLuint OutputsWritten;
 
-       GLuint Position;       /* Just used for error reporting while parsing */
-       GLuint MajorVersion;
-       GLuint MinorVersion;
+   GLuint Position;       /* Just used for error reporting while parsing */
+   GLuint MajorVersion;
+   GLuint MinorVersion;
 
-       /* ARB_vertex_program specifics */ 
-       struct vp_instruction *VPInstructions;
+   /* ARB_vertex_program specifics */ 
+   struct vp_instruction *VPInstructions;
 
-       /* Options currently recognized by the parser */
-       /* ARB_fp */
-       GLboolean HintPrecisionFastest;
-       GLboolean HintPrecisionNicest;
-       GLboolean HintFogExp2;
-       GLboolean HintFogExp;
-       GLboolean HintFogLinear;
+   /* Options currently recognized by the parser */
+   /* ARB_fp */
+   GLenum PrecisionOption; /* GL_DONT_CARE, GL_NICEST or GL_FASTEST */
+   GLenum FogOption;       /* GL_NONE, GL_LINEAR, GL_EXP or GL_EXP2 */
 
-       /* ARB_fp & _vp */
-       GLboolean HintPositionInvariant;
+   /* ARB_fp & _vp */
+   GLboolean HintPositionInvariant;
 
-       /* ARB_fragment_program sepecifics */
-       struct fp_instruction *FPInstructions;
+   /* ARB_fragment_program sepecifics */
+   struct fp_instruction *FPInstructions;
    GLuint TexturesUsed[MAX_TEXTURE_IMAGE_UNITS]; 
    GLuint NumAluInstructions; 
    GLuint NumTexInstructions;
@@ -77,7 +72,6 @@ struct arb_program
 
 extern GLuint 
 _mesa_parse_arb_program( GLcontext *ctx, const GLubyte *str, GLsizei len, 
-                                 struct arb_program *Program );
+                         struct arb_program *Program );
                           
-
 #endif
index 0bc2a2d04cef1b54a9323f125ce92780cdabd4e2..b8bf0b7f91e7378bb5f18cb761439ea9b000cdef 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.1
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  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"),
@@ -202,7 +202,7 @@ _mesa_parse_arb_vertex_program(GLcontext * ctx, GLenum target,
    }
 
    /* Eh.. we parsed something that wasn't a vertex program. doh! */
-   if (ap.type != GL_VERTEX_PROGRAM_ARB)
+   if (ap.Base.Target != GL_VERTEX_PROGRAM_ARB)
    {
       program->Instructions = (struct vp_instruction *) _mesa_malloc (
                                      sizeof(struct vp_instruction) );