radv: enable TC-compat HTILE for mipmaps on GFX10+
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 16 Dec 2020 08:58:52 +0000 (09:58 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 27 Jan 2021 08:19:09 +0000 (09:19 +0100)
Mipmaps+layers should be investigated and mipmaps support added
for previous gens (GFX8-9).

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/8124>

src/amd/vulkan/radv_image.c

index a69f6d0..0229db3 100644 (file)
@@ -82,7 +82,9 @@ radv_use_tc_compat_htile_for_image(struct radv_device *device,
        if (pCreateInfo->tiling == VK_IMAGE_TILING_LINEAR)
                return false;
 
-       if (pCreateInfo->mipLevels > 1)
+       if (pCreateInfo->mipLevels > 1 &&
+           (device->physical_device->rad_info.chip_class < GFX10 ||
+            pCreateInfo->arrayLayers > 1))
                return false;
 
        /* Do not enable TC-compatible HTILE if the image isn't readable by a
@@ -249,8 +251,15 @@ static inline bool
 radv_use_htile_for_image(const struct radv_device *device,
                          const struct radv_image *image)
 {
-       return image->info.levels == 1 &&
-              !image->shareable &&
+       /* TODO:
+        * - Investigate about mips+layers.
+        * - Enable on other gens.
+        */
+       bool use_htile_for_mips = image->info.array_size == 1 &&
+                                 device->physical_device->rad_info.chip_class >= GFX10;
+
+       return (image->info.levels == 1 || use_htile_for_mips) &&
+               !image->shareable &&
               ((image->info.width * image->info.height >= 8 * 8) ||
                (device->instance->debug_flags & RADV_DEBUG_FORCE_COMPRESS));
 }