Mesa (master): vdpau: Add background surface support

Christian König deathsimple at kemper.freedesktop.org
Mon Dec 19 12:52:37 UTC 2011


Module: Mesa
Branch: master
Commit: d6942f781f9cf741e7013f01c2af31f0a5867cc9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d6942f781f9cf741e7013f01c2af31f0a5867cc9

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Mon Dec 19 10:16:06 2011 +0100

vdpau: Add background surface support

Sets rgba layer as zeroth layer if a custom background_surface is specified.

Signed-off-by: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Signed-off-by: Christian König <deathsimple at vodafone.de>

---

 src/gallium/state_trackers/vdpau/mixer.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/vdpau/mixer.c b/src/gallium/state_trackers/vdpau/mixer.c
index b0d48f0..898c50e 100644
--- a/src/gallium/state_trackers/vdpau/mixer.c
+++ b/src/gallium/state_trackers/vdpau/mixer.c
@@ -196,6 +196,7 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
                                 VdpLayer const *layers)
 {
    struct pipe_video_rect src_rect, dst_rect, dst_clip;
+   unsigned layer = 0;
 
    vlVdpVideoMixer *vmixer;
    vlVdpSurface *surf;
@@ -224,8 +225,16 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
    if (!dst)
       return VDP_STATUS_INVALID_HANDLE;
 
+   if (background_surface != VDP_INVALID_HANDLE) {
+      vlVdpOutputSurface *bg = vlGetDataHTAB(background_surface);
+      if (!bg)
+         return VDP_STATUS_INVALID_HANDLE;
+      vl_compositor_set_rgba_layer(&vmixer->compositor, layer++, bg->sampler_view,
+                                   RectToPipe(background_source_rect, &src_rect), NULL);
+   }
+
    vl_compositor_clear_layers(&vmixer->compositor);
-   vl_compositor_set_buffer_layer(&vmixer->compositor, 0, surf->video_buffer,
+   vl_compositor_set_buffer_layer(&vmixer->compositor, layer++, surf->video_buffer,
                                   RectToPipe(video_source_rect, &src_rect), NULL);
    vl_compositor_render(&vmixer->compositor, dst->surface,
                         RectToPipe(destination_video_rect, &dst_rect),




More information about the mesa-commit mailing list