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