[Mesa-dev] [PATCH 2/2] st/dri: replace format conversion functions with single mapping table

Lucas Stach l.stach at pengutronix.de
Thu Jun 7 08:59:31 UTC 2018


Hi Marek,

thanks for the review.

Am Samstag, den 26.05.2018, 00:36 -0400 schrieb Marek Olšák:
[...]
> 
> > @@ -983,7 +760,7 @@ dri2_update_tex_buffer(struct dri_drawable *drawable,
> > 
> >  static __DRIimage *
> >  dri2_create_image_from_winsys(__DRIscreen *_screen,
> > -                              int width, int height, int format,
> > +                              int width, int height, enum pipe_format pf,
> >                                int num_handles, struct winsys_handle *whandle,
> >                                void *loaderPrivate)
> >  {
> > @@ -992,13 +769,8 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
> >     __DRIimage *img;
> >     struct pipe_resource templ;
> >     unsigned tex_usage = 0;
> > -   enum pipe_format pf;
> >     int i;
> > 
> > -   pf = dri2_format_to_pipe_format (format);
> > -   if (pf == PIPE_FORMAT_NONE)
> > -      return NULL;
> > -
> >     if (pscreen->is_format_supported(pscreen, pf, screen->target, 0,
> >                                      PIPE_BIND_RENDER_TARGET))
> >        tex_usage |= PIPE_BIND_RENDER_TARGET;
> > @@ -1006,6 +778,20 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
> >                                      PIPE_BIND_SAMPLER_VIEW))
> >        tex_usage |= PIPE_BIND_SAMPLER_VIEW;
> > 
> > +   if (!tex_usage && util_format_is_yuv(pf)) {
> > +      /* YUV format sampling can be emulated by the Mesa state tracker by
> > +       * using multiple R8/RG88 samplers. So try to rewrite the pipe format.
> > +       */
> > +      pf = PIPE_FORMAT_R8_UNORM;
> > +
> > +      if (pscreen->is_format_supported(pscreen, pf, screen->target, 0,
> > +                                       PIPE_BIND_SAMPLER_VIEW))
> > +         tex_usage |= PIPE_BIND_SAMPLER_VIEW;
> > +   }
> 
> This doesn't seem to belong in this commit.

It does. The removed conversion functions would end up with
PIPE_FORMAT_R8_UNORM for I420 or NV12 input FOURCCs, with the implicit
assumption that all drivers need the emulation by the Mesa state-
tracker.

The new format table maps those to the proper PIPE_FORMAT_IYUV and
PIPE_FORMAT_NV12, so in order to not break drivers which can't handle
those formats natively and need the Mesa side emulation we need this
hunk of code.

> Other than that, the series is:
> 
> > Reviewed-by: Marek Olšák <marek.olsak at amd.com>

With the above explanation, can I keep your review for the whole patch?

Regards,
Lucas


More information about the mesa-dev mailing list