radeonsi: simplify a loop in si_update_fb_dirtiness_after_rendering
authorMarek Olšák <marek.olsak@amd.com>
Mon, 2 Oct 2017 14:49:37 +0000 (16:49 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 6 Oct 2017 00:56:11 +0000 (02:56 +0200)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_state.c

index 67cd17462775b6c5215ba1417f911b4dda876504..99c3ca36886d493736fbd98b0b13b51b3ae52c69 100644 (file)
@@ -2647,21 +2647,17 @@ void si_update_fb_dirtiness_after_rendering(struct si_context *sctx)
                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;
        }
 }