[Mesa-dev] [PATCH 05/30] i965/miptree: Clean up the depth resolve helpers a little

Jason Ekstrand jason at jlekstrand.net
Wed May 31 17:25:51 UTC 2017


On Tue, May 30, 2017 at 12:34 AM, Pohjolainen, Topi <
topi.pohjolainen at gmail.com> wrote:

> On Fri, May 26, 2017 at 04:30:09PM -0700, Jason Ekstrand wrote:
> > ---
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 70
> ++++++++++++---------------
> >  1 file changed, 30 insertions(+), 40 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > index 2701201..3a4fd89 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > @@ -1978,23 +1978,30 @@ intel_miptree_set_all_slices_need_depth_resolve(struct
> intel_mipmap_tree *mt,
> >  }
> >
> >  static bool
> > -intel_miptree_slice_resolve(struct brw_context *brw,
> > -                         struct intel_mipmap_tree *mt,
> > -                         uint32_t level,
> > -                         uint32_t layer,
> > -                         enum blorp_hiz_op need)
> > +intel_miptree_depth_hiz_resolve(struct brw_context *brw,
> > +                                struct intel_mipmap_tree *mt,
> > +                                uint32_t start_level, uint32_t
> num_levels,
> > +                                uint32_t start_layer, uint32_t
> num_layers,
> > +                                enum blorp_hiz_op need)
> >  {
> > -   intel_miptree_check_level_layer(mt, level, layer);
> > +   bool did_resolve = false;
> >
> > -   struct intel_resolve_map *item =
> > -      intel_resolve_map_get(&mt->hiz_map, level, layer);
> > +   foreach_list_typed_safe(struct intel_resolve_map, map, link,
> &mt->hiz_map) {
> > +      if (map->level < start_level ||
> > +          map->level >= (start_level + num_levels) ||
> > +          map->layer < start_layer ||
> > +          map->layer >= (start_layer + num_layers))
> > +         continue;
> >
> > -   if (!item || item->need != need)
> > -      return false;
> > +      if (map->need != need)
> > +      continue;
>
> Indentation looks a little odd here.
>

A tab snuck in there somehow.  Fixed.


> >
> > -   intel_hiz_exec(brw, mt, level, layer, need);
> > -   intel_resolve_map_remove(item);
> > -   return true;
> > +      intel_hiz_exec(brw, mt, map->level, map->layer, need);
> > +      intel_resolve_map_remove(map);
> > +      did_resolve = true;
> > +   }
> > +
> > +   return did_resolve;
> >  }
> >
> >  bool
> > @@ -2003,8 +2010,8 @@ intel_miptree_slice_resolve_hiz(struct
> brw_context *brw,
> >                               uint32_t level,
> >                               uint32_t layer)
> >  {
> > -   return intel_miptree_slice_resolve(brw, mt, level, layer,
> > -                                   BLORP_HIZ_OP_HIZ_RESOLVE);
> > +   return intel_miptree_depth_hiz_resolve(brw, mt, level, 1, layer, 1,
> > +                                          BLORP_HIZ_OP_HIZ_RESOLVE);
> >  }
> >
> >  bool
> > @@ -2013,43 +2020,26 @@ intel_miptree_slice_resolve_depth(struct
> brw_context *brw,
> >                                 uint32_t level,
> >                                 uint32_t layer)
> >  {
> > -   return intel_miptree_slice_resolve(brw, mt, level, layer,
> > -                                   BLORP_HIZ_OP_DEPTH_RESOLVE);
> > -}
> > -
> > -static bool
> > -intel_miptree_all_slices_resolve(struct brw_context *brw,
> > -                              struct intel_mipmap_tree *mt,
> > -                              enum blorp_hiz_op need)
> > -{
> > -   bool did_resolve = false;
> > -
> > -   foreach_list_typed_safe(struct intel_resolve_map, map, link,
> &mt->hiz_map) {
> > -      if (map->need != need)
> > -      continue;
> > -
> > -      intel_hiz_exec(brw, mt, map->level, map->layer, need);
> > -      intel_resolve_map_remove(map);
> > -      did_resolve = true;
> > -   }
> > -
> > -   return did_resolve;
> > +   return intel_miptree_depth_hiz_resolve(brw, mt, level, 1, layer, 1,
> > +                                          BLORP_HIZ_OP_DEPTH_RESOLVE);
> >  }
> >
> >  bool
> >  intel_miptree_all_slices_resolve_hiz(struct brw_context *brw,
> >                                    struct intel_mipmap_tree *mt)
> >  {
> > -   return intel_miptree_all_slices_resolve(brw, mt,
> > -                                        BLORP_HIZ_OP_HIZ_RESOLVE);
> > +   return intel_miptree_depth_hiz_resolve(brw, mt,
> > +                                          0, UINT32_MAX, 0, UINT32_MAX,
> > +                                          BLORP_HIZ_OP_HIZ_RESOLVE);
> >  }
> >
> >  bool
> >  intel_miptree_all_slices_resolve_depth(struct brw_context *brw,
> >                                      struct intel_mipmap_tree *mt)
> >  {
> > -   return intel_miptree_all_slices_resolve(brw, mt,
> > -                                        BLORP_HIZ_OP_DEPTH_RESOLVE);
> > +   return intel_miptree_depth_hiz_resolve(brw, mt,
> > +                                          0, UINT32_MAX, 0, UINT32_MAX,
> > +                                          BLORP_HIZ_OP_DEPTH_RESOLVE);
> >  }
> >
> >  enum intel_fast_clear_state
> > --
> > 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/20170531/b28b4e00/attachment.html>


More information about the mesa-dev mailing list