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 <dongwon.kim@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2863>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2863>
This commit is contained in:
Dongwon Kim 2020-01-14 20:01:41 -08:00 committed by Dongwon Kim
parent d3a0d3a80b
commit 9d964da19f
1 changed files with 10 additions and 5 deletions

View File

@ -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;
}