summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/state_trackers/dri/dri2.c15
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;
}