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

Jason Ekstrand jason at jlekstrand.net
Thu Jan 12 05:31:10 UTC 2017


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

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
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170111/df906016/attachment-0001.html>


More information about the mesa-dev mailing list