Mesa (master): st/dri: Don't expose sRGB formats to clients

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Aug 31 17:56:24 UTC 2018


Module: Mesa
Branch: master
Commit: 01c0aa9f058673071f908ed775a76b4415464b5c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=01c0aa9f058673071f908ed775a76b4415464b5c

Author: Daniel Stone <daniels at collabora.com>
Date:   Fri Aug 31 17:34:03 2018 +0100

st/dri: Don't expose sRGB formats to clients

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 <daniels at collabora.com>
Reported-by: Michel Dänzer <michel.daenzer at amd.com>
Fixes: 8c1b9882b2e0 ("egl/dri2: Guard against invalid fourcc formats")
Acked-by: Jason Ekstrand <jason.ekstrand at intel.com>

---

 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 2ac32205d9..c8a484e392 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]),




More information about the mesa-commit mailing list