r600g,radeonsi: skip busy-checking for DISCARD_RANGE if it has been done already
authorMarek Olšák <marek.olsak@amd.com>
Sat, 1 Feb 2014 13:59:28 +0000 (14:59 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 4 Feb 2014 19:19:16 +0000 (20:19 +0100)
src/gallium/drivers/radeon/r600_buffer_common.c

index 1a9a5dd4332e2ee0244f36065bf50928bfef85dc..5b9282539e92777a39aa83127783014ee3b73b65 100644 (file)
@@ -243,8 +243,12 @@ static void *r600_buffer_transfer_map(struct pipe_context *ctx,
                                data += box->x % R600_MAP_BUFFER_ALIGNMENT;
                                return r600_buffer_get_transfer(ctx, resource, level, usage, box,
                                                                ptransfer, data, staging, offset);
+                       } else {
+                               return NULL; /* error, shouldn't occur though */
                        }
                }
+               /* At this point, the buffer is always idle (we checked it above). */
+               usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
        }
 
        data = r600_buffer_map_sync_with_rings(rctx, rbuffer, usage);