Mesa (master): r600g: remove r600_resource_buffer struct

Marek Olšák mareko at kemper.freedesktop.org
Mon Sep 12 22:04:24 UTC 2011


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Sep 11 18:46:54 2011 +0200

r600g: remove r600_resource_buffer struct

This subclass of r600_resource doesn't contain any useful members,
so let's just use r600_resource.

---

 src/gallium/drivers/r600/r600_buffer.c       |  108 +++++++++++++-------------
 src/gallium/drivers/r600/r600_pipe.c         |    2 +-
 src/gallium/drivers/r600/r600_resource.h     |   19 +----
 src/gallium/drivers/r600/r600_state_common.c |   16 ++--
 4 files changed, 65 insertions(+), 80 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_buffer.c b/src/gallium/drivers/r600/r600_buffer.c
index 73d17b0..e504e3e 100644
--- a/src/gallium/drivers/r600/r600_buffer.c
+++ b/src/gallium/drivers/r600/r600_buffer.c
@@ -40,12 +40,12 @@ static void r600_buffer_destroy(struct pipe_screen *screen,
 				struct pipe_resource *buf)
 {
 	struct r600_screen *rscreen = (struct r600_screen*)screen;
-	struct r600_resource_buffer *rbuffer = r600_buffer(buf);
+	struct r600_resource *rbuffer = r600_resource(buf);
 
-	if (rbuffer->r.bo) {
-		r600_bo_reference(&rbuffer->r.bo, NULL);
+	if (rbuffer->bo) {
+		r600_bo_reference(&rbuffer->bo, NULL);
 	}
-	rbuffer->r.bo = NULL;
+	rbuffer->bo = NULL;
 	util_slab_free(&rscreen->pool_buffers, rbuffer);
 }
 
@@ -75,14 +75,14 @@ static struct pipe_transfer *r600_get_transfer(struct pipe_context *ctx,
 static void *r600_buffer_transfer_map(struct pipe_context *pipe,
 				      struct pipe_transfer *transfer)
 {
-	struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
+	struct r600_resource *rbuffer = r600_resource(transfer->resource);
 	struct r600_pipe_context *rctx = (struct r600_pipe_context*)pipe;
 	uint8_t *data;
 
-	if (rbuffer->r.b.user_ptr)
-		return (uint8_t*)rbuffer->r.b.user_ptr + transfer->box.x;
+	if (rbuffer->b.user_ptr)
+		return (uint8_t*)rbuffer->b.user_ptr + transfer->box.x;
 
-	data = r600_bo_map(rctx->screen->radeon, rbuffer->r.bo, rctx->ctx.cs, transfer->usage);
+	data = r600_bo_map(rctx->screen->radeon, rbuffer->bo, rctx->ctx.cs, transfer->usage);
 	if (!data)
 		return NULL;
 
@@ -92,14 +92,14 @@ static void *r600_buffer_transfer_map(struct pipe_context *pipe,
 static void r600_buffer_transfer_unmap(struct pipe_context *pipe,
 					struct pipe_transfer *transfer)
 {
-	struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
+	struct r600_resource *rbuffer = r600_resource(transfer->resource);
 	struct r600_pipe_context *rctx = (struct r600_pipe_context*)pipe;
 
-	if (rbuffer->r.b.user_ptr)
+	if (rbuffer->b.user_ptr)
 		return;
 
-	if (rbuffer->r.bo)
-		r600_bo_unmap(rctx->screen->radeon, rbuffer->r.bo);
+	if (rbuffer->bo)
+		r600_bo_unmap(rctx->screen->radeon, rbuffer->bo);
 }
 
 static void r600_buffer_transfer_flush_region(struct pipe_context *pipe,
@@ -126,18 +126,18 @@ static void r600_buffer_transfer_inline_write(struct pipe_context *pipe,
 {
 	struct r600_pipe_context *rctx = (struct r600_pipe_context*)pipe;
 	struct radeon *radeon = rctx->screen->radeon;
-	struct r600_resource_buffer *rbuffer = r600_buffer(resource);
+	struct r600_resource *rbuffer = r600_resource(resource);
 	uint8_t *map = NULL;
 
-	assert(rbuffer->r.b.user_ptr == NULL);
+	assert(rbuffer->b.user_ptr == NULL);
 
-	map = r600_bo_map(radeon, rbuffer->r.bo, rctx->ctx.cs,
+	map = r600_bo_map(radeon, rbuffer->bo, rctx->ctx.cs,
 			  PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD | usage);
 
 	memcpy(map + box->x, data, box->width);
 
-	if (rbuffer->r.bo)
-		r600_bo_unmap(radeon, rbuffer->r.bo);
+	if (rbuffer->bo)
+		r600_bo_unmap(radeon, rbuffer->bo);
 }
 
 static const struct u_resource_vtbl r600_buffer_vtbl =
@@ -156,33 +156,32 @@ struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
 					 const struct pipe_resource *templ)
 {
 	struct r600_screen *rscreen = (struct r600_screen*)screen;
-	struct r600_resource_buffer *rbuffer;
+	struct r600_resource *rbuffer;
 	struct r600_bo *bo;
 	/* XXX We probably want a different alignment for buffers and textures. */
 	unsigned alignment = 4096;
 
 	rbuffer = util_slab_alloc(&rscreen->pool_buffers);
 
-	rbuffer->magic = R600_BUFFER_MAGIC;
-	rbuffer->r.b.b.b = *templ;
-	pipe_reference_init(&rbuffer->r.b.b.b.reference, 1);
-	rbuffer->r.b.b.b.screen = screen;
-	rbuffer->r.b.b.vtbl = &r600_buffer_vtbl;
-	rbuffer->r.b.user_ptr = NULL;
-	rbuffer->r.size = rbuffer->r.b.b.b.width0;
-	rbuffer->r.bo_size = rbuffer->r.size;
+	rbuffer->b.b.b = *templ;
+	pipe_reference_init(&rbuffer->b.b.b.reference, 1);
+	rbuffer->b.b.b.screen = screen;
+	rbuffer->b.b.vtbl = &r600_buffer_vtbl;
+	rbuffer->b.user_ptr = NULL;
+	rbuffer->size = rbuffer->b.b.b.width0;
+	rbuffer->bo_size = rbuffer->size;
 
 	bo = r600_bo(rscreen->radeon,
-		     rbuffer->r.b.b.b.width0,
-		     alignment, rbuffer->r.b.b.b.bind,
-		     rbuffer->r.b.b.b.usage);
+		     rbuffer->b.b.b.width0,
+		     alignment, rbuffer->b.b.b.bind,
+		     rbuffer->b.b.b.usage);
 
 	if (bo == NULL) {
 		FREE(rbuffer);
 		return NULL;
 	}
-	rbuffer->r.bo = bo;
-	return &rbuffer->r.b.b.b;
+	rbuffer->bo = bo;
+	return &rbuffer->b.b.b;
 }
 
 struct pipe_resource *r600_user_buffer_create(struct pipe_screen *screen,
@@ -190,27 +189,26 @@ struct pipe_resource *r600_user_buffer_create(struct pipe_screen *screen,
 					      unsigned bind)
 {
 	struct r600_screen *rscreen = (struct r600_screen*)screen;
-	struct r600_resource_buffer *rbuffer;
+	struct r600_resource *rbuffer;
 
 	rbuffer = util_slab_alloc(&rscreen->pool_buffers);
 
-	rbuffer->magic = R600_BUFFER_MAGIC;
-	pipe_reference_init(&rbuffer->r.b.b.b.reference, 1);
-	rbuffer->r.b.b.vtbl = &r600_buffer_vtbl;
-	rbuffer->r.b.b.b.screen = screen;
-	rbuffer->r.b.b.b.target = PIPE_BUFFER;
-	rbuffer->r.b.b.b.format = PIPE_FORMAT_R8_UNORM;
-	rbuffer->r.b.b.b.usage = PIPE_USAGE_IMMUTABLE;
-	rbuffer->r.b.b.b.bind = bind;
-	rbuffer->r.b.b.b.width0 = bytes;
-	rbuffer->r.b.b.b.height0 = 1;
-	rbuffer->r.b.b.b.depth0 = 1;
-	rbuffer->r.b.b.b.array_size = 1;
-	rbuffer->r.b.b.b.flags = 0;
-	rbuffer->r.b.user_ptr = ptr;
-	rbuffer->r.bo = NULL;
-	rbuffer->r.bo_size = 0;
-	return &rbuffer->r.b.b.b;
+	pipe_reference_init(&rbuffer->b.b.b.reference, 1);
+	rbuffer->b.b.vtbl = &r600_buffer_vtbl;
+	rbuffer->b.b.b.screen = screen;
+	rbuffer->b.b.b.target = PIPE_BUFFER;
+	rbuffer->b.b.b.format = PIPE_FORMAT_R8_UNORM;
+	rbuffer->b.b.b.usage = PIPE_USAGE_IMMUTABLE;
+	rbuffer->b.b.b.bind = bind;
+	rbuffer->b.b.b.width0 = bytes;
+	rbuffer->b.b.b.height0 = 1;
+	rbuffer->b.b.b.depth0 = 1;
+	rbuffer->b.b.b.array_size = 1;
+	rbuffer->b.b.b.flags = 0;
+	rbuffer->b.user_ptr = ptr;
+	rbuffer->bo = NULL;
+	rbuffer->bo_size = 0;
+	return &rbuffer->b.b.b;
 }
 
 struct pipe_resource *r600_buffer_from_handle(struct pipe_screen *screen,
@@ -241,22 +239,22 @@ struct pipe_resource *r600_buffer_from_handle(struct pipe_screen *screen,
 
 void r600_upload_index_buffer(struct r600_pipe_context *rctx, struct r600_drawl *draw)
 {
-	struct r600_resource_buffer *rbuffer = r600_buffer(draw->index_buffer);
+	struct r600_resource *rbuffer = r600_resource(draw->index_buffer);
 	boolean flushed;
 
 	u_upload_data(rctx->vbuf_mgr->uploader, 0,
 		      draw->info.count * draw->index_size,
-		      rbuffer->r.b.user_ptr,
+		      rbuffer->b.user_ptr,
 		      &draw->index_buffer_offset,
 		      &draw->index_buffer, &flushed);
 }
 
-void r600_upload_const_buffer(struct r600_pipe_context *rctx, struct r600_resource_buffer **rbuffer,
+void r600_upload_const_buffer(struct r600_pipe_context *rctx, struct r600_resource **rbuffer,
 			     uint32_t *const_offset)
 {
-	if ((*rbuffer)->r.b.user_ptr) {
-		uint8_t *ptr = (*rbuffer)->r.b.user_ptr;
-		unsigned size = (*rbuffer)->r.b.b.b.width0;
+	if ((*rbuffer)->b.user_ptr) {
+		uint8_t *ptr = (*rbuffer)->b.user_ptr;
+		unsigned size = (*rbuffer)->b.b.b.width0;
 		boolean flushed;
 
 		*rbuffer = NULL;
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index f22ab52..48b0fe9 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -745,7 +745,7 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
 	util_format_s3tc_init();
 
 	util_slab_create(&rscreen->pool_buffers,
-			 sizeof(struct r600_resource_buffer), 64,
+			 sizeof(struct r600_resource), 64,
 			 UTIL_SLAB_SINGLETHREADED);
 
 	pipe_mutex_init(rscreen->mutex_num_contexts);
diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h
index d9d29db..632fbf1 100644
--- a/src/gallium/drivers/r600/r600_resource.h
+++ b/src/gallium/drivers/r600/r600_resource.h
@@ -79,14 +79,6 @@ struct r600_resource_texture {
 
 #define R600_TEX_IS_TILED(tex, level) ((tex)->array_mode[level] != V_038000_ARRAY_LINEAR_GENERAL && (tex)->array_mode[level] != V_038000_ARRAY_LINEAR_ALIGNED)
 
-#define R600_BUFFER_MAGIC 0xabcd1600
-
-/* XXX this could be removed */
-struct r600_resource_buffer {
-	struct r600_resource		r;
-	uint32_t			magic;
-};
-
 struct r600_surface {
 	struct pipe_surface		base;
 	unsigned			aligned_height;
@@ -101,14 +93,9 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen,
 						const struct pipe_resource *base,
 						struct winsys_handle *whandle);
 
-/* r600_buffer */
-static INLINE struct r600_resource_buffer *r600_buffer(struct pipe_resource *buffer)
+static INLINE struct r600_resource *r600_resource(struct pipe_resource *r)
 {
-	if (buffer) {
-		assert(((struct r600_resource_buffer *)buffer)->magic == R600_BUFFER_MAGIC);
-		return (struct r600_resource_buffer *)buffer;
-	}
-	return NULL;
+	return (struct r600_resource*)r;
 }
 
 int r600_texture_depth_flush(struct pipe_context *ctx, struct pipe_resource *texture, boolean just_create);
@@ -128,6 +115,6 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
 
 struct r600_pipe_context;
 
-void r600_upload_const_buffer(struct r600_pipe_context *rctx, struct r600_resource_buffer **rbuffer, uint32_t *offset);
+void r600_upload_const_buffer(struct r600_pipe_context *rctx, struct r600_resource **rbuffer, uint32_t *offset);
 
 #endif
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
index ac42684..a331b0a 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -406,7 +406,7 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
 			      struct pipe_resource *buffer)
 {
 	struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-	struct r600_resource_buffer *rbuffer = r600_buffer(buffer);
+	struct r600_resource *rbuffer = r600_resource(buffer);
 	struct r600_pipe_resource_state *rstate;
 	uint32_t offset;
 
@@ -428,7 +428,7 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
 					0xFFFFFFFF, NULL, 0);
 		r600_pipe_state_add_reg(&rctx->vs_const_buffer,
 					R_028980_ALU_CONST_CACHE_VS_0,
-					offset >> 8, 0xFFFFFFFF, rbuffer->r.bo, RADEON_USAGE_READ);
+					offset >> 8, 0xFFFFFFFF, rbuffer->bo, RADEON_USAGE_READ);
 		r600_context_pipe_state_set(&rctx->ctx, &rctx->vs_const_buffer);
 
 		rstate = &rctx->vs_const_buffer_resource[index];
@@ -441,10 +441,10 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
 		}
 
 		if (rctx->chip_class >= EVERGREEN) {
-			evergreen_pipe_mod_buffer_resource(rstate, &rbuffer->r, offset, 16, RADEON_USAGE_READ);
+			evergreen_pipe_mod_buffer_resource(rstate, rbuffer, offset, 16, RADEON_USAGE_READ);
 			evergreen_context_pipe_state_set_vs_resource(&rctx->ctx, rstate, index);
 		} else {
-			r600_pipe_mod_buffer_resource(rstate, &rbuffer->r, offset, 16, RADEON_USAGE_READ);
+			r600_pipe_mod_buffer_resource(rstate, rbuffer, offset, 16, RADEON_USAGE_READ);
 			r600_context_pipe_state_set_vs_resource(&rctx->ctx, rstate, index);
 		}
 		break;
@@ -456,7 +456,7 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
 					0xFFFFFFFF, NULL, 0);
 		r600_pipe_state_add_reg(&rctx->ps_const_buffer,
 					R_028940_ALU_CONST_CACHE_PS_0,
-					offset >> 8, 0xFFFFFFFF, rbuffer->r.bo, RADEON_USAGE_READ);
+					offset >> 8, 0xFFFFFFFF, rbuffer->bo, RADEON_USAGE_READ);
 		r600_context_pipe_state_set(&rctx->ctx, &rctx->ps_const_buffer);
 
 		rstate = &rctx->ps_const_buffer_resource[index];
@@ -468,10 +468,10 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
 			}
 		}
 		if (rctx->chip_class >= EVERGREEN) {
-			evergreen_pipe_mod_buffer_resource(rstate, &rbuffer->r, offset, 16, RADEON_USAGE_READ);
+			evergreen_pipe_mod_buffer_resource(rstate, rbuffer, offset, 16, RADEON_USAGE_READ);
 			evergreen_context_pipe_state_set_ps_resource(&rctx->ctx, rstate, index);
 		} else {
-			r600_pipe_mod_buffer_resource(rstate, &rbuffer->r, offset, 16, RADEON_USAGE_READ);
+			r600_pipe_mod_buffer_resource(rstate, rbuffer, offset, 16, RADEON_USAGE_READ);
 			r600_context_pipe_state_set_ps_resource(&rctx->ctx, rstate, index);
 		}
 		break;
@@ -480,7 +480,7 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
 		return;
 	}
 
-	if (buffer != &rbuffer->r.b.b.b)
+	if (buffer != &rbuffer->b.b.b)
 		pipe_resource_reference((struct pipe_resource**)&rbuffer, NULL);
 }
 




More information about the mesa-commit mailing list