Mesa (master): r600g: cleanup r600_transfer_struct

Marek Olšák mareko at kemper.freedesktop.org
Mon Feb 27 01:04:43 UTC 2012


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Feb 26 19:44:45 2012 +0100

r600g: cleanup r600_transfer_struct

Especially rename staging_texture to staging and change its type
to r600_resource. I will reuse it for buffers later.

---

 src/gallium/drivers/r600/r600_resource.h |    6 +-----
 src/gallium/drivers/r600/r600_texture.c  |   22 +++++++++++-----------
 2 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h
index a53ecb8..4252223 100644
--- a/src/gallium/drivers/r600/r600_resource.h
+++ b/src/gallium/drivers/r600/r600_resource.h
@@ -29,14 +29,10 @@
 /* flag to indicate a resource is to be used as a transfer so should not be tiled */
 #define R600_RESOURCE_FLAG_TRANSFER     PIPE_RESOURCE_FLAG_DRV_PRIV
 
-/* Texture transfer. */
 struct r600_transfer {
-	/* Base class. */
 	struct pipe_transfer		transfer;
-	/* Buffer transfer. */
-	struct pipe_transfer		*buffer_transfer;
+	struct r600_resource		*staging;
 	unsigned			offset;
-	struct pipe_resource		*staging_texture;
 };
 
 struct r600_resource_texture {
diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index 54d7c91..4687f7e 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -43,7 +43,7 @@ static void r600_copy_to_staging_texture(struct pipe_context *ctx, struct r600_t
 	struct pipe_transfer *transfer = (struct pipe_transfer*)rtransfer;
 	struct pipe_resource *texture = transfer->resource;
 
-	ctx->resource_copy_region(ctx, rtransfer->staging_texture,
+	ctx->resource_copy_region(ctx, &rtransfer->staging->b.b.b,
 				0, 0, 0, 0, texture, transfer->level,
 				&transfer->box);
 }
@@ -63,7 +63,7 @@ static void r600_copy_from_staging_texture(struct pipe_context *ctx, struct r600
 	sbox.depth = 1;
 	ctx->resource_copy_region(ctx, texture, transfer->level,
 				  transfer->box.x, transfer->box.y, transfer->box.z,
-				  rtransfer->staging_texture,
+				  &rtransfer->staging->b.b.b,
 				  0, &sbox);
 }
 
@@ -865,8 +865,8 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
 			resource.bind |= PIPE_BIND_SAMPLER_VIEW;
 		}
 		/* Create the temporary texture. */
-		trans->staging_texture = ctx->screen->resource_create(ctx->screen, &resource);
-		if (trans->staging_texture == NULL) {
+		trans->staging = (struct r600_resource*)ctx->screen->resource_create(ctx->screen, &resource);
+		if (trans->staging == NULL) {
 			R600_ERR("failed to create temporary texture to hold untiled copy\n");
 			pipe_resource_reference(&trans->transfer.resource, NULL);
 			FREE(trans);
@@ -874,7 +874,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
 		}
 
 		trans->transfer.stride =
-			((struct r600_resource_texture *)trans->staging_texture)->pitch_in_bytes[0];
+			((struct r600_resource_texture *)trans->staging)->pitch_in_bytes[0];
 		if (usage & PIPE_TRANSFER_READ) {
 			r600_copy_to_staging_texture(ctx, trans);
 			/* Always referenced in the blit. */
@@ -895,11 +895,11 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx,
 	struct pipe_resource *texture = transfer->resource;
 	struct r600_resource_texture *rtex = (struct r600_resource_texture*)texture;
 
-	if (rtransfer->staging_texture) {
+	if (rtransfer->staging) {
 		if (transfer->usage & PIPE_TRANSFER_WRITE) {
 			r600_copy_from_staging_texture(ctx, rtransfer);
 		}
-		pipe_resource_reference(&rtransfer->staging_texture, NULL);
+		pipe_resource_reference((struct pipe_resource**)&rtransfer->staging, NULL);
 	}
 
 	if (rtex->is_depth && !rtex->is_flushing_texture) {
@@ -921,8 +921,8 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
 	unsigned offset = 0;
 	char *map;
 
-	if (rtransfer->staging_texture) {
-		buf = ((struct r600_resource *)rtransfer->staging_texture)->buf;
+	if (rtransfer->staging) {
+		buf = ((struct r600_resource *)rtransfer->staging)->buf;
 	} else {
 		struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource;
 
@@ -950,8 +950,8 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
 	struct r600_context *rctx = (struct r600_context*)ctx;
 	struct pb_buffer *buf;
 
-	if (rtransfer->staging_texture) {
-		buf = ((struct r600_resource *)rtransfer->staging_texture)->buf;
+	if (rtransfer->staging) {
+		buf = ((struct r600_resource *)rtransfer->staging)->buf;
 	} else {
 		struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource;
 




More information about the mesa-commit mailing list