Mesa (master): r600g: Enable reusing of compute state

Tom Stellard tstellar at kemper.freedesktop.org
Thu Jun 21 20:50:26 UTC 2012


Module: Mesa
Branch: master
Commit: ff08f1ec6fa50cdcebfa825505fd93dd1edd1832
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff08f1ec6fa50cdcebfa825505fd93dd1edd1832

Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Wed Jun  6 19:44:09 2012 -0400

r600g: Enable reusing of compute state

---

 src/gallium/drivers/r600/evergreen_compute.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c
index 3bb3895..b2af26d 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -147,18 +147,21 @@ static void evergreen_bind_compute_state(struct pipe_context *ctx_, void *state)
 
 	ctx->cs_shader = (struct r600_pipe_compute *)state;
 
-	assert(!ctx->cs_shader->shader_code_bo);
+	if (!ctx->cs_shader->shader_code_bo) {
 
-	ctx->cs_shader->shader_code_bo =
-		r600_compute_buffer_alloc_vram(ctx->screen,
+		ctx->cs_shader->shader_code_bo =
+			r600_compute_buffer_alloc_vram(ctx->screen,
 					ctx->cs_shader->bc.ndw * 4);
 
-	void *p = ctx->ws->buffer_map(ctx->cs_shader->shader_code_bo->cs_buf,
+		void *p = ctx->ws->buffer_map(
+					ctx->cs_shader->shader_code_bo->cs_buf,
 					ctx->cs, PIPE_TRANSFER_WRITE);
 
-	memcpy(p, ctx->cs_shader->bc.bytecode, ctx->cs_shader->bc.ndw * 4);
+		memcpy(p, ctx->cs_shader->bc.bytecode, ctx->cs_shader->bc.ndw * 4);
 
-	ctx->ws->buffer_unmap(ctx->cs_shader->shader_code_bo->cs_buf);
+		ctx->ws->buffer_unmap(ctx->cs_shader->shader_code_bo->cs_buf);
+
+	}
 
 	evergreen_compute_init_config(ctx);
 




More information about the mesa-commit mailing list