|
|
|
|
|
|
|
|
struct pipe_transfer *transfer) |
|
|
struct pipe_transfer *transfer) |
|
|
{ |
|
|
{ |
|
|
struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource); |
|
|
struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource); |
|
|
int write = 0; |
|
|
|
|
|
uint8_t *data; |
|
|
uint8_t *data; |
|
|
|
|
|
|
|
|
if (rbuffer->r.b.user_ptr) |
|
|
if (rbuffer->r.b.user_ptr) |
|
|
return (uint8_t*)rbuffer->r.b.user_ptr + transfer->box.x; |
|
|
return (uint8_t*)rbuffer->r.b.user_ptr + transfer->box.x; |
|
|
|
|
|
|
|
|
if (transfer->usage & PIPE_TRANSFER_WRITE) { |
|
|
|
|
|
write = 1; |
|
|
|
|
|
} |
|
|
|
|
|
data = r600_bo_map((struct radeon*)pipe->winsys, rbuffer->r.bo, transfer->usage, pipe); |
|
|
data = r600_bo_map((struct radeon*)pipe->winsys, rbuffer->r.bo, transfer->usage, pipe); |
|
|
if (!data) |
|
|
if (!data) |
|
|
return NULL; |
|
|
return NULL; |