diff options
-rw-r--r-- | src/gallium/state_trackers/dri/dri2.c | 15 |
1 files changed, 10 insertions, 5 deletions
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; } |