Mesa (master): r600,compute: Reserve vtx 3 for kernel arguments

Jan Vesely jvesely at kemper.freedesktop.org
Thu Jul 14 20:05:40 UTC 2016


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

Author: Jan Vesely <jan.vesely at rutgers.edu>
Date:   Sat Jun 25 22:06:09 2016 -0400

r600,compute: Reserve vtx 3 for kernel arguments

Using vtx 0 does not work for dynamic offsets.

v2: add explanatory comment

Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

---

 src/gallium/drivers/r600/evergreen_compute.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c
index 6dd6e74..b711786 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -369,7 +369,11 @@ static void evergreen_compute_upload_input(struct pipe_context *ctx,
 
 	ctx->transfer_unmap(ctx, transfer);
 
-	/* ID=0 is reserved for the parameters */
+	/* ID=0 and ID=3 are reserved for the parameters.
+	 * LLVM will preferably use ID=0, but it does not work for dynamic
+	 * indices. */
+	evergreen_cs_set_vertex_buffer(rctx, 3, 0,
+			(struct pipe_resource*)shader->kernel_param);
 	evergreen_cs_set_constant_buffer(rctx, 0, 0, input_size,
 			(struct pipe_resource*)shader->kernel_param);
 }
@@ -615,9 +619,9 @@ static void evergreen_set_compute_resources(struct pipe_context *ctx,
 			start, count);
 
 	for (unsigned i = 0; i < count; i++) {
-		/* The First three vertex buffers are reserved for parameters and
+		/* The First four vertex buffers are reserved for parameters and
 		 * global buffers. */
-		unsigned vtx_id = 3 + i;
+		unsigned vtx_id = 4 + i;
 		if (resources[i]) {
 			struct r600_resource_global *buffer =
 				(struct r600_resource_global*)




More information about the mesa-commit mailing list