From 5d5b414a7b840a4a90050041fabd88a9af6dca43 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20K=C3=B6nig?= Date: Mon, 5 Mar 2012 16:43:15 +0100 Subject: [PATCH] st/vdpau: fix chroma_format handling in VideoSurfaceQueryGetPutBitsYCbCrCapabilities MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- src/gallium/state_trackers/vdpau/query.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/gallium/state_trackers/vdpau/query.c b/src/gallium/state_trackers/vdpau/query.c index 9d40834..2b13ce1 100644 --- a/src/gallium/state_trackers/vdpau/query.c +++ b/src/gallium/state_trackers/vdpau/query.c @@ -87,9 +87,6 @@ vlVdpVideoSurfaceQueryCapabilities(VdpDevice device, VdpChromaType surface_chrom /* XXX: Current limits */ *is_supported = true; - if (surface_chroma_type != VDP_CHROMA_TYPE_420) - *is_supported = false; - max_2d_texture_level = pscreen->get_param(pscreen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS); pipe_mutex_unlock(dev->mutex); if (!max_2d_texture_level) @@ -124,7 +121,24 @@ vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(VdpDevice device, VdpChromaTyp return VDP_STATUS_RESOURCES; pipe_mutex_lock(dev->mutex); - *is_supported = pscreen->is_video_format_supported + + switch(bits_ycbcr_format) { + case VDP_YCBCR_FORMAT_UYVY: + case VDP_YCBCR_FORMAT_YUYV: + *is_supported = surface_chroma_type == VDP_CHROMA_TYPE_422; + break; + + case VDP_YCBCR_FORMAT_Y8U8V8A8: + case VDP_YCBCR_FORMAT_V8U8Y8A8: + *is_supported = surface_chroma_type == VDP_CHROMA_TYPE_444; + break; + + default: + *is_supported = true; + break; + } + + *is_supported &= pscreen->is_video_format_supported ( pscreen, FormatYCBCRToPipe(bits_ycbcr_format), -- 2.7.4