gallium/radeon: reference pipe_resource in pipe_transfer
for threaded gallium Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
03127bb6d5
commit
04e6977e5d
|
@ -288,7 +288,8 @@ static void *r600_buffer_get_transfer(struct pipe_context *ctx,
|
|||
struct r600_common_context *rctx = (struct r600_common_context*)ctx;
|
||||
struct r600_transfer *transfer = slab_alloc(&rctx->pool_transfers);
|
||||
|
||||
transfer->transfer.resource = resource;
|
||||
transfer->transfer.resource = NULL;
|
||||
pipe_resource_reference(&transfer->transfer.resource, resource);
|
||||
transfer->transfer.level = 0;
|
||||
transfer->transfer.usage = usage;
|
||||
transfer->transfer.box = *box;
|
||||
|
@ -475,6 +476,7 @@ static void r600_buffer_transfer_unmap(struct pipe_context *ctx,
|
|||
if (rtransfer->staging)
|
||||
r600_resource_reference(&rtransfer->staging, NULL);
|
||||
|
||||
pipe_resource_reference(&transfer->resource, NULL);
|
||||
slab_free(&rctx->pool_transfers, transfer);
|
||||
}
|
||||
|
||||
|
|
|
@ -1490,7 +1490,7 @@ static void *r600_texture_transfer_map(struct pipe_context *ctx,
|
|||
trans = CALLOC_STRUCT(r600_transfer);
|
||||
if (!trans)
|
||||
return NULL;
|
||||
trans->transfer.resource = texture;
|
||||
pipe_resource_reference(&trans->transfer.resource, texture);
|
||||
trans->transfer.level = level;
|
||||
trans->transfer.usage = usage;
|
||||
trans->transfer.box = *box;
|
||||
|
@ -1643,6 +1643,7 @@ static void r600_texture_transfer_unmap(struct pipe_context *ctx,
|
|||
rctx->num_alloc_tex_transfer_bytes = 0;
|
||||
}
|
||||
|
||||
pipe_resource_reference(&transfer->resource, NULL);
|
||||
FREE(transfer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue