radv: allow TC-compat HTILE with GENERAL outside of render loops
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 9 Apr 2020 09:37:27 +0000 (11:37 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 9 Apr 2020 12:10:37 +0000 (12:10 +0000)
commit2d8453e6e60fa9771cd655324f7c15c054b6db94
tree42851bc752ee1a5f878aef040c16e167b36308f7
parent4de84c8cbd6f6fe46703a3a8d5283460bbeb50fc
radv: allow TC-compat HTILE with GENERAL outside of render loops

This gives +8% with Wolfeinstein Youngblood on my Vega64, and
according to someone else, it also improves performance with Doom
2016 and Wolfenstein 2 (and probably other ID Tech games).

This improvement is because Youngblood uses GENERAL for the main
depth-only pass and TC-compat HTILE is now enabled with GENERAL if
we know that we are outside of a render loop. This obviously also
reduces the number of HTILE decompressions from/to GENERAL.

Note that Youngblood violates the Vulkan spec regarding render loops
because they are only allowed with input attachments. Expect possible
rendering issues if apps use render loops with the wrong way (ie.
without input attachmens) because HTILE might not be coherent if
a depth-stencil texture is sampled and rendered in the same draw.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2704
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4391>
src/amd/vulkan/radv_image.c