zink: use bitfield for dirty flagging
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Tue, 29 Oct 2019 12:27:58 +0000 (13:27 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 30 Oct 2019 10:29:23 +0000 (10:29 +0000)
Bitfields are a bit more ideomatic than explicit flags, and harder to
get wrong.

Reviewed-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/zink/zink_context.c
src/gallium/drivers/zink/zink_context.h

index c6f32f83aeca02e6e4fcd018a1c6d99a8c3cbb36..b97cc16455d195a4140af93ed14fc153bf5c09a4 100644 (file)
@@ -306,7 +306,7 @@ bind_stage(struct zink_context *ctx, enum pipe_shader_type stage,
 {
    assert(stage < PIPE_SHADER_COMPUTE);
    ctx->gfx_stages[stage] = shader;
-   ctx->dirty |= ZINK_DIRTY_PROGRAM;
+   ctx->dirty_program = true;
 }
 
 static void
@@ -974,7 +974,7 @@ equals_framebuffer_state(const void *a, const void *b)
 static struct zink_gfx_program *
 get_gfx_program(struct zink_context *ctx)
 {
-   if (ctx->dirty & ZINK_DIRTY_PROGRAM) {
+   if (ctx->dirty_program) {
       struct hash_entry *entry = _mesa_hash_table_search(ctx->program_cache,
                                                          ctx->gfx_stages);
       if (!entry) {
@@ -986,7 +986,7 @@ get_gfx_program(struct zink_context *ctx)
             return NULL;
       }
       ctx->curr_program = entry->data;
-      ctx->dirty &= ~ZINK_DIRTY_PROGRAM;
+      ctx->dirty_program = false;
    }
 
    assert(ctx->curr_program);
@@ -1596,7 +1596,7 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
        !ctx->framebuffer_cache)
       goto fail;
 
-   ctx->dirty = ZINK_DIRTY_PROGRAM;
+   ctx->dirty_program = true;
 
    /* start the first batch */
    zink_start_batch(ctx, zink_curr_batch(ctx));
index 4abca476007ccd86379773678c795df8b410d4b0..35c4ec22e838ffc6be901a6eba8e2aa8aea38e17 100644 (file)
@@ -57,8 +57,6 @@ zink_sampler_view(struct pipe_sampler_view *pview)
    return (struct zink_sampler_view *)pview;
 }
 
-#define ZINK_DIRTY_PROGRAM (1 << 0)
-
 struct zink_context {
    struct pipe_context base;
    struct slab_child_pool transfer_pool;
@@ -80,7 +78,8 @@ struct zink_context {
    struct zink_gfx_pipeline_state gfx_pipeline_state;
    struct hash_table *program_cache;
    struct zink_gfx_program *curr_program;
-   unsigned dirty;
+
+   unsigned dirty_program : 1;
 
    struct hash_table *render_pass_cache;
    struct hash_table *framebuffer_cache;