[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