From a26693493570a9d0f0fba1be617e01ee7bfff4db Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 6 Jun 2018 10:24:01 -0700 Subject: i965/screen: Return false for unsupported formats in query_modifiers Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Lionel Landwerlin --- src/mesa/drivers/dri/i965/intel_screen.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 2c783591202..5f0eeb41779 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -1262,6 +1262,16 @@ intel_create_image_from_dma_bufs(__DRIscreen *dri_screen, loaderPrivate); } +static bool +intel_image_format_is_supported(const struct intel_image_format *fmt) +{ + if (fmt->fourcc == __DRI_IMAGE_FOURCC_SARGB8888 || + fmt->fourcc == __DRI_IMAGE_FOURCC_SABGR8888) + return false; + + return true; +} + static GLboolean intel_query_dma_buf_formats(__DRIscreen *screen, int max, int *formats, int *count) @@ -1269,8 +1279,7 @@ intel_query_dma_buf_formats(__DRIscreen *screen, int max, int num_formats = 0, i; for (i = 0; i < ARRAY_SIZE(intel_image_formats); i++) { - if (intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SARGB8888 || - intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SABGR8888) + if (!intel_image_format_is_supported(&intel_image_formats[i])) continue; num_formats++; @@ -1300,6 +1309,9 @@ intel_query_dma_buf_modifiers(__DRIscreen *_screen, int fourcc, int max, if (f == NULL) return false; + if (!intel_image_format_is_supported(f)) + return false; + for (i = 0; i < ARRAY_SIZE(supported_modifiers); i++) { uint64_t modifier = supported_modifiers[i].modifier; if (!modifier_is_supported(&screen->devinfo, f, 0, modifier)) -- cgit v1.2.3