From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/drivers/radeonsi/si_state.c | 26 +++++++++++---------------
 1 file changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 4965a83..f5abbf3 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2644,35 +2644,31 @@ void si_update_fb_dirtiness_after_rendering(struct 
si_context *sctx)
 
        if (sctx->framebuffer.state.zsbuf) {
                struct pipe_surface *surf = sctx->framebuffer.state.zsbuf;
                struct r600_texture *rtex = (struct r600_texture 
*)surf->texture;
 
                rtex->dirty_level_mask |= 1 << surf->u.tex.level;
 
                if (rtex->surface.has_stencil)
                        rtex->stencil_dirty_level_mask |= 1 << 
surf->u.tex.level;
        }
-       if (sctx->framebuffer.compressed_cb_mask) {
-               struct pipe_surface *surf;
-               struct r600_texture *rtex;
-               unsigned mask = sctx->framebuffer.compressed_cb_mask;
-
-               do {
-                       unsigned i = u_bit_scan(&mask);
-                       surf = sctx->framebuffer.state.cbufs[i];
-                       rtex = (struct r600_texture*)surf->texture;
-
-                       if (rtex->fmask.size)
-                               rtex->dirty_level_mask |= 1 << 
surf->u.tex.level;
-                       if (rtex->dcc_gather_statistics)
-                               rtex->separate_dcc_dirty = true;
-               } while (mask);
+
+       unsigned compressed_cb_mask = sctx->framebuffer.compressed_cb_mask;
+       while (compressed_cb_mask) {
+               unsigned i = u_bit_scan(&compressed_cb_mask);
+               struct pipe_surface *surf = sctx->framebuffer.state.cbufs[i];
+               struct r600_texture *rtex = (struct r600_texture*)surf->texture;
+
+               if (rtex->fmask.size)
+                       rtex->dirty_level_mask |= 1 << surf->u.tex.level;
+               if (rtex->dcc_gather_statistics)
+                       rtex->separate_dcc_dirty = true;
        }
 }
 
 static void si_dec_framebuffer_counters(const struct pipe_framebuffer_state 
*state)
 {
        for (int i = 0; i < state->nr_cbufs; ++i) {
                struct r600_surface *surf = NULL;
                struct r600_texture *rtex;
 
                if (!state->cbufs[i])
-- 
2.7.4

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

Reply via email to