From 486dada6bc3820370a4aaa211384bddf61c2f08d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 31 Mar 2020 15:57:19 +1000 Subject: [PATCH] llvmpipe: size initial allocation and free scenes Reviewed-by: Roland Scheidegger Part-of: --- src/gallium/drivers/llvmpipe/lp_setup.c | 18 ++++++++---------- .../drivers/llvmpipe/lp_setup_context.h | 3 ++- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 564d8652cdd..b6309f92cba 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -1178,7 +1178,7 @@ lp_setup_is_resource_referenced( const struct lp_setup_context *setup, } /* check textures referenced by the scene */ - for (i = 0; i < ARRAY_SIZE(setup->scenes); i++) { + for (i = 0; i < setup->num_active_scenes; i++) { if (lp_scene_is_resource_referenced(setup->scenes[i], texture)) { return LP_REFERENCED_FOR_READ; } @@ -1559,7 +1559,7 @@ lp_setup_destroy( struct lp_setup_context *setup ) } /* free the scenes in the 'empty' queue */ - for (i = 0; i < ARRAY_SIZE(setup->scenes); i++) { + for (i = 0; i < setup->num_active_scenes; i++) { struct lp_scene *scene = setup->scenes[i]; if (scene->fence) @@ -1612,15 +1612,13 @@ lp_setup_create( struct pipe_context *pipe, slab_create(&setup->scene_slab, sizeof(struct lp_scene), - MAX_SCENES); - /* create some empty scenes */ - for (i = 0; i < MAX_SCENES; i++) { - setup->scenes[i] = lp_scene_create( setup ); - if (!setup->scenes[i]) { - goto no_scenes; - } - setup->num_active_scenes++; + INITIAL_SCENES); + /* create just one scene for starting point */ + setup->scenes[0] = lp_scene_create( setup ); + if (!setup->scenes[0]) { + goto no_scenes; } + setup->num_active_scenes++; setup->triangle = first_triangle; setup->line = first_line; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h index d5fcb54cbd0..22fcf87c829 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_context.h +++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h @@ -57,7 +57,8 @@ struct lp_setup_variant; /** Max number of scenes */ /* XXX: make multiple scenes per context work, see lp_setup_rasterize_scene */ -#define MAX_SCENES 1 +#define INITIAL_SCENES 4 +#define MAX_SCENES 64