From b63b1190f08293def93f8138ef91030e7170da26 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 5 Jun 2018 11:42:37 -0700 Subject: [PATCH] i965/screen: Use RGBA non-sRGB formats for images Not all of the MESA_FORMAT and ISL_FORMAT helpers we use can properly handle RGBX formats. Also, we don't want to make decisions based on those in the first place because we can't render to RGBA and we use the non-sRGB version to determine whether or not to allow CCS_E. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106642 Cc: mesa-stable@lists.freedesktop.org --- src/mesa/drivers/dri/i965/intel_screen.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 2c783591202..bc9be977da7 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -341,6 +341,10 @@ modifier_is_supported(const struct gen_device_info *devinfo, } mesa_format format = driImageFormatToGLFormat(dri_format); + /* Whether or not we support compression is based on the RGBA non-sRGB + * version of the format. + */ + format = _mesa_format_fallback_rgbx_to_rgba(format); format = _mesa_get_srgb_format_linear(format); if (!isl_format_supports_ccs_e(devinfo, brw_isl_format_for_mesa_format(format))) @@ -1095,6 +1099,11 @@ intel_create_image_from_fds_common(__DRIscreen *dri_screen, image->strides[index] = strides[index]; mesa_format format = driImageFormatToGLFormat(f->planes[i].dri_format); + /* The images we will create are actually based on the RGBA non-sRGB + * version of the format. + */ + format = _mesa_format_fallback_rgbx_to_rgba(format); + format = _mesa_get_srgb_format_linear(format); ok = isl_surf_init(&screen->isl_dev, &surf, .dim = ISL_SURF_DIM_2D, -- 2.17.1