vc4: use the new parent/child pools for transfers

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle 2016-09-27 19:09:24 +02:00
parent 0334ba150f
commit 2a83036fe2
5 changed files with 11 additions and 6 deletions

View File

@ -96,7 +96,7 @@ vc4_context_destroy(struct pipe_context *pctx)
if (vc4->uploader)
u_upload_destroy(vc4->uploader);
slab_destroy(&vc4->transfer_pool);
slab_destroy_child(&vc4->transfer_pool);
pipe_surface_reference(&vc4->framebuffer.cbufs[0], NULL);
pipe_surface_reference(&vc4->framebuffer.zsbuf, NULL);
@ -139,8 +139,7 @@ vc4_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
vc4->fd = screen->fd;
slab_create(&vc4->transfer_pool, sizeof(struct vc4_transfer),
16);
slab_create_child(&vc4->transfer_pool, &screen->transfer_pool);
vc4->blitter = util_blitter_create(pctx);
if (!vc4->blitter)
goto fail;

View File

@ -297,7 +297,7 @@ struct vc4_context {
*/
struct hash_table *write_jobs;
struct slab_mempool transfer_pool;
struct slab_child_pool transfer_pool;
struct blitter_context *blitter;
/** bitfield of VC4_DIRTY_* */

View File

@ -120,7 +120,7 @@ vc4_resource_transfer_unmap(struct pipe_context *pctx,
}
pipe_resource_reference(&ptrans->resource, NULL);
slab_free_st(&vc4->transfer_pool, ptrans);
slab_free(&vc4->transfer_pool, ptrans);
}
static struct pipe_resource *
@ -196,7 +196,7 @@ vc4_resource_transfer_map(struct pipe_context *pctx,
if (usage & PIPE_TRANSFER_WRITE)
rsc->writes++;
trans = slab_alloc_st(&vc4->transfer_pool);
trans = slab_alloc(&vc4->transfer_pool);
if (!trans)
return NULL;

View File

@ -98,6 +98,7 @@ vc4_screen_destroy(struct pipe_screen *pscreen)
util_hash_table_destroy(screen->bo_handles);
vc4_bufmgr_destroy(pscreen);
slab_destroy_parent(&screen->transfer_pool);
close(screen->fd);
ralloc_free(pscreen);
}
@ -614,6 +615,8 @@ vc4_screen_create(int fd)
if (!vc4_get_chip_info(screen))
goto fail;
slab_create_parent(&screen->transfer_pool, sizeof(struct vc4_transfer), 16);
vc4_fence_init(screen);
vc4_debug = debug_get_option_vc4_debug();

View File

@ -28,6 +28,7 @@
#include "os/os_thread.h"
#include "state_tracker/drm_driver.h"
#include "util/list.h"
#include "util/slab.h"
struct vc4_bo;
@ -64,6 +65,8 @@ struct vc4_screen {
*/
uint64_t finished_seqno;
struct slab_parent_pool transfer_pool;
struct vc4_bo_cache {
/** List of struct vc4_bo freed, by age. */
struct list_head time_list;