---
 src/gallium/drivers/r600/r600_texture.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_texture.c 
b/src/gallium/drivers/r600/r600_texture.c
index 5ad8c65..36cca17 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -865,24 +865,24 @@ static void *r600_texture_transfer_map(struct 
pipe_context *ctx,
                         *
                         * Only the region being mapped is transfered.
                         */
-                       struct pipe_resource *temp;
                        struct pipe_resource resource;
 
                        r600_init_temp_resource_from_box(&resource, texture, 
box, level, 0);
-                       temp = ctx->screen->resource_create(ctx->screen, 
&resource);
 
-                       r600_copy_region_with_blit(ctx, temp, 0, 0, 0, 0, 
texture, level, box);
-
-                       if (!r600_init_flushed_depth_texture(ctx, temp, 
&staging_depth)) {
+                       if (!r600_init_flushed_depth_texture(ctx, &resource, 
&staging_depth)) {
                                R600_ERR("failed to create temporary texture to 
hold untiled copy\n");
                                FREE(trans);
                                return NULL;
                        }
 
-                       r600_blit_decompress_depth(ctx, (struct 
r600_texture*)temp, staging_depth,
-                                                  0, 0, 0, box->depth, 0, 0);
+                       if (usage & PIPE_TRANSFER_READ) {
+                               struct pipe_resource *temp = 
ctx->screen->resource_create(ctx->screen, &resource);
 
-                       pipe_resource_reference((struct pipe_resource**)&temp, 
NULL);
+                               r600_copy_region_with_blit(ctx, temp, 0, 0, 0, 
0, texture, level, box);
+                               r600_blit_decompress_depth(ctx, (struct 
r600_texture*)temp, staging_depth,
+                                                          0, 0, 0, box->depth, 
0, 0);
+                               pipe_resource_reference((struct 
pipe_resource**)&temp, NULL);
+                       }
                }
                else {
                        /* XXX: only readback the rectangle which is being 
mapped? */
-- 
1.8.1.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to