freedreno: add helper to mark all state dirty
authorRob Clark <robdclark@gmail.com>
Sun, 16 Apr 2017 16:21:49 +0000 (12:21 -0400)
committerRob Clark <robdclark@gmail.com>
Tue, 18 Apr 2017 20:32:00 +0000 (16:32 -0400)
This will simplify things when we break out per-shader-stage dirty bits.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/freedreno_batch.c
src/gallium/drivers/freedreno/freedreno_context.h
src/gallium/drivers/freedreno/freedreno_draw.c
src/gallium/drivers/freedreno/freedreno_state.c

index 5cd6a697e13f6da14e919ec35aa655fe18b43492..f97282b3405dea95a41e83e4de3d9f0873c4210f 100644 (file)
@@ -264,7 +264,7 @@ batch_flush(struct fd_batch *batch)
         */
        fd_hw_query_set_stage(batch, batch->draw, FD_STAGE_NULL);
 
-       batch->ctx->dirty = ~0;
+       fd_context_all_dirty(batch->ctx);
        batch_flush_reset_dependencies(batch, true);
 
        if (batch->ctx->screen->reorder) {
index 67291a097cc90c4f7a0b564a5976b1f1695f6bcd..9db34ef8a03bbb979c8a0937ea214b3c2cb1bfa0 100644 (file)
@@ -325,6 +325,13 @@ fd_context_unlock(struct fd_context *ctx)
        mtx_unlock(&ctx->screen->lock);
 }
 
+/* mark all state dirty: */
+static inline void
+fd_context_all_dirty(struct fd_context *ctx)
+{
+       ctx->dirty = ~0;
+}
+
 static inline struct pipe_scissor_state *
 fd_context_get_scissor(struct fd_context *ctx)
 {
index 22d20c489c55e04c0eebad6e146fe7f34c2c48e1..f911d4a6095907fb993db16d2030cd41c171b684 100644 (file)
@@ -95,7 +95,7 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
 
        if (ctx->in_blit) {
                fd_batch_reset(batch);
-               ctx->dirty = ~0;
+               fd_context_all_dirty(ctx);
        }
 
        batch->blit = ctx->in_blit;
@@ -207,7 +207,7 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
                ctx->streamout.offsets[i] += info->count;
 
        if (fd_mesa_debug & FD_DBG_DDRAW)
-               ctx->dirty = 0xffffffff;
+               fd_context_all_dirty(ctx);
 
        fd_batch_check_size(batch);
 
@@ -307,7 +307,7 @@ fd_clear(struct pipe_context *pctx, unsigned buffers,
 
        if (ctx->in_blit) {
                fd_batch_reset(batch);
-               ctx->dirty = ~0;
+               fd_context_all_dirty(ctx);
        }
 
        /* for bookkeeping about which buffers have been cleared (and thus
@@ -377,7 +377,7 @@ fd_clear(struct pipe_context *pctx, unsigned buffers,
                        FD_DIRTY_FRAMEBUFFER;
 
        if (fd_mesa_debug & FD_DBG_DCLEAR)
-               ctx->dirty = 0xffffffff;
+               fd_context_all_dirty(ctx);
 }
 
 static void
index 804d2b78624c47e133bdf36436098641b26f1164..06dfd228dcc63d5b55d8f1b8152a7545d93406e3 100644 (file)
@@ -131,7 +131,7 @@ fd_set_framebuffer_state(struct pipe_context *pctx,
                fd_batch_reference(&ctx->batch, NULL);
                fd_reset_wfi(batch);
                ctx->batch = batch;
-               ctx->dirty = ~0;
+               fd_context_all_dirty(ctx);
 
                if (old_batch && old_batch->blit && !old_batch->back_blit) {
                        /* for blits, there is not really much point in hanging on