[Mesa-dev] [PATCH 00/22] anv: Reduce HiZ Resolves

Nanley Chery nanleychery at gmail.com
Thu Jan 12 17:16:31 UTC 2017


On Wed, Jan 11, 2017 at 09:31:10PM -0800, Jason Ekstrand wrote:
> I'm done reviewing things for the evening.  I've got a little more looking
> to do but it all looks fantastic so far.  All of my comments have been
> pretty cosmetic.  I'll finish tomorrow and we can go over things in the
> office if you'd like.
> 
> --Jason
> 

Good to hear! I'll see if I can safely get there, otherwise a remote
meeting would also work for me.

-Nanley

> On Wed, Jan 11, 2017 at 6:01 PM, Nanley Chery <nanleychery at gmail.com> wrote:
> 
> > On Wed, Jan 11, 2017 at 05:54:46PM -0800, Nanley Chery wrote:
> > > In my testing, this series completely removes HiZ resolves for the
> > > following Vulkan applications: Dota 2, Talos Principle, and the Sascha
> > > Willems Vulkan examples and demos. This is accomplished with two major
> > > changes. The first change is to transition the current HiZ resolving
> > > algorithm from resolving on attachment load/store ops to resolving on
> > > image layout transitions. The second change is to enable sampling from
> > > HiZ on BDW+.
> > >
> > > There are some notable additional changes. To support performing layout
> > > transitions outside of a render pass we implement the HiZ sequence in
> > > BLORP which can emit depth stencil state outside of a render pass.
> > >
> > > Performance data was collected at different points in this series. These
> > > tests were run on a SKL GT4, with a monitor resolution of 1440x900. For
> > > Dota 2 and Talos Principle, the average of three fullscreen runs was
> > > taken. At least one warm-up run was performed between driver builds. The
> > > Talos Principle runs are omitted as no significant changes were
> > > measured. No warm-up was performed for the Vulkan examples and the demo
> > > resolution was the default window size on startup.
> >
> > Here are the results:
> >
> > shadowmapping (Vulkan example) - visual measurement of min-max:
> > * HiZ disabled           - ~579-593
> > * HiZ load/store         - ~602-655
> > * HiZ layouts            - ~628-673
> > * HiZ layouts + sampling - ~766-806
> >
> > Dota 2 demo benchmark:
> > * HiZ disabled           - 46.9
> > * HiZ load/store         - 43.4
> > * HiZ layouts            - 51.3
> > * HiZ layouts + sampling - 51.5
> >
> > -Nanley
> >
> > >
> > > Nanley Chery (22):
> > >   intel/blorp: Add the BDW+ optimized HZ_OP sequence to BLORP
> > >   intel/blorp_blit: Handle ISL_AUX_USAGE_HIZ
> > >   anv: Replace anv_image_has_hiz() with ISL_AUX_USAGE_HIZ
> > >   anv: Use ::anv_attachment_state for toggling HiZ per subpass
> > >   anv: Enable HiZ support for multiple subpasses
> > >   intel/blorp_clear: Add gen8 HiZ clearing functions
> > >   anv: Use gen8 BLORP HiZ clearing functions
> > >   anv/blorp: Add a gen8 HiZ op resolve function
> > >   anv: Use the gen8 BLORP HiZ resolving function
> > >   anv: Delete anv's HiZ op emit function
> > >   anv: Add helpers to handle depth buffer layout transitions
> > >   anv: Store depth stencil layouts
> > >   anv: Prepare for transitioning to the requested final layout
> > >   anv: Avoid resolves incurred by fast depth clears
> > >   anv: Disable HiZ for input attachments
> > >   anv/image: Disable HiZ for storage images
> > >   anv: Perform HiZ resolves only on layout transitions
> > >   isl/surface_state: Handle ISL_AUX_USAGE_HIZ
> > >   anv: Add a helper to determine sampling with HiZ
> > >   anv/blorp: Don't fast depth clear samplable HiZ buffers on BDW
> > >   anv: Enable sampling from HiZ
> > >   anv: Avoid some resolves for samplable HiZ buffers
> > >
> > >  src/intel/blorp/blorp.h            |  12 ++
> > >  src/intel/blorp/blorp_blit.c       |   2 +
> > >  src/intel/blorp/blorp_clear.c      |  80 +++++++++++++
> > >  src/intel/blorp/blorp_genX_exec.h  |  87 ++++++++++++++
> > >  src/intel/isl/isl_surface_state.c  |  38 ++++++-
> > >  src/intel/vulkan/TODO              |   3 +-
> > >  src/intel/vulkan/anv_blorp.c       | 100 ++++++++++++++++-
> > >  src/intel/vulkan/anv_genX.h        |   3 -
> > >  src/intel/vulkan/anv_image.c       |  46 +++++++-
> > >  src/intel/vulkan/anv_pass.c        |   8 ++
> > >  src/intel/vulkan/anv_private.h     |  51 +++++++--
> > >  src/intel/vulkan/gen7_cmd_buffer.c |   7 --
> > >  src/intel/vulkan/gen8_cmd_buffer.c | 224 ------------------------------
> > -------
> > >  src/intel/vulkan/genX_cmd_buffer.c | 168 ++++++++++++++++++++++++----
> > >  14 files changed, 548 insertions(+), 281 deletions(-)
> > >
> > > --
> > > 2.11.0
> > >
> >


More information about the mesa-dev mailing list