[Mesa-dev] [PATCH] i965: add BRW_NEW_BLORP to the list of dirty state for render targets

Iago Toral Quiroga itoral at igalia.com
Tue Sep 12 12:10:00 UTC 2017


Commit b96313c0e1289b removed BRW_NEW_BLORP for a bunch of SURFACE_STATE
setup code, including render targets, on the basis that blorp invalidates
binding tables but not surface states, however, at least on Broadwell,
this seems to be causing a regression in a CTS test that seems related
to render target surface tracking, for which blorp does emit new surface
states.

Fixes:
KHR-GL45.transform_feedback.draw_xfb_test (on Broadwell)
---

Ken, my understanding of this is that blorp always needs to upload new
render target surfaces so we need to track BRW_NEW_BLORP and always
emit render target surfaces if that state is dirty. Makes sense?

It doesn't explain why the particular CTS tests that was regressing
because of this fails in Broadwell but not in Skylake though...

 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 1f89b72354..3a057a48c0 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -1029,7 +1029,8 @@ const struct brw_tracked_state brw_renderbuffer_surfaces = {
    .dirty = {
       .mesa = _NEW_BUFFERS |
               _NEW_COLOR,
-      .brw = BRW_NEW_BATCH,
+      .brw = BRW_NEW_BATCH |
+             BRW_NEW_BLORP,
    },
    .emit = update_renderbuffer_surfaces,
 };
@@ -1038,6 +1039,7 @@ const struct brw_tracked_state gen6_renderbuffer_surfaces = {
    .dirty = {
       .mesa = _NEW_BUFFERS,
       .brw = BRW_NEW_BATCH |
+             BRW_NEW_BLORP |
              BRW_NEW_FAST_CLEAR_COLOR,
    },
    .emit = update_renderbuffer_surfaces,
-- 
2.11.0



More information about the mesa-dev mailing list