radv: don't fast clear HTILE for 16-bit depth surfaces on GFX8
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 13 Jun 2018 18:19:23 +0000 (20:19 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 13 Jun 2018 18:30:04 +0000 (20:30 +0200)
This causes rendering issues in Shadow Warrior 2 with DXVK.

Cc: mesa-stable@lists.freedesktop.org
Fixes: ccc64f3133 ("radv: enable TC-compat HTILE for 16-bit depth surfaces on GFX8")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106912
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_meta_clear.c

index fae441ceb662b3e1badb856a51fffdc50cbbf960..373072dd361a3de9193a135fb8e27c17bde414b5 100644 (file)
@@ -717,6 +717,14 @@ emit_fast_htile_clear(struct radv_cmd_buffer *cmd_buffer,
        if ((clear_value.depth != 0.0 && clear_value.depth != 1.0) || !(aspects & VK_IMAGE_ASPECT_DEPTH_BIT))
                goto fail;
 
+       /* GFX8 only supports 32-bit depth surfaces but we can enable TC-compat
+        * HTILE for 16-bit surfaces if no Z planes are compressed. Though,
+        * fast HTILE clears don't seem to work.
+        */
+       if (cmd_buffer->device->physical_device->rad_info.chip_class == VI &&
+           iview->image->vk_format == VK_FORMAT_D16_UNORM)
+               goto fail;
+
        if (vk_format_aspects(iview->image->vk_format) & VK_IMAGE_ASPECT_STENCIL_BIT) {
                if (clear_value.stencil != 0 || !(aspects & VK_IMAGE_ASPECT_STENCIL_BIT))
                        goto fail;