mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 08:50:13 +01:00
zink: add locking for fence resources
Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
This commit is contained in:
parent
0ebc13564a
commit
f32079efab
3 changed files with 6 additions and 0 deletions
|
|
@ -125,6 +125,7 @@ zink_batch_state_destroy(struct zink_screen *screen, struct zink_batch_state *bs
|
|||
_mesa_set_destroy(bs->programs, NULL);
|
||||
_mesa_set_destroy(bs->desc_sets, NULL);
|
||||
_mesa_set_destroy(bs->active_queries, NULL);
|
||||
simple_mtx_destroy(&bs->fence.resource_mtx);
|
||||
ralloc_free(bs);
|
||||
}
|
||||
|
||||
|
|
@ -168,6 +169,7 @@ create_batch_state(struct zink_context *ctx)
|
|||
/* this destroys the batch state on failure */
|
||||
return NULL;
|
||||
|
||||
simple_mtx_init(&bs->fence.resource_mtx, mtx_plain);
|
||||
return bs;
|
||||
fail:
|
||||
zink_batch_state_destroy(screen, bs);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
void
|
||||
zink_fence_clear_resources(struct zink_screen *screen, struct zink_fence *fence)
|
||||
{
|
||||
simple_mtx_lock(&fence->resource_mtx);
|
||||
/* unref all used resources */
|
||||
set_foreach(fence->resources, entry) {
|
||||
struct zink_resource_object *obj = (struct zink_resource_object *)entry->key;
|
||||
|
|
@ -43,6 +44,7 @@ zink_fence_clear_resources(struct zink_screen *screen, struct zink_fence *fence)
|
|||
zink_resource_object_reference(screen, &obj, NULL);
|
||||
_mesa_set_remove(fence->resources, entry);
|
||||
}
|
||||
simple_mtx_unlock(&fence->resource_mtx);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#ifndef ZINK_FENCE_H
|
||||
#define ZINK_FENCE_H
|
||||
|
||||
#include "util/simple_mtx.h"
|
||||
#include "util/u_inlines.h"
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
|
@ -40,6 +41,7 @@ struct zink_fence {
|
|||
VkFence fence;
|
||||
struct pipe_context *deferred_ctx;
|
||||
uint32_t batch_id;
|
||||
simple_mtx_t resource_mtx;
|
||||
struct set *resources; /* resources need access removed asap, so they're on the fence */
|
||||
bool submitted;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue