From fa4d4d97f3c968f3c8dce728c12f9e8597c93530 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tapani=20P=C3=A4lli?= Date: Mon, 19 Mar 2018 13:41:44 +0200 Subject: [PATCH] dri: Add __DRI_IMAGE_FORMAT_SABGR8 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Add format definition and required plumbing to create images. Note that there is no match to drm_fourcc definition, just like with existing _DRI_IMAGE_FOURCC_SARGB8888. Signed-off-by: Tapani Pälli Reviewed-by: Marek Olšák Reviewed-by: Kenneth Graunke --- include/GL/internal/dri_interface.h | 2 ++ src/loader/loader_dri3_helper.c | 2 ++ src/mesa/drivers/dri/common/dri_util.c | 4 ++++ src/mesa/drivers/dri/common/utils.c | 1 + 4 files changed, 9 insertions(+) diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 4f4795c7ae3..319a1fe4f90 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1253,6 +1253,7 @@ struct __DRIdri2ExtensionRec { #define __DRI_IMAGE_FORMAT_YUYV 0x100f #define __DRI_IMAGE_FORMAT_XBGR2101010 0x1010 #define __DRI_IMAGE_FORMAT_ABGR2101010 0x1011 +#define __DRI_IMAGE_FORMAT_SABGR8 0x1012 #define __DRI_IMAGE_USE_SHARE 0x0001 #define __DRI_IMAGE_USE_SCANOUT 0x0002 @@ -1289,6 +1290,7 @@ struct __DRIdri2ExtensionRec { #define __DRI_IMAGE_FOURCC_ABGR8888 0x34324241 #define __DRI_IMAGE_FOURCC_XBGR8888 0x34324258 #define __DRI_IMAGE_FOURCC_SARGB8888 0x83324258 +#define __DRI_IMAGE_FOURCC_SABGR8888 0x84324258 #define __DRI_IMAGE_FOURCC_ARGB2101010 0x30335241 #define __DRI_IMAGE_FOURCC_XRGB2101010 0x30335258 #define __DRI_IMAGE_FOURCC_ABGR2101010 0x30334241 diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c index fe17df14738..23729f7ecb2 100644 --- a/src/loader/loader_dri3_helper.c +++ b/src/loader/loader_dri3_helper.c @@ -1022,6 +1022,7 @@ dri3_cpp_for_format(uint32_t format) { case __DRI_IMAGE_FORMAT_XBGR2101010: case __DRI_IMAGE_FORMAT_ABGR2101010: case __DRI_IMAGE_FORMAT_SARGB8: + case __DRI_IMAGE_FORMAT_SABGR8: return 4; case __DRI_IMAGE_FORMAT_NONE: default: @@ -1041,6 +1042,7 @@ image_format_to_fourcc(int format) /* Convert from __DRI_IMAGE_FORMAT to __DRI_IMAGE_FOURCC (sigh) */ switch (format) { case __DRI_IMAGE_FORMAT_SARGB8: return __DRI_IMAGE_FOURCC_SARGB8888; + case __DRI_IMAGE_FORMAT_SABGR8: return __DRI_IMAGE_FOURCC_SABGR8888; case __DRI_IMAGE_FORMAT_RGB565: return __DRI_IMAGE_FOURCC_RGB565; case __DRI_IMAGE_FORMAT_XRGB8888: return __DRI_IMAGE_FOURCC_XRGB8888; case __DRI_IMAGE_FORMAT_ARGB8888: return __DRI_IMAGE_FOURCC_ARGB8888; diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index 0b94d19fa5d..7cb6248b130 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -900,6 +900,8 @@ driGLFormatToImageFormat(mesa_format format) return __DRI_IMAGE_FORMAT_GR88; case MESA_FORMAT_NONE: return __DRI_IMAGE_FORMAT_NONE; + case MESA_FORMAT_R8G8B8A8_SRGB: + return __DRI_IMAGE_FORMAT_SABGR8; case MESA_FORMAT_B8G8R8A8_SRGB: return __DRI_IMAGE_FORMAT_SARGB8; default: @@ -937,6 +939,8 @@ driImageFormatToGLFormat(uint32_t image_format) return MESA_FORMAT_R16G16_UNORM; case __DRI_IMAGE_FORMAT_SARGB8: return MESA_FORMAT_B8G8R8A8_SRGB; + case __DRI_IMAGE_FORMAT_SABGR8: + return MESA_FORMAT_R8G8B8A8_SRGB; case __DRI_IMAGE_FORMAT_NONE: return MESA_FORMAT_NONE; default: diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 1cffd3ad08e..fc5e2d19f34 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -208,6 +208,7 @@ driCreateConfigs(mesa_format format, masks = masks_table[2]; break; case MESA_FORMAT_R8G8B8A8_UNORM: + case MESA_FORMAT_R8G8B8A8_SRGB: masks = masks_table[5]; break; case MESA_FORMAT_R8G8B8X8_UNORM: -- 2.30.2