Mesa (main): crocus: dirty blend state more often.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 24 07:09:35 UTC 2021


Module: Mesa
Branch: main
Commit: 0fa4b64f6c349da91bde6bcadda307b249705862
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0fa4b64f6c349da91bde6bcadda307b249705862

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Jun 24 14:20:25 2021 +1000

crocus: dirty blend state more often.

The blend state depends on wm_prog_data dual_src and it also
depends on the cbuf formats in can_emit_logic_op.

Dirty it in the correct places.

Fixes:
dEQP-GLES3.functional.fbo.invalidate*

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11567>

---

 src/gallium/drivers/crocus/crocus_program.c | 2 +-
 src/gallium/drivers/crocus/crocus_state.c   | 6 ++----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/crocus/crocus_program.c b/src/gallium/drivers/crocus/crocus_program.c
index 8b2cd2deb79..b236a267a61 100644
--- a/src/gallium/drivers/crocus/crocus_program.c
+++ b/src/gallium/drivers/crocus/crocus_program.c
@@ -1977,7 +1977,7 @@ crocus_update_compiled_fs(struct crocus_context *ice)
       if (devinfo->ver < 6)
          ice->state.dirty |= CROCUS_DIRTY_GEN4_CLIP_PROG | CROCUS_DIRTY_GEN4_SF_PROG;
       else
-         ice->state.dirty |= CROCUS_DIRTY_CLIP;
+         ice->state.dirty |= CROCUS_DIRTY_CLIP | CROCUS_DIRTY_GEN6_BLEND_STATE;
       if (devinfo->ver == 6)
          ice->state.dirty |= CROCUS_DIRTY_RASTER;
       if (devinfo->ver >= 7)
diff --git a/src/gallium/drivers/crocus/crocus_state.c b/src/gallium/drivers/crocus/crocus_state.c
index 8cb00a98fa1..b39b5232d12 100644
--- a/src/gallium/drivers/crocus/crocus_state.c
+++ b/src/gallium/drivers/crocus/crocus_state.c
@@ -3379,10 +3379,8 @@ crocus_set_framebuffer_state(struct pipe_context *ctx,
    }
 #endif
 
-#if GFX_VER >= 6
-   if (cso->nr_cbufs != state->nr_cbufs) {
-      ice->state.dirty |= CROCUS_DIRTY_GEN6_BLEND_STATE;
-   }
+#if GFX_VER >= 6 && GFX_VER < 8
+   ice->state.dirty |= CROCUS_DIRTY_GEN6_BLEND_STATE;
 #endif
 
    if ((cso->layers == 0) != (layers == 0)) {



More information about the mesa-commit mailing list