vc4: use the new parent/child pools for transfers
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
0334ba150f
commit
2a83036fe2
|
@ -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;
|
||||
|
|
|
@ -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_* */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue