summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/vdpau/mixer.c
diff options
context:
space:
mode:
authorChristian König <[email protected]>2011-12-12 16:28:24 +0100
committerChristian König <[email protected]>2011-12-14 14:20:44 +0100
commit9e51c200a78b8be8be195e0d82d69e952afd1343 (patch)
treeee6a5111abdd318965fa2a378055b1fe146e8d36 /src/gallium/state_trackers/vdpau/mixer.c
parent167b1b32c5ff30d514253072ce54513112c03d4d (diff)
st/vdpau: some mixer fixes
Correctly use destination_rect and destination_video_rect in the mixer, and also use a dirty area tracking for output surfaces. Based on work of Maarten Lankhorst <[email protected]> Signed-off-by: Christian König <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/vdpau/mixer.c')
-rw-r--r--src/gallium/state_trackers/vdpau/mixer.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/vdpau/mixer.c b/src/gallium/state_trackers/vdpau/mixer.c
index 5657e7c83b0..1588744ad63 100644
--- a/src/gallium/state_trackers/vdpau/mixer.c
+++ b/src/gallium/state_trackers/vdpau/mixer.c
@@ -152,7 +152,7 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
uint32_t layer_count,
VdpLayer const *layers)
{
- struct pipe_video_rect src_rect;
+ struct pipe_video_rect src_rect, dst_rect, dst_clip;
vlVdpVideoMixer *vmixer;
vlVdpSurface *surf;
@@ -173,7 +173,10 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
vl_compositor_clear_layers(&vmixer->compositor);
vl_compositor_set_buffer_layer(&vmixer->compositor, 0, surf->video_buffer,
RectToPipe(video_source_rect, &src_rect), NULL);
- vl_compositor_render(&vmixer->compositor, dst->surface, NULL, NULL, NULL);
+ vl_compositor_render(&vmixer->compositor, dst->surface,
+ RectToPipe(destination_video_rect, &dst_rect),
+ RectToPipe(destination_rect, &dst_clip),
+ &dst->dirty_area);
return VDP_STATUS_OK;
}