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

Nanley Chery nanleychery at gmail.com
Thu Jan 12 01:54:46 UTC 2017


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.

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