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

Author: Marek Olšák <[email protected]>
Date:   Thu May 12 13:26:24 2016 +0200

gallium/radeon: small cleanups in r600_texture_transfer_map

Reviewed-by: Nicolai Hähnle <[email protected]>

---

 src/gallium/drivers/radeon/r600_texture.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_texture.c 
b/src/gallium/drivers/radeon/r600_texture.c
index a00dedc..e2955aa 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -1237,6 +1237,8 @@ static void *r600_texture_transfer_map(struct 
pipe_context *ctx,
        unsigned offset = 0;
        char *map;
 
+       assert(!(texture->flags & R600_RESOURCE_FLAG_TRANSFER));
+
        /* We cannot map a tiled texture directly because the data is
         * in a different order, therefore we do detiling using a blit.
         *
@@ -1257,10 +1259,6 @@ static void *r600_texture_transfer_map(struct 
pipe_context *ctx,
                use_staging_texture = TRUE;
        }
 
-       if (texture->flags & R600_RESOURCE_FLAG_TRANSFER) {
-               use_staging_texture = FALSE;
-       }
-
        trans = CALLOC_STRUCT(r600_transfer);
        if (!trans)
                return NULL;
@@ -1327,6 +1325,7 @@ static void *r600_texture_transfer_map(struct 
pipe_context *ctx,
                trans->transfer.stride = 
staging_depth->surface.level[level].pitch_bytes;
                trans->transfer.layer_stride = 
staging_depth->surface.level[level].slice_size;
                trans->staging = (struct r600_resource*)staging_depth;
+               buf = trans->staging;
        } else if (use_staging_texture) {
                struct pipe_resource resource;
                struct r600_texture *staging;
@@ -1346,21 +1345,18 @@ static void *r600_texture_transfer_map(struct 
pipe_context *ctx,
                trans->staging = &staging->resource;
                trans->transfer.stride = staging->surface.level[0].pitch_bytes;
                trans->transfer.layer_stride = 
staging->surface.level[0].slice_size;
-               if (usage & PIPE_TRANSFER_READ) {
+
+               if (usage & PIPE_TRANSFER_READ)
                        r600_copy_to_staging_texture(ctx, trans);
-               }
+               else
+                       usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
+
+               buf = trans->staging;
        } else {
                /* the resource is mapped directly */
                trans->transfer.stride = rtex->surface.level[level].pitch_bytes;
                trans->transfer.layer_stride = 
rtex->surface.level[level].slice_size;
                offset = r600_texture_get_offset(rtex, level, box);
-       }
-
-       if (trans->staging) {
-               buf = trans->staging;
-               if (!rtex->is_depth && !(usage & PIPE_TRANSFER_READ))
-                       usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
-       } else {
                buf = &rtex->resource;
        }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to