summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorThomas Hellstrom <[email protected]>2017-02-22 21:42:01 +0100
committerThomas Hellstrom <[email protected]>2017-02-22 21:50:15 +0100
commitbda59f6e417b68985ffc8dbb92fcfe19ba12f7bf (patch)
tree2125406bac010020c97060529d6f561297413ef3 /src/gallium/state_trackers
parentb8861911c5c1556d27d5e9bcabfd667c894222d8 (diff)
Revert "st/vdpau: Fix multithreading"
This reverts commit f1e5dfbe3c8951a6c8acf41bf5e6c2d090098b2c. For a detailed discussion see https://lists.freedesktop.org/archives/mesa-dev/2017-February/145283.html Acked-by: Christian König <[email protected]> Signed-off-by: Thomas Hellstrom <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/vdpau/decode.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c
index 2a07d17ba10..f85bce823bb 100644
--- a/src/gallium/state_trackers/vdpau/decode.c
+++ b/src/gallium/state_trackers/vdpau/decode.c
@@ -68,6 +68,7 @@ vlVdpDecoderCreate(VdpDevice device,
if (!dev)
return VDP_STATUS_INVALID_HANDLE;
+ pipe = dev->context;
screen = dev->vscreen->pscreen;
pipe_mutex_lock(dev->mutex);
@@ -122,12 +123,6 @@ vlVdpDecoderCreate(VdpDevice device,
templat.level = u_get_h264_level(templat.width, templat.height,
&templat.max_references);
- pipe = screen->context_create(screen, dev->vscreen, 0);
- if (!pipe) {
- ret = VDP_STATUS_RESOURCES;
- goto error_context;
- }
-
vldecoder->decoder = pipe->create_video_codec(pipe, &templat);
if (!vldecoder->decoder) {
@@ -150,8 +145,6 @@ error_handle:
vldecoder->decoder->destroy(vldecoder->decoder);
error_decoder:
- pipe->destroy(pipe);
-error_context:
pipe_mutex_unlock(dev->mutex);
DeviceReference(&vldecoder->device, NULL);
FREE(vldecoder);
@@ -165,18 +158,15 @@ VdpStatus
vlVdpDecoderDestroy(VdpDecoder decoder)
{
vlVdpDecoder *vldecoder;
- struct pipe_context *pipe;
vldecoder = (vlVdpDecoder *)vlGetDataHTAB(decoder);
if (!vldecoder)
return VDP_STATUS_INVALID_HANDLE;
- pipe = vldecoder->decoder->context;
pipe_mutex_lock(vldecoder->mutex);
vldecoder->decoder->destroy(vldecoder->decoder);
pipe_mutex_unlock(vldecoder->mutex);
pipe_mutex_destroy(vldecoder->mutex);
- pipe->destroy(pipe);
vlRemoveDataHTAB(decoder);
DeviceReference(&vldecoder->device, NULL);
@@ -684,20 +674,10 @@ vlVdpDecoderRender(VdpDecoder decoder,
if (ret != VDP_STATUS_OK)
return ret;
- /*
- * Since we use separate contexts for the two mutex domains, we need
- * to flush to make sure rendering operations happen in order.
- * In particular, so that a frame is rendered before it is presented.
- */
- pipe_mutex_lock(vldecoder->device->mutex);
- vldecoder->device->context->flush(vldecoder->device->context, NULL, 0);
- pipe_mutex_unlock(vldecoder->device->mutex);
-
pipe_mutex_lock(vldecoder->mutex);
dec->begin_frame(dec, vlsurf->video_buffer, &desc.base);
dec->decode_bitstream(dec, vlsurf->video_buffer, &desc.base, bitstream_buffer_count, buffers, sizes);
dec->end_frame(dec, vlsurf->video_buffer, &desc.base);
- dec->flush(dec);
pipe_mutex_unlock(vldecoder->mutex);
return ret;
}