[Mesa-dev] [PATCH 3/3] i965/screen: Allow modifiers on sRGB formats

Jason Ekstrand jason at jlekstrand.net
Wed Aug 29 02:44:54 UTC 2018


On Tue, Aug 28, 2018 at 5:22 PM Jason Ekstrand <jason at jlekstrand.net> wrote:

> This effectively reverts a26693493570a9d0f0fba1be617e01ee7bfff4db which
> was a misguided attempt at protecting intel_query_dma_buf_modifiers from
> invalid formats.  Unfortunately, in some internal EGL cases, we can get
> an SRGB format validly in this function.  Rejecting such formats caused
> us to not allow CCS in some cases where we should have been allowing it.
>
> There's some question of whether or not we really should be using SRGB
> "fourcc" formats that aren't actually in drm_foucc.h but there's not
> much harm in allowing them through here.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107223
> Fixes: a26693493570 "i965/screen: Return false for unsupported..."
> ---
>  src/mesa/drivers/dri/i965/intel_screen.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_screen.c
> b/src/mesa/drivers/dri/i965/intel_screen.c
> index eaf5a3b9feb..ac1938f6204 100644
> --- a/src/mesa/drivers/dri/i965/intel_screen.c
> +++ b/src/mesa/drivers/dri/i965/intel_screen.c
> @@ -1274,9 +1274,9 @@ static bool
>  intel_image_format_is_supported(const struct gen_device_info *devinfo,
>                                  const struct intel_image_format *fmt)
>  {
> -   if (fmt->fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
> -       fmt->fourcc == __DRI_IMAGE_FOURCC_SABGR8888)
> -      return false;
> +   /* Currently, all formats with an intel_image_format are available on
> all
> +    * platforms so there's really nothing to check there.
> +    */
>
>  #ifndef NDEBUG
>     if (fmt->nplanes == 1) {
> @@ -1302,6 +1302,14 @@ intel_query_dma_buf_formats(__DRIscreen *_screen,
> int max,
>     int num_formats = 0, i;
>
>     for (i = 0; i < ARRAY_SIZE(intel_image_formats); i++) {
> +      /* These two formats are valid DRI formats but do not exist in
> +       * drm_fourcc.h in the Linux kernel.  We don't want to accidentally
> +       * advertise them through the EGL layer.
> +       */
> +      if (intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
> +          intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SABGR8888)
> +         return false;
>

This should be a continue.  Fixed locally.


> +
>        if (!intel_image_format_is_supported(&screen->devinfo,
>                                             &intel_image_formats[i]))
>           continue;
> --
> 2.17.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180828/640a8b4a/attachment-0001.html>


More information about the mesa-dev mailing list