diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 5d3d0266e91..128005317ed 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -93,21 +93,23 @@ radv_use_tc_compat_htile_for_image(struct radv_device *device, VK_IMAGE_USAGE_TRANSFER_SRC_BIT))) return false; - /* FIXME: for some reason TC compat with 2/4/8 samples breaks some cts - * tests - disable for now. - */ - if (device->physical_device->rad_info.chip_class < GFX9 && - pCreateInfo->samples >= 2 && format == VK_FORMAT_D32_SFLOAT_S8_UINT) - return false; + if (device->physical_device->rad_info.chip_class < GFX9) { + /* FIXME: for some reason TC compat with 2/4/8 samples breaks + * some cts tests - disable for now. + */ + if (pCreateInfo->samples >= 2 && format == VK_FORMAT_D32_SFLOAT_S8_UINT) + return false; - /* GFX9 supports both 32-bit and 16-bit depth surfaces, while GFX8 only - * supports 32-bit. Though, it's possible to enable TC-compat for - * 16-bit depth surfaces if no Z planes are compressed. - */ - if (format != VK_FORMAT_D32_SFLOAT_S8_UINT && - format != VK_FORMAT_D32_SFLOAT && - format != VK_FORMAT_D16_UNORM) - return false; + /* GFX9+ supports compression for both 32-bit and 16-bit depth + * surfaces, while GFX8 only supports 32-bit natively. Though, + * the driver allows TC-compat HTILE for 16-bit depth surfaces + * with no Z planes compression. + */ + if (format != VK_FORMAT_D32_SFLOAT_S8_UINT && + format != VK_FORMAT_D32_SFLOAT && + format != VK_FORMAT_D16_UNORM) + return false; + } return true; }