Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>

On 09.06.2017 15:48, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

---
  src/mesa/state_tracker/st_atom.c | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c
index cbac762..bcfbcf8 100644
--- a/src/mesa/state_tracker/st_atom.c
+++ b/src/mesa/state_tracker/st_atom.c
@@ -109,21 +109,20 @@ static void check_program_state( struct st_context *st )
     }
if (unlikely(new_fp != &old_fp->Base)) {
        if (old_fp)
           dirty |= old_fp->affected_states;
        if (new_fp)
           dirty |= st_fragment_program(new_fp)->affected_states;
     }
st->dirty |= dirty;
-   st->gfx_shaders_may_be_dirty = false;
  }
static void check_attrib_edgeflag(struct st_context *st)
  {
     const struct gl_vertex_array **arrays = st->ctx->Array._DrawArrays;
     GLboolean vertdata_edgeflags, edgeflag_culls_prims, edgeflags_enabled;
     struct gl_program *vp = st->ctx->VertexProgram._Current;
if (!arrays)
        return;
@@ -164,21 +163,25 @@ void st_validate_state( struct st_context *st, enum 
st_pipeline pipeline )
      */
     st->dirty |= ctx->NewDriverState & st->active_states & ST_ALL_STATES_MASK;
     ctx->NewDriverState = 0;
/* Get pipeline state. */
     switch (pipeline) {
     case ST_PIPELINE_RENDER:
        if (st->ctx->API == API_OPENGL_COMPAT)
           check_attrib_edgeflag(st);
- check_program_state(st);
+      if (st->gfx_shaders_may_be_dirty) {
+         check_program_state(st);
+         st->gfx_shaders_may_be_dirty = false;
+      }
+
        st_manager_validate_framebuffers(st);
pipeline_mask = ST_PIPELINE_RENDER_STATE_MASK;
        break;
case ST_PIPELINE_CLEAR:
        st_manager_validate_framebuffers(st);
        pipeline_mask = ST_PIPELINE_CLEAR_STATE_MASK;
        break;


--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to