summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <[email protected]>2012-09-13 17:09:03 +0000
committerTom Stellard <[email protected]>2012-10-01 15:37:16 +0000
commit91ee7350014d6bd6af251d326553284420dba294 (patch)
tree1c6b3e86eb34566d91aa2220df68b66153218eb8
parent44b1050e6ce9f484724d88db8d338e3aa9651548 (diff)
r600g: Re-enable growing of the compute memory pool
-rw-r--r--src/gallium/drivers/r600/compute_memory_pool.c15
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c7
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);