summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/vdpau/surface.c
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2012-06-09 15:33:28 +0200
committerChristian König <deathsimple@vodafone.de>2012-06-20 10:13:29 +0200
commitd37c3c6ebecfe404d2341b897ac9b81adce5f4d7 (patch)
tree0312ba684fe1230e0a6f7bc88b52f332b38aeb57 /src/gallium/state_trackers/vdpau/surface.c
parent2f8351a5ac7bb04482eebaa73d967f7527df4d18 (diff)
st/vdpau: clear Cb&Cr with 0.5f
That makes the output black in case of decoding errors. Signed-off-by: Christian König <deathsimple@vodafone.de>
Diffstat (limited to 'src/gallium/state_trackers/vdpau/surface.c')
-rw-r--r--src/gallium/state_trackers/vdpau/surface.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/vdpau/surface.c b/src/gallium/state_trackers/vdpau/surface.c
index fde2336ca11..cc866a6ca0d 100644
--- a/src/gallium/state_trackers/vdpau/surface.c
+++ b/src/gallium/state_trackers/vdpau/surface.c
@@ -355,12 +355,15 @@ vlVdpVideoSurfaceClear(vlVdpSurface *vlsurf)
surfaces = vlsurf->video_buffer->get_surfaces(vlsurf->video_buffer);
for (i = 0; i < VL_MAX_SURFACES; ++i) {
- union pipe_color_union black = {};
+ union pipe_color_union c = {};
if (!surfaces[i])
continue;
- pipe->clear_render_target(pipe, surfaces[i], &black, 0, 0,
+ if (i > !!vlsurf->templat.interlaced)
+ c.f[0] = c.f[1] = c.f[2] = c.f[3] = 0.5f;
+
+ pipe->clear_render_target(pipe, surfaces[i], &c, 0, 0,
surfaces[i]->width, surfaces[i]->height);
}
pipe->flush(pipe, NULL);