[Mesa-dev] [PATCH 24/32] i965/miptree: Take an isl_format in prepare_texture

Jason Ekstrand jason at jlekstrand.net
Fri Jul 21 23:17:03 UTC 2017


On Fri, Jul 21, 2017 at 1:50 PM, Pohjolainen, Topi <
topi.pohjolainen at gmail.com> wrote:

> On Wed, Jul 19, 2017 at 02:01:50PM -0700, Jason Ekstrand wrote:
> > This will be a bit more convenient momentarily.  It's also more correct
> > because it makes prepare_texture take sRGB into account.
> > ---
> >  src/mesa/drivers/dri/i965/brw_draw.c          |  7 ++++++-
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 15 +++++++--------
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.h |  2 +-
> >  3 files changed, 14 insertions(+), 10 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/brw_draw.c
> b/src/mesa/drivers/dri/i965/brw_draw.c
> > index b77b44e..01b618c 100644
> > --- a/src/mesa/drivers/dri/i965/brw_draw.c
> > +++ b/src/mesa/drivers/dri/i965/brw_draw.c
> > @@ -383,8 +383,13 @@ brw_predraw_resolve_inputs(struct brw_context *brw)
> >        if (!tex_obj || !tex_obj->mt)
> >        continue;
> >
> > +
>
> Extra?
>

Yup. Fixed.


> > +      struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, i);
> > +      enum isl_format view_format =
> > +         translate_tex_format(brw, tex_obj->_Format,
> sampler->sRGBDecode);
> > +
> >        bool aux_supported;
> > -      intel_miptree_prepare_texture(brw, tex_obj->mt, tex_obj->_Format,
> > +      intel_miptree_prepare_texture(brw, tex_obj->mt, view_format,
> >                                      &aux_supported);
> >
> >        if (!aux_supported && brw->gen >= 9 &&
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > index 5696886..801d830 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > @@ -2716,18 +2716,16 @@ intel_miptree_set_aux_state(struct brw_context
> *brw,
> >  static bool
> >  can_texture_with_ccs(struct brw_context *brw,
> >                       struct intel_mipmap_tree *mt,
> > -                     mesa_format view_format)
> > +                     enum isl_format view_format)
> >  {
> >     if (mt->aux_usage != ISL_AUX_USAGE_CCS_E)
> >        return false;
> >
> >     enum isl_format isl_mt_format = brw_isl_format_for_mesa_
> format(mt->format);
> > -   enum isl_format isl_view_format = brw_isl_format_for_mesa_
> format(view_format);
> > -
> >     if (!isl_formats_are_ccs_e_compatible(&brw->screen->devinfo,
> > -                                         isl_mt_format,
> isl_view_format)) {
> > +                                         isl_mt_format, view_format)) {
> >        perf_debug("Incompatible sampling format (%s) for rbc (%s)\n",
> > -                 _mesa_get_format_name(view_format),
> > +                 isl_format_get_layout(view_format)->name,
> >                   _mesa_get_format_name(mt->format));
> >        return false;
> >     }
> > @@ -2765,7 +2763,7 @@ intel_miptree_texture_aux_usage(struct
> brw_context *brw,
> >  static void
> >  intel_miptree_prepare_texture_slices(struct brw_context *brw,
> >                                       struct intel_mipmap_tree *mt,
> > -                                     mesa_format view_format,
> > +                                     enum isl_format view_format,
> >                                       uint32_t start_level, uint32_t
> num_levels,
> >                                       uint32_t start_layer, uint32_t
> num_layers,
> >                                       bool *aux_supported_out)
> > @@ -2791,7 +2789,7 @@ intel_miptree_prepare_texture_slices(struct
> brw_context *brw,
>
> It gets passed to intel_miptree_prepare_texture_slices() but it doesn't do
> anything with it yet?
>
> Above can_texture_with_ccs() really takes it into account.
>

I can't tell if the above is a statement or a question. :-)  It's taken
into account in can_texture_with_ccs as well as in the comparison to
determine whether or not we can handle clear colors.  And I just realized
that's broken because it's comparing mt->format to view_format.  :-(  I'll
fix that too.

--Jason


> >  void
> >  intel_miptree_prepare_texture(struct brw_context *brw,
> >                                struct intel_mipmap_tree *mt,
> > -                              mesa_format view_format,
> > +                              enum isl_format view_format,
> >                                bool *aux_supported_out)
> >  {
> >     intel_miptree_prepare_texture_slices(brw, mt, view_format,
> > @@ -2815,7 +2813,8 @@ intel_miptree_prepare_fb_fetch(struct brw_context
> *brw,
> >                                 struct intel_mipmap_tree *mt, uint32_t
> level,
> >                                 uint32_t start_layer, uint32_t
> num_layers)
> >  {
> > -   intel_miptree_prepare_texture_slices(brw, mt, mt->format, level, 1,
> > +   enum isl_format format = translate_tex_format(brw, mt->format,
> false);
> > +   intel_miptree_prepare_texture_slices(brw, mt, format, level, 1,
> >                                          start_layer, num_layers, NULL);
> >  }
> >
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> > index 239791f..df413b1 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> > @@ -931,7 +931,7 @@ intel_miptree_texture_aux_usage(struct brw_context
> *brw,
> >  void
> >  intel_miptree_prepare_texture(struct brw_context *brw,
> >                                struct intel_mipmap_tree *mt,
> > -                              mesa_format view_format,
> > +                              enum isl_format view_format,
> >                                bool *aux_supported_out);
> >  void
> >  intel_miptree_prepare_image(struct brw_context *brw,
> > --
> > 2.5.0.400.gff86faf
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170721/24d4b3fa/attachment-0001.html>


More information about the mesa-dev mailing list