[Mesa-dev] [PATCH 6/6] r600g: Re-enable growing of the compute memory pool

Tom Stellard tom at stellard.net
Tue Sep 25 11:10:22 PDT 2012


From: Tom Stellard <thomas.stellard at amd.com>

---
 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 04d24f6..19fbe0c 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 0a7b0ac..4cbeb70 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -644,10 +644,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);
 
-- 
1.7.11.4



More information about the mesa-dev mailing list