[Mesa-dev] [PATCH 00/22] anv: Reduce HiZ Resolves
Nanley Chery
nanleychery at gmail.com
Thu Jan 12 02:01:33 UTC 2017
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