mesa: Remove support for NV_vertex_program's special attributes aliasing
authorEric Anholt <eric@anholt.net>
Tue, 9 Oct 2012 22:38:53 +0000 (15:38 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 15 Oct 2012 18:53:23 +0000 (11:53 -0700)
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/api_arrayelt.c
src/mesa/main/arrayobj.c
src/mesa/main/arrayobj.h
src/mesa/main/mtypes.h
src/mesa/vbo/vbo_context.h
src/mesa/vbo/vbo_exec.h
src/mesa/vbo/vbo_exec_array.c
src/mesa/vbo/vbo_exec_draw.c
src/mesa/vbo/vbo_save_draw.c

index d530001bc5ebfc3be75e189dea5e28a8ae1c70a1..20b8ff4d1c733c959975e69d2aaf2fee73523b44 100644 (file)
@@ -1528,31 +1528,24 @@ static void _ae_update_state( struct gl_context *ctx )
    for (i = 1; i < VERT_ATTRIB_GENERIC_MAX; i++) {  /* skip zero! */
       struct gl_client_array *attribArray = &arrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(i)];
       if (attribArray->Enabled) {
+         GLint intOrNorm;
          at->array = attribArray;
          /* Note: we can't grab the _glapi_Dispatch->VertexAttrib1fvNV
           * function pointer here (for float arrays) since the pointer may
           * change from one execution of _ae_ArrayElement() to
           * the next.  Doing so caused UT to break.
           */
-         if (ctx->VertexProgram._Enabled
-             && ctx->VertexProgram.Current->IsNVProgram) {
-            at->func = AttribFuncsNV[at->array->Normalized]
-                                    [at->array->Size-1]
-                                    [TYPE_IDX(at->array->Type)];
-         }
-         else {
-            GLint intOrNorm;
-            if (at->array->Integer)
-               intOrNorm = 2;
-            else if (at->array->Normalized)
-               intOrNorm = 1;
-            else
-               intOrNorm = 0;
-
-            at->func = AttribFuncsARB[intOrNorm]
-                                     [at->array->Size-1]
-                                     [TYPE_IDX(at->array->Type)];
-         }
+         if (at->array->Integer)
+            intOrNorm = 2;
+         else if (at->array->Normalized)
+            intOrNorm = 1;
+         else
+            intOrNorm = 0;
+
+         at->func = AttribFuncsARB[intOrNorm]
+            [at->array->Size-1]
+            [TYPE_IDX(at->array->Type)];
+
          at->index = i;
         check_vbo(actx, at->array->BufferObj);
          at++;
index 9255559d533dfe501bac1bac79b3e72c46176b91..5959260c27f9473f2e6c6b8799941b05e07de39d 100644 (file)
@@ -314,8 +314,6 @@ _mesa_update_array_object_max_element(struct gl_context *ctx,
    if (!ctx->VertexProgram._Current ||
        ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) {
       enabled = _mesa_array_object_get_enabled_ff(arrayObj);
-   } else if (ctx->VertexProgram._Current->IsNVProgram) {
-      enabled = _mesa_array_object_get_enabled_nv(arrayObj);
    } else {
       enabled = _mesa_array_object_get_enabled_arb(arrayObj);
    }
index 4f89064bb66a0b257ba957b7d673a2c325b8c6d2..dfefec2a7a30a2769ea2c14bedd02d3b800053a1 100644 (file)
@@ -87,18 +87,6 @@ _mesa_array_object_get_enabled_ff(const struct gl_array_object *arrayObj)
    return arrayObj->_Enabled & VERT_BIT_FF_ALL;
 }
 
-/** Returns the bitmask of all enabled arrays in nv shader mode.
- *
- *  In nv shader mode, the nv generic arrays take precedence over
- *  the legacy arrays.
- */
-static inline GLbitfield64
-_mesa_array_object_get_enabled_nv(const struct gl_array_object *arrayObj)
-{
-   GLbitfield64 enabled = arrayObj->_Enabled;
-   return enabled & ~(VERT_BIT_FF_NVALIAS & (enabled >> VERT_ATTRIB_GENERIC0));
-}
-
 /** Returns the bitmask of all enabled arrays in arb/glsl shader mode.
  *
  *  In arb/glsl shader mode all the fixed function and the arb/glsl generic
index 2b9f7f3ed28b7c20688d6ff2c4d3d272505af041..1b2cfca81ff97ef24c3d6ce797ee04e86d3c26ca 100644 (file)
@@ -195,8 +195,6 @@ typedef enum
 #define VERT_BIT_TEX(i)          VERT_BIT(VERT_ATTRIB_TEX(i))
 #define VERT_BIT_TEX_ALL         \
    BITFIELD64_RANGE(VERT_ATTRIB_TEX(0), VERT_ATTRIB_TEX_MAX)
-#define VERT_BIT_FF_NVALIAS      \
-   BITFIELD64_RANGE(VERT_ATTRIB_POS, VERT_ATTRIB_TEX(VERT_ATTRIB_TEX_MAX))
 
 #define VERT_BIT_GENERIC_NV(i)   VERT_BIT(VERT_ATTRIB_GENERIC_NV(i))
 #define VERT_BIT_GENERIC_NV_ALL  \
index e3e37e7f2822ab5d470ae8fe752e48f465a361cf..c896f1196f79099d785ac8032606e39190bc3874 100644 (file)
@@ -106,8 +106,6 @@ get_program_mode( struct gl_context *ctx )
       return VP_NONE;
    else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram)
       return VP_NONE;
-   else if (ctx->VertexProgram._Current->IsNVProgram)
-      return VP_NV;
    else
       return VP_ARB;
 }
index 635e743aec7f0d03ff5332304dabceefb914bc17..ef57a81992f890c4a070785f64417da06820e5fb 100644 (file)
@@ -55,7 +55,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 /** Current vertex program mode */
 enum vp_mode {
    VP_NONE,   /**< fixed function */
-   VP_NV,     /**< NV vertex program */
    VP_ARB     /**< ARB vertex program or GLSL vertex shader */
 };
 
index f0ef2058e94a844ca11aebabf4f84ed908bb9d8d..d857ac3e52f3e572b46b499bc21bf357fcb6941c 100644 (file)
@@ -440,32 +440,6 @@ recalculate_input_bindings(struct gl_context *ctx)
       }
       break;
 
-   case VP_NV:
-      /* NV_vertex_program - attribute arrays alias and override
-       * conventional, legacy arrays.  No materials, and the generic
-       * slots are vacant.
-       */
-      for (i = 0; i < VERT_ATTRIB_FF_MAX; i++) {
-        if (i < VERT_ATTRIB_GENERIC_MAX
-             && vertexAttrib[VERT_ATTRIB_GENERIC(i)].Enabled)
-           inputs[i] = &vertexAttrib[VERT_ATTRIB_GENERIC(i)];
-        else if (vertexAttrib[VERT_ATTRIB_FF(i)].Enabled)
-           inputs[i] = &vertexAttrib[VERT_ATTRIB_FF(i)];
-        else {
-           inputs[i] = &vbo->currval[VBO_ATTRIB_POS+i];
-            const_inputs |= VERT_BIT_FF(i);
-         }
-      }
-
-      /* Could use just about anything, just to fill in the empty
-       * slots:
-       */
-      for (i = 0; i < VERT_ATTRIB_GENERIC_MAX; i++) {
-        inputs[VERT_ATTRIB_GENERIC(i)] = &vbo->currval[VBO_ATTRIB_GENERIC0+i];
-         const_inputs |= VERT_BIT_GENERIC(i);
-      }
-      break;
-
    case VP_ARB:
       /* GL_ARB_vertex_program or GLSL vertex shader - Only the generic[0]
        * attribute array aliases and overrides the legacy position array.  
index 15ecfc03119205944fd95adc40a447f2a213dbbc..817af4dd52b9039f3b3ae11044eee17f318f2df4 100644 (file)
@@ -180,12 +180,7 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
       }
       map = vbo->map_vp_none;
       break;
-   case VP_NV:
    case VP_ARB:
-      /* The aliasing of attributes for NV vertex programs has already
-       * occurred.  NV vertex programs cannot access material values,
-       * nor attributes greater than VERT_ATTRIB_TEX7.  
-       */
       for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) {
          exec->vtx.inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr];
       }
index 8ffc96aec8706d4c36251d6e1b0789b2651d4cb6..09b8b8ab2b89ffa7b67a0669b3a01fe22b175836 100644 (file)
@@ -152,12 +152,7 @@ static void vbo_bind_vertex_list(struct gl_context *ctx,
       }
       map = vbo->map_vp_none;
       break;
-   case VP_NV:
    case VP_ARB:
-      /* The aliasing of attributes for NV vertex programs has already
-       * occurred.  NV vertex programs cannot access material values,
-       * nor attributes greater than VERT_ATTRIB_TEX7.  
-       */
       for (attr = 0; attr < VERT_ATTRIB_FF_MAX; attr++) {
          save->inputs[attr] = &vbo->currval[VBO_ATTRIB_POS+attr];
       }