From 01c0aa9f058673071f908ed775a76b4415464b5c Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 31 Aug 2018 17:34:03 +0100 Subject: [PATCH] st/dri: Don't expose sRGB formats to clients MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Though the SARGB8888 format is used internally through its FourCC value, it is not a real format as defined by drm_fourcc.h; it cannot be used with KMS or other interfaces expecting drm_fourcc.h format codes. Ensure we don't advertise it through the dmabuf format/modifier query interfaces, preventing us from tripping over an assert. Signed-off-by: Daniel Stone Reported-by: Michel Dänzer Fixes: 8c1b9882b2e0 ("egl/dri2: Guard against invalid fourcc formats") Acked-by: Jason Ekstrand --- src/gallium/state_trackers/dri/dri2.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index 2ac32205d9a..c8a484e3926 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -1485,6 +1485,12 @@ dri2_query_dma_buf_formats(__DRIscreen *_screen, int max, int *formats, for (i = 0, j = 0; (i < ARRAY_SIZE(fourcc_formats)) && (j < max || max == 0); i++) { + /* The sRGB format is not a real FourCC as defined by drm_fourcc.h, so we + * must not leak it out to clients. + */ + if (fourcc_formats[i] == __DRI_IMAGE_FOURCC_SARGB8888) + continue; + if (pscreen->is_format_supported(pscreen, fourcc_to_pipe_format( fourcc_formats[i]), -- 2.30.2