mesa: add _NEW_VARYING_VP_INPUTS for gl_context::varying_vp_inputs
authorMarek Olšák <maraeo@gmail.com>
Mon, 16 Apr 2012 02:21:03 +0000 (04:21 +0200)
committerMarek Olšák <maraeo@gmail.com>
Thu, 19 Apr 2012 12:47:21 +0000 (14:47 +0200)
This is a frequently-updated state and _NEW_ARRAY already causes revalidation
of the vbo module. It's kinda counter-productive to recompute arrays
in the vbo module if _NEW_ARRAY is set and then set _NEW_ARRAY again.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
src/mesa/main/ff_fragment_shader.cpp
src/mesa/main/mtypes.h
src/mesa/main/state.c
src/mesa/vbo/vbo_exec_array.c
src/mesa/vbo/vbo_exec_draw.c

index 3c91b1a42ad49ff4ea0a60a3b12a31f554c1c280..8a42281db0f806ab826bad70702d760db06c8dad 100644 (file)
@@ -337,7 +337,7 @@ static GLbitfield get_fp_input_mask( struct gl_context *ctx )
    }
    else if (!(vertexProgram || vertexShader)) {
       /* Fixed function vertex logic */
-      /* _NEW_ARRAY */
+      /* _NEW_VARYING_VP_INPUTS */
       GLbitfield64 varying_inputs = ctx->varying_vp_inputs;
 
       /* These get generated in the setup routine regardless of the
index e1afdbc9090982068d03fe6b2849f3bc042d312b..f277307a89dba874d866a13e7bde494b2529fabd 100644 (file)
@@ -3062,6 +3062,7 @@ struct gl_matrix_stack
 #define _NEW_BUFFER_OBJECT     (1 << 28)
 #define _NEW_FRAG_CLAMP        (1 << 29)
 #define _NEW_TRANSFORM_FEEDBACK (1 << 30) /**< gl_context::TransformFeedback */
+#define _NEW_VARYING_VP_INPUTS (1 << 31) /**< gl_context::varying_vp_inputs */
 #define _NEW_ALL ~0
 
 /**
index c953efc81273baf98cfe1d591b011750cc7ac919..627bf838c0f05c69fb32ae8bec097b329544612e 100644 (file)
@@ -473,12 +473,13 @@ _mesa_update_state_locked( struct gl_context *ctx )
    /* Determine which state flags effect vertex/fragment program state */
    if (ctx->FragmentProgram._MaintainTexEnvProgram) {
       prog_flags |= (_NEW_BUFFERS | _NEW_TEXTURE | _NEW_FOG |
-                    _NEW_ARRAY | _NEW_LIGHT | _NEW_POINT | _NEW_RENDERMODE |
-                    _NEW_PROGRAM | _NEW_FRAG_CLAMP | _NEW_COLOR);
+                    _NEW_VARYING_VP_INPUTS | _NEW_LIGHT | _NEW_POINT |
+                    _NEW_RENDERMODE | _NEW_PROGRAM | _NEW_FRAG_CLAMP |
+                    _NEW_COLOR);
    }
    if (ctx->VertexProgram._MaintainTnlProgram) {
-      prog_flags |= (_NEW_ARRAY | _NEW_TEXTURE | _NEW_TEXTURE_MATRIX |
-                     _NEW_TRANSFORM | _NEW_POINT |
+      prog_flags |= (_NEW_VARYING_VP_INPUTS | _NEW_TEXTURE |
+                     _NEW_TEXTURE_MATRIX | _NEW_TRANSFORM | _NEW_POINT |
                      _NEW_FOG | _NEW_LIGHT |
                      _MESA_NEW_NEED_EYE_COORDS);
    }
@@ -626,7 +627,7 @@ _mesa_set_varying_vp_inputs( struct gl_context *ctx,
 {
    if (ctx->varying_vp_inputs != varying_inputs) {
       ctx->varying_vp_inputs = varying_inputs;
-      ctx->NewState |= _NEW_ARRAY;
+      ctx->NewState |= _NEW_VARYING_VP_INPUTS;
       /*printf("%s %x\n", __FUNCTION__, varying_inputs);*/
    }
 }
index d9003c243b106887c66fc04cebe1c1f7802b6695..2e324a2ca0c671abe3d567f043b3a32988d18fa8 100644 (file)
@@ -523,8 +523,8 @@ recalculate_input_bindings(struct gl_context *ctx)
  * Examine the enabled vertex arrays to set the exec->array.inputs[] values.
  * These will point to the arrays to actually use for drawing.  Some will
  * be user-provided arrays, other will be zero-stride const-valued arrays.
- * Note that this might set the _NEW_ARRAY dirty flag so state validation
- * must be done after this call.
+ * Note that this might set the _NEW_VARYING_VP_INPUTS dirty flag so state
+ * validation must be done after this call.
  */
 void
 vbo_bind_arrays(struct gl_context *ctx)
index dd5363bebe4f270fd1bf0676fa256da00928b496..a1d329f944ef648786f6deb88ec770b87a1cb96b 100644 (file)
@@ -388,7 +388,7 @@ vbo_exec_vtx_flush(struct vbo_exec_context *exec, GLboolean keepUnmapped)
       if (exec->vtx.copied.nr != exec->vtx.vert_count) {
         struct gl_context *ctx = exec->ctx;
         
-        /* Before the update_state() as this may raise _NEW_ARRAY
+        /* Before the update_state() as this may raise _NEW_VARYING_VP_INPUTS
           * from _mesa_set_varying_vp_inputs().
          */
         vbo_exec_bind_arrays( ctx );