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 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev