[Mesa-dev] [PATCH 03/10] radeonsi: generalize si_set_constant_buffer

Marek Olšák maraeo at gmail.com
Wed Apr 20 15:47:06 UTC 2016


From: Marek Olšák <marek.olsak at amd.com>

this will be used in the next commit
---
 src/gallium/drivers/radeonsi/si_descriptors.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index c802b1e..b8f74f4 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -775,15 +775,10 @@ void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuf
 		util_memcpy_cpu_to_le32(tmp, ptr, size);
 }
 
-static void si_set_constant_buffer(struct pipe_context *ctx, uint shader, uint slot,
-				   struct pipe_constant_buffer *input)
+static void si_set_constant_buffer(struct si_context *sctx,
+				   struct si_buffer_resources *buffers,
+				   uint slot, struct pipe_constant_buffer *input)
 {
-	struct si_context *sctx = (struct si_context *)ctx;
-	struct si_buffer_resources *buffers = &sctx->const_buffers[shader];
-
-	if (shader >= SI_NUM_SHADERS)
-		return;
-
 	assert(slot < buffers->desc.num_elements);
 	pipe_resource_reference(&buffers->buffers[slot], NULL);
 
@@ -806,7 +801,7 @@ static void si_set_constant_buffer(struct pipe_context *ctx, uint shader, uint s
 					       input->buffer_size, &buffer_offset);
 			if (!buffer) {
 				/* Just unbind on failure. */
-				si_set_constant_buffer(ctx, shader, slot, NULL);
+				si_set_constant_buffer(sctx, buffers, slot, NULL);
 				return;
 			}
 			va = r600_resource(buffer)->gpu_address + buffer_offset;
@@ -842,6 +837,18 @@ static void si_set_constant_buffer(struct pipe_context *ctx, uint shader, uint s
 	buffers->desc.dirty_mask |= 1llu << slot;
 }
 
+static void si_pipe_set_constant_buffer(struct pipe_context *ctx,
+					uint shader, uint slot,
+					struct pipe_constant_buffer *input)
+{
+	struct si_context *sctx = (struct si_context *)ctx;
+
+	if (shader >= SI_NUM_SHADERS)
+		return;
+
+	si_set_constant_buffer(sctx, &sctx->const_buffers[shader], slot, input);
+}
+
 /* SHADER BUFFERS */
 
 static void si_set_shader_buffers(struct pipe_context *ctx, unsigned shader,
@@ -1470,7 +1477,7 @@ void si_init_all_descriptors(struct si_context *sctx)
 	/* Set pipe_context functions. */
 	sctx->b.b.bind_sampler_states = si_bind_sampler_states;
 	sctx->b.b.set_shader_images = si_set_shader_images;
-	sctx->b.b.set_constant_buffer = si_set_constant_buffer;
+	sctx->b.b.set_constant_buffer = si_pipe_set_constant_buffer;
 	sctx->b.b.set_shader_buffers = si_set_shader_buffers;
 	sctx->b.b.set_sampler_views = si_set_sampler_views;
 	sctx->b.b.set_stream_output_targets = si_set_streamout_targets;
-- 
2.5.0



More information about the mesa-dev mailing list