On 03/15/2018 11:48 PM, mathias.froehl...@gmx.net wrote:
From: Mathias Fröhlich <mathias.froehl...@web.de>

Since arrays also handle the mapping of current values into the
disabled array slots, we need to tell the array update code that
this mapping has changed. Also mark only dirty if it has changed.

"Also, only mark as dirty if it has changed."




Signed-off-by: Mathias Fröhlich <mathias.froehl...@web.de>
---
  src/mesa/main/state.c | 20 +++++++++++++++++---
  1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
index a6ae3b9001..fb97165db9 100644
--- a/src/mesa/main/state.c
+++ b/src/mesa/main/state.c
@@ -466,6 +466,20 @@ set_new_array(struct gl_context *ctx)
  }
+static void
+set_vertex_processing_mode(struct gl_context *ctx, gl_vertex_processing_mode m)
+{
+   if (ctx->VertexProgram._VPMode == m)
+      return;
+
+   /* On change we may get new maps into the current values */
+   set_new_array(ctx);
+
+   /* Finally memorize the value */

I don't think that comment is needed.

+   ctx->VertexProgram._VPMode = m;
+}
+
+
  /**
   * Update ctx->VertexProgram._VPMode.
   * This is to distinguish whether we're running
@@ -477,11 +491,11 @@ void
  _mesa_update_vertex_processing_mode(struct gl_context *ctx)
  {
     if (ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX])
-      ctx->VertexProgram._VPMode = VP_MODE_SHADER;
+      set_vertex_processing_mode(ctx, VP_MODE_SHADER);
     else if (_mesa_arb_vertex_program_enabled(ctx))
-      ctx->VertexProgram._VPMode = VP_MODE_SHADER;
+      set_vertex_processing_mode(ctx, VP_MODE_SHADER);
     else
-      ctx->VertexProgram._VPMode = VP_MODE_FF;
+      set_vertex_processing_mode(ctx, VP_MODE_FF);
  }

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to