[Mesa-dev] [PATCH 18/30] i965: Move texturing to the new resolve functions

Jason Ekstrand jason at jlekstrand.net
Wed Jun 7 06:09:09 UTC 2017


On Tue, Jun 6, 2017 at 11:00 PM, Chad Versace <chad at kiwitree.net> wrote:

> On Fri 26 May 2017, Jason Ekstrand wrote:
> > ---
> >  src/mesa/drivers/dri/i965/brw_context.c       | 55
> +++++----------------------
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 55
> +++++++++++++++++++++++++++
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.h |  6 +++
> >  3 files changed, 71 insertions(+), 45 deletions(-)
>
> >  static void
> >  intel_update_state(struct gl_context * ctx, GLuint new_state)
> >  {
> > @@ -259,16 +224,16 @@ intel_update_state(struct gl_context * ctx, GLuint
> new_state)
> >        /* We need inte_texture_object::_Format to be valid */
> >        intel_finalize_mipmap_tree(brw, i);
> >
> > -      if (intel_miptree_sample_with_hiz(brw, tex_obj->mt))
> > -         intel_miptree_all_slices_resolve_hiz(brw, tex_obj->mt);
> > -      else
> > -         intel_miptree_all_slices_resolve_depth(brw, tex_obj->mt);
> > -      /* Sampling engine understands lossless compression and resolving
> > -       * those surfaces should be skipped for performance reasons.
> > -       */
> > -      const int flags = intel_texture_view_requires_resolve(brw,
> tex_obj) ?
> > -                           0 : INTEL_MIPTREE_IGNORE_CCS_E;
> > -      intel_miptree_all_slices_resolve_color(brw, tex_obj->mt, flags);
> > +      bool aux_supported;
> > +      intel_miptree_prepare_texture(brw, tex_obj->mt, tex_obj->_Format,
> > +                                    &aux_supported);
> > +
> > +      if (!aux_supported && brw->gen >= 9 &&
> > +          intel_disable_rb_aux_buffer(brw, tex_obj->mt->bo)) {
> > +         perf_debug("Sampling renderbuffer with non-compressible format
> - "
> > +                    "turning off compression");
> > +      }
> > +
>
> I don't understand why intel_disable_rb_aux_buffer() is called here.
> Specifically, I don't understand why the code disables aux for
> a *framebuffer* attachment in response to the state of a *texture* view
> in the *same* draw call. There is hidden subtlety here.
>
> [time passes... tick tick tick]
>
> In general, the GL spec claims undefined behavior when simultaneuosly
> sampling and rendering to the same buffer. Self-blits are legal, though.
> So, it seems to me that intel_disable_rb_aux_buffer() is applicable here
> only during a glBlit* when src and dest are the same. Is that correct?
> Do there exist other applicable scenarios that I'm failing to see?
>

https://khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_barrier.txt


> Anyway, this is just a refactoring patch, so
> Reviewed-by: Chad Versace <chadversary at chromium.org>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170606/90d23448/attachment.html>


More information about the mesa-dev mailing list