zink: use a slab allocator for zink_kopper_present_info
this improves perf slightly at extremely high fps Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27867>
This commit is contained in:

committed by
Marge Bot

parent
cdd1ce140d
commit
738fbddca8
@@ -760,7 +760,7 @@ out:
|
||||
struct pipe_resource *pres = &cpi->res->base.b;
|
||||
pipe_resource_reference(&pres, NULL);
|
||||
}
|
||||
free(cpi);
|
||||
slab_free_st(&screen->present_mempool, cpi);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -775,7 +775,7 @@ zink_kopper_present_queue(struct zink_screen *screen, struct zink_resource *res)
|
||||
if (cdt->swapchain->last_present != UINT32_MAX)
|
||||
prune_old_swapchains(screen, cdt, false);
|
||||
|
||||
struct zink_kopper_present_info *cpi = malloc(sizeof(struct zink_kopper_present_info));
|
||||
struct zink_kopper_present_info *cpi = slab_alloc_st(&screen->present_mempool);
|
||||
if (!cpi) {
|
||||
mesa_loge("ZINK: failed to allocate cpi!");
|
||||
return;
|
||||
|
@@ -1619,6 +1619,7 @@ zink_destroy_screen(struct pipe_screen *pscreen)
|
||||
close(screen->drm_fd);
|
||||
|
||||
slab_destroy_parent(&screen->transfer_pool);
|
||||
slab_destroy(&screen->present_mempool);
|
||||
ralloc_free(screen);
|
||||
glsl_type_singleton_decref();
|
||||
}
|
||||
@@ -3488,6 +3489,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
populate_format_props(screen);
|
||||
|
||||
slab_create_parent(&screen->transfer_pool, sizeof(struct zink_transfer), 16);
|
||||
slab_create(&screen->present_mempool, sizeof(struct zink_kopper_present_info), 16);
|
||||
|
||||
screen->driconf.inline_uniforms = debug_get_bool_option("ZINK_INLINE_UNIFORMS", screen->is_cpu) && !(zink_debug & ZINK_DEBUG_DGC);
|
||||
|
||||
|
@@ -1434,6 +1434,7 @@ struct zink_screen {
|
||||
bool device_lost;
|
||||
int drm_fd;
|
||||
|
||||
struct slab_mempool present_mempool;
|
||||
struct slab_parent_pool transfer_pool;
|
||||
struct disk_cache *disk_cache;
|
||||
struct util_queue cache_put_thread;
|
||||
|
Reference in New Issue
Block a user