From: Dongwon Kim Date: Wed, 15 Jan 2020 04:01:41 +0000 (-0800) Subject: gallium: check all planes' pipe formats in case of multi-samplers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d964da19fb596dad68c9402c115d6c5784989ee;p=mesa.git gallium: check all planes' pipe formats in case of multi-samplers Current code only checks whether first plane's format is supported in case YUV format sampling is done by sampling each plane separately. It would be safer to check other planes' as well. Signed-off-by: Dongwon Kim Reviewed-by: Marek Olšák Reviewed-by: Daniel Stone Tested-by: Marge Bot Part-of: --- diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index e6f0e40465a..82c57b78d99 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -751,14 +751,19 @@ dri2_create_image_from_winsys(__DRIscreen *_screen, /* YUV format sampling can be emulated by the Mesa state tracker by * using multiple samplers of varying formats. * If no tex_usage is set and we detect a YUV format, - * test for support of the first plane's sampler format and + * test for support of all planes' sampler formats and * add sampler view usage. */ use_lowered = true; - if (pscreen->is_format_supported(pscreen, - dri2_get_pipe_format_for_dri_format(map->planes[0].dri_format), - screen->target, 0, 0, - PIPE_BIND_SAMPLER_VIEW)) + for (i = 0; i < map->nplanes; i++) { + if (!pscreen->is_format_supported(pscreen, + dri2_get_pipe_format_for_dri_format(map->planes[i].dri_format), + screen->target, 0, 0, + PIPE_BIND_SAMPLER_VIEW)) + break; + } + + if (i == map->nplanes) tex_usage |= PIPE_BIND_SAMPLER_VIEW; }