diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c index 82f425d96f7..e9108671161 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch.c +++ b/src/gallium/drivers/freedreno/freedreno_batch.c @@ -315,6 +315,7 @@ __fd_batch_destroy(struct fd_batch *batch) simple_mtx_destroy(&batch->submit_lock); + free(batch->key); free(batch); fd_screen_lock(ctx->screen); } diff --git a/src/gallium/drivers/freedreno/freedreno_batch.h b/src/gallium/drivers/freedreno/freedreno_batch.h index 9a7bfcd7bfe..8f69a9d4e25 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch.h +++ b/src/gallium/drivers/freedreno/freedreno_batch.h @@ -252,7 +252,7 @@ struct fd_batch { struct set *resources; /** key in batch-cache (if not null): */ - const struct fd_batch_key *key; + struct fd_batch_key *key; uint32_t hash; /** set of dependent batches.. holds refs to dependent batches: */ diff --git a/src/gallium/drivers/freedreno/freedreno_batch_cache.c b/src/gallium/drivers/freedreno/freedreno_batch_cache.c index 5b514e90973..16378e77067 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch_cache.c +++ b/src/gallium/drivers/freedreno/freedreno_batch_cache.c @@ -239,7 +239,7 @@ fd_bc_invalidate_batch(struct fd_batch *batch, bool remove) return; struct fd_batch_cache *cache = &batch->ctx->screen->batch_cache; - struct fd_batch_key *key = (struct fd_batch_key *)batch->key; + struct fd_batch_key *key = batch->key; fd_screen_assert_locked(batch->ctx->screen); @@ -260,9 +260,6 @@ fd_bc_invalidate_batch(struct fd_batch *batch, bool remove) struct hash_entry *entry = _mesa_hash_table_search_pre_hashed(cache->ht, batch->hash, key); _mesa_hash_table_remove(cache->ht, entry); - - batch->key = NULL; - free(key); } void