diff options
author | Marek Olšák <[email protected]> | 2012-10-08 04:06:42 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-10-11 21:12:16 +0200 |
commit | 369e46888904c6d379b8b477d9242cff1608e30e (patch) | |
tree | 528b10f900f23af3acd22a0edcf50fde0eeee86e /src/gallium/state_trackers/vdpau | |
parent | ec4c74a9dc10039d97ad24c4f16bd2400517991d (diff) |
gallium: unify transfer functions
"get_transfer + transfer_map" becomes "transfer_map".
"transfer_unmap + transfer_destroy" becomes "transfer_unmap".
transfer_map must create and return the transfer object and transfer_unmap
must destroy it.
transfer_map is successful if the returned buffer pointer is not NULL.
If transfer_map fails, the pointer to the transfer object remains unchanged
(i.e. doesn't have to be NULL).
Acked-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/vdpau')
-rw-r--r-- | src/gallium/state_trackers/vdpau/output.c | 12 | ||||
-rw-r--r-- | src/gallium/state_trackers/vdpau/surface.c | 13 |
2 files changed, 5 insertions, 20 deletions
diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c index 5b25e63d28e..dd3c1a834bb 100644 --- a/src/gallium/state_trackers/vdpau/output.c +++ b/src/gallium/state_trackers/vdpau/output.c @@ -207,15 +207,8 @@ vlVdpOutputSurfaceGetBitsNative(VdpOutputSurface surface, res = vlsurface->sampler_view->texture; box = RectToPipeBox(source_rect, res); - transfer = pipe->get_transfer(pipe, res, 0, PIPE_TRANSFER_READ, &box); - if (transfer == NULL) { - pipe_mutex_unlock(vlsurface->device->mutex); - return VDP_STATUS_RESOURCES; - } - - map = pipe_transfer_map(pipe, transfer); - if (map == NULL) { - pipe_transfer_destroy(pipe, transfer); + map = pipe->transfer_map(pipe, res, 0, PIPE_TRANSFER_READ, &box, &transfer); + if (!map) { pipe_mutex_unlock(vlsurface->device->mutex); return VDP_STATUS_RESOURCES; } @@ -224,7 +217,6 @@ vlVdpOutputSurfaceGetBitsNative(VdpOutputSurface surface, box.width, box.height, map, transfer->stride, 0, 0); pipe_transfer_unmap(pipe, transfer); - pipe_transfer_destroy(pipe, transfer); pipe_mutex_unlock(vlsurface->device->mutex); return VDP_STATUS_OK; diff --git a/src/gallium/state_trackers/vdpau/surface.c b/src/gallium/state_trackers/vdpau/surface.c index cc866a6ca0d..bcc33c0f9b0 100644 --- a/src/gallium/state_trackers/vdpau/surface.c +++ b/src/gallium/state_trackers/vdpau/surface.c @@ -236,15 +236,9 @@ vlVdpVideoSurfaceGetBitsYCbCr(VdpVideoSurface surface, struct pipe_transfer *transfer; uint8_t *map; - transfer = pipe->get_transfer(pipe, sv->texture, 0, PIPE_TRANSFER_READ, &box); - if (transfer == NULL) { - pipe_mutex_unlock(vlsurface->device->mutex); - return VDP_STATUS_RESOURCES; - } - - map = pipe_transfer_map(pipe, transfer); - if (map == NULL) { - pipe_transfer_destroy(pipe, transfer); + map = pipe->transfer_map(pipe, sv->texture, 0, + PIPE_TRANSFER_READ, &box, &transfer); + if (!map) { pipe_mutex_unlock(vlsurface->device->mutex); return VDP_STATUS_RESOURCES; } @@ -254,7 +248,6 @@ vlVdpVideoSurfaceGetBitsYCbCr(VdpVideoSurface surface, box.width, box.height, map, transfer->stride, 0, 0); pipe_transfer_unmap(pipe, transfer); - pipe_transfer_destroy(pipe, transfer); } } pipe_mutex_unlock(vlsurface->device->mutex); |