Mesa (master): r600g: Put shaders into immutable buffers.

Alex Deucher agd5f at kemper.freedesktop.org
Mon Jun 13 15:55:52 UTC 2011


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

Author: Mathias Fröhlich <Mathias.Froehlich at web.de>
Date:   Sat Jun  4 00:21:29 2011 +0200

r600g: Put shaders into immutable buffers.

Put the shader programs into an immutable buffer object.
Also make sure that those object can be taken from the user
space buffer object pool.

---

 src/gallium/drivers/r600/r600_asm.c    |    2 +-
 src/gallium/drivers/r600/r600_shader.c |    3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 3196d97..aeb1175 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -2258,7 +2258,7 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru
 	ve->fs_size = bc.ndw*4;
 
 	/* use PIPE_BIND_VERTEX_BUFFER so we use the cache buffer manager */
-	ve->fetch_shader = r600_bo(rctx->radeon, ve->fs_size, 256, PIPE_BIND_VERTEX_BUFFER, 0);
+	ve->fetch_shader = r600_bo(rctx->radeon, ve->fs_size, 256, PIPE_BIND_VERTEX_BUFFER, PIPE_USAGE_IMMUTABLE);
 	if (ve->fetch_shader == NULL) {
 		r600_bc_clear(&bc);
 		return -ENOMEM;
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 39e6d85..d111caa 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -85,7 +85,8 @@ static int r600_pipe_shader(struct pipe_context *ctx, struct r600_pipe_shader *s
 
 	/* copy new shader */
 	if (shader->bo == NULL) {
-		shader->bo = r600_bo(rctx->radeon, rshader->bc.ndw * 4, 4096, 0, 0);
+		/* use PIPE_BIND_VERTEX_BUFFER so we use the cache buffer manager */
+		shader->bo = r600_bo(rctx->radeon, rshader->bc.ndw * 4, 4096, PIPE_BIND_VERTEX_BUFFER, PIPE_USAGE_IMMUTABLE);
 		if (shader->bo == NULL) {
 			return -ENOMEM;
 		}




More information about the mesa-commit mailing list