From: Christian König Date: Mon, 5 Mar 2012 15:43:15 +0000 (+0100) Subject: st/vdpau: fix chroma_format handling in VideoSurfaceQueryGetPutBitsYCbCrCapabilities X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5d5b414a7b840a4a90050041fabd88a9af6dca43;p=mesa.git st/vdpau: fix chroma_format handling in VideoSurfaceQueryGetPutBitsYCbCrCapabilities Signed-off-by: Christian König --- diff --git a/src/gallium/state_trackers/vdpau/query.c b/src/gallium/state_trackers/vdpau/query.c index 9d4083409a3..2b13ce15487 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),