From 91ee7350014d6bd6af251d326553284420dba294 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 13 Sep 2012 17:09:03 +0000 Subject: [PATCH] r600g: Re-enable growing of the compute memory pool --- src/gallium/drivers/r600/compute_memory_pool.c | 15 +-------------- src/gallium/drivers/r600/r600_pipe.c | 7 +++---- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/gallium/drivers/r600/compute_memory_pool.c b/src/gallium/drivers/r600/compute_memory_pool.c index 04d24f6cbd3..19fbe0cddc4 100644 --- a/src/gallium/drivers/r600/compute_memory_pool.c +++ b/src/gallium/drivers/r600/compute_memory_pool.c @@ -64,10 +64,7 @@ static void compute_memory_pool_init(struct compute_memory_pool * pool, COMPUTE_DBG("* compute_memory_pool_init() initial_size_in_dw = %ld\n", initial_size_in_dw); - /* XXX: pool->shadow is used when the buffer needs to be resized, but - * resizing does not work at the moment. - * pool->shadow = (uint32_t*)CALLOC(4, pool->size_in_dw); - */ + pool->shadow = (uint32_t*)CALLOC(initial_size_in_dw, 4); pool->next_id = 1; pool->size_in_dw = initial_size_in_dw; pool->bo = (struct r600_resource*)r600_compute_buffer_alloc_vram(pool->screen, @@ -169,19 +166,9 @@ void compute_memory_grow_pool(struct compute_memory_pool* pool, assert(new_size_in_dw >= pool->size_in_dw); - assert(!pool->bo && "Growing the global memory pool is not yet " - "supported. You will see this message if you are trying to" - "use more than 64 kb of memory"); - if (!pool->bo) { compute_memory_pool_init(pool, MAX2(new_size_in_dw, 1024 * 16)); } else { - /* XXX: Growing memory pools does not work at the moment. I think - * it is because we are using fragment shaders to copy data to - * the new texture and some of the compute registers are being - * included in the 3D command stream. */ - fprintf(stderr, "Warning: growing the global memory pool to" - "more than 64 kb is not yet supported\n"); new_size_in_dw += 1024 - (new_size_in_dw % 1024); COMPUTE_DBG(" Aligned size = %d\n", new_size_in_dw); diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index f4d3dc1dee3..70e82062a30 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -645,10 +645,9 @@ static int r600_get_compute_param(struct pipe_screen *screen, case PIPE_COMPUTE_CAP_MAX_GLOBAL_SIZE: if (ret) { uint64_t * max_global_size = ret; - /* XXX: This is 64kb for now until we get the - * compute memory pool working correctly. - */ - *max_global_size = 1024 * 16 * 4; + /* XXX: This is what the proprietary driver reports, we + * may want to use a different value. */ + *max_global_size = 201326592; } return sizeof(uint64_t); -- 2.30.2