mesa_loge("ZINK: vkResetCommandPool failed (%s)", vk_Result_to_str(result));
/* unref all used resources */
- set_foreach_remove(bs->resources, entry) {
+ set_foreach_remove(&bs->resources, entry) {
struct zink_resource_object *obj = (struct zink_resource_object *)entry->key;
if (!zink_resource_object_usage_unset(obj, bs)) {
obj->unordered_read = obj->unordered_write = false;
}
}
- set_foreach_remove(bs->active_queries, entry) {
+ set_foreach_remove(&bs->active_queries, entry) {
struct zink_query *query = (void*)entry->key;
zink_prune_query(screen, bs, query);
}
- set_foreach_remove(bs->surfaces, entry) {
+ set_foreach_remove(&bs->surfaces, entry) {
struct zink_surface *surf = (struct zink_surface *)entry->key;
zink_batch_usage_unset(&surf->batch_uses, bs);
zink_surface_reference(screen, &surf, NULL);
}
- set_foreach_remove(bs->bufferviews, entry) {
+ set_foreach_remove(&bs->bufferviews, entry) {
struct zink_buffer_view *buffer_view = (struct zink_buffer_view *)entry->key;
zink_batch_usage_unset(&buffer_view->batch_uses, bs);
zink_buffer_view_reference(screen, &buffer_view, NULL);
zink_batch_descriptor_reset(screen, bs);
- set_foreach_remove(bs->programs, entry) {
+ set_foreach_remove(&bs->programs, entry) {
struct zink_program *pg = (struct zink_program*)entry->key;
zink_batch_usage_unset(&pg->batch_uses, bs);
zink_program_reference(ctx, &pg, NULL);
util_dynarray_fini(&bs->acquires);
util_dynarray_fini(&bs->acquire_flags);
util_dynarray_fini(&bs->dead_swapchains);
- _mesa_set_destroy(bs->surfaces, NULL);
- _mesa_set_destroy(bs->bufferviews, NULL);
- _mesa_set_destroy(bs->programs, NULL);
- _mesa_set_destroy(bs->active_queries, NULL);
zink_batch_descriptor_deinit(screen, bs);
ralloc_free(bs);
}
}
#define SET_CREATE_OR_FAIL(ptr) \
- ptr = _mesa_pointer_set_create(bs); \
- if (!ptr) \
+ if (!_mesa_set_init(ptr, bs, _mesa_hash_pointer, _mesa_key_pointer_equal)) \
goto fail
bs->ctx = ctx;
- SET_CREATE_OR_FAIL(bs->resources);
- SET_CREATE_OR_FAIL(bs->surfaces);
- SET_CREATE_OR_FAIL(bs->bufferviews);
- SET_CREATE_OR_FAIL(bs->programs);
- SET_CREATE_OR_FAIL(bs->active_queries);
+ SET_CREATE_OR_FAIL(&bs->resources);
+ SET_CREATE_OR_FAIL(&bs->surfaces);
+ SET_CREATE_OR_FAIL(&bs->bufferviews);
+ SET_CREATE_OR_FAIL(&bs->programs);
+ SET_CREATE_OR_FAIL(&bs->active_queries);
util_dynarray_init(&bs->wait_semaphores, NULL);
util_dynarray_init(&bs->wait_semaphore_stages, NULL);
util_dynarray_init(&bs->zombie_samplers, NULL);
void
zink_batch_reference_resource(struct zink_batch *batch, struct zink_resource *res)
{
- if (!batch_ptr_add_usage(batch, batch->state->resources, res->obj))
+ if (!batch_ptr_add_usage(batch, &batch->state->resources, res->obj))
return;
pipe_reference(NULL, &res->obj->reference);
batch->state->resource_size += res->obj->size;
void
zink_batch_reference_resource_move(struct zink_batch *batch, struct zink_resource *res)
{
- if (!batch_ptr_add_usage(batch, batch->state->resources, res->obj))
+ if (!batch_ptr_add_usage(batch, &batch->state->resources, res->obj))
return;
batch->state->resource_size += res->obj->size;
check_oom_flush(batch->state->ctx, batch);
void
zink_batch_reference_bufferview(struct zink_batch *batch, struct zink_buffer_view *buffer_view)
{
- if (!batch_ptr_add_usage(batch, batch->state->bufferviews, buffer_view))
+ if (!batch_ptr_add_usage(batch, &batch->state->bufferviews, buffer_view))
return;
pipe_reference(NULL, &buffer_view->reference);
batch->has_work = true;
void
zink_batch_reference_surface(struct zink_batch *batch, struct zink_surface *surface)
{
- if (!batch_ptr_add_usage(batch, batch->state->surfaces, surface))
+ if (!batch_ptr_add_usage(batch, &batch->state->surfaces, surface))
return;
struct pipe_surface *surf = NULL;
pipe_surface_reference(&surf, &surface->base);
struct zink_program *pg)
{
if (zink_batch_usage_matches(pg->batch_uses, batch->state) ||
- !batch_ptr_add_usage(batch, batch->state->programs, pg))
+ !batch_ptr_add_usage(batch, &batch->state->programs, pg))
return;
pipe_reference(NULL, &pg->reference);
zink_batch_usage_set(&pg->batch_uses, batch->state);
VKCTX(CmdWriteTimestamp)(batch->state->cmdbuf, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, start->vkq[0]->pool->query_pool, start->vkq[0]->query_id);
update_qbo(ctx, q);
zink_batch_usage_set(&q->batch_uses, batch->state);
- _mesa_set_add(batch->state->active_queries, q);
+ _mesa_set_add(&batch->state->active_queries, q);
}
/* ignore the rest of begin_query for timestamps */
if (is_time_query(q))
if (needs_stats_list(q))
list_addtail(&q->stats_list, &ctx->primitives_generated_queries);
zink_batch_usage_set(&q->batch_uses, batch->state);
- _mesa_set_add(batch->state->active_queries, q);
+ _mesa_set_add(&batch->state->active_queries, q);
if (q->needs_rast_discard_workaround) {
ctx->primitives_generated_active = true;
if (zink_set_rasterizer_discard(ctx, true))
VKCTX(CmdWriteTimestamp)(batch->state->cmdbuf, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
start->vkq[0]->pool->query_pool, start->vkq[0]->query_id);
zink_batch_usage_set(&query->batch_uses, batch->state);
- _mesa_set_add(batch->state->active_queries, query);
+ _mesa_set_add(&batch->state->active_queries, query);
check_update(ctx, query);
} else if (query->active)
end_query(ctx, batch, query);
void
zink_suspend_queries(struct zink_context *ctx, struct zink_batch *batch)
{
- set_foreach(batch->state->active_queries, entry) {
+ set_foreach(&batch->state->active_queries, entry) {
struct zink_query *query = (void*)entry->key;
if (query->active && !is_time_query(query))
/* the fence is going to steal the set off the batch, so we have to copy