iris: Don't allocate a BO per query object
Instead of allocating 4K BO per query object, we can create a large blob of memory and split it into pieces as required. Having one BO for multiple query objects, we don't want to wait on all of them, instead when we write last snapshot, we create a sync point, and check syncpoints while waiting on particular object. Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
This commit is contained in:

committed by
Kenneth Graunke

parent
a1ebac3750
commit
c24a574e6c
@@ -113,6 +113,7 @@ iris_destroy_context(struct pipe_context *ctx)
|
||||
iris_destroy_border_color_pool(ice);
|
||||
u_upload_destroy(ice->state.surface_uploader);
|
||||
u_upload_destroy(ice->state.dynamic_uploader);
|
||||
u_upload_destroy(ice->query_buffer_uploader);
|
||||
|
||||
slab_destroy_child(&ice->transfer_pool);
|
||||
|
||||
@@ -195,6 +196,10 @@ iris_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags)
|
||||
u_upload_create(ctx, 16384, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE,
|
||||
IRIS_RESOURCE_FLAG_DYNAMIC_MEMZONE);
|
||||
|
||||
ice->query_buffer_uploader =
|
||||
u_upload_create(ctx, 4096, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE,
|
||||
0);
|
||||
|
||||
genX_call(devinfo, init_state, ice);
|
||||
genX_call(devinfo, init_blorp, ice);
|
||||
|
||||
|
Reference in New Issue
Block a user