[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