[Mesa-dev] [PATCH 3/3] st/vdpau: fix background handling in the mixer
Christian König
deathsimple at vodafone.de
Tue Apr 30 09:34:34 PDT 2013
From: Christian König <christian.koenig at amd.com>
Signed-off-by: Christian König <christian.koenig at amd.com>
---
src/gallium/state_trackers/vdpau/mixer.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/gallium/state_trackers/vdpau/mixer.c b/src/gallium/state_trackers/vdpau/mixer.c
index 1d2ae49..26db5c8 100644
--- a/src/gallium/state_trackers/vdpau/mixer.c
+++ b/src/gallium/state_trackers/vdpau/mixer.c
@@ -221,7 +221,7 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
vlVdpVideoMixer *vmixer;
vlVdpSurface *surf;
- vlVdpOutputSurface *dst;
+ vlVdpOutputSurface *dst, *bg = NULL;
struct vl_compositor *compositor;
@@ -250,20 +250,21 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
if (!dst)
return VDP_STATUS_INVALID_HANDLE;
- pipe_mutex_lock(vmixer->device->mutex);
- vlVdpResolveDelayedRendering(vmixer->device, NULL, NULL);
if (background_surface != VDP_INVALID_HANDLE) {
- vlVdpOutputSurface *bg = vlGetDataHTAB(background_surface);
- if (!bg) {
- pipe_mutex_unlock(vmixer->device->mutex);
+ bg = vlGetDataHTAB(background_surface);
+ if (!bg)
return VDP_STATUS_INVALID_HANDLE;
- }
- vl_compositor_set_rgba_layer(&vmixer->cstate, compositor, layer++, bg->sampler_view,
- RectToPipe(background_source_rect, &rect), NULL, NULL);
}
+ pipe_mutex_lock(vmixer->device->mutex);
+ vlVdpResolveDelayedRendering(vmixer->device, NULL, NULL);
+
vl_compositor_clear_layers(&vmixer->cstate);
+ if (bg)
+ vl_compositor_set_rgba_layer(&vmixer->cstate, compositor, layer++, bg->sampler_view,
+ RectToPipe(background_source_rect, &rect), NULL, NULL);
+
switch (current_picture_structure) {
case VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD:
deinterlace = VL_COMPOSITOR_BOB_TOP;
--
1.7.9.5
More information about the mesa-dev
mailing list