[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