diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c index f6ac950bccd..bd1c7af078a 100644 --- a/src/amd/vulkan/radv_formats.c +++ b/src/amd/vulkan/radv_formats.c @@ -831,8 +831,14 @@ radv_check_modifier_support(struct radv_physical_device *pdev, const VkPhysicalD return VK_ERROR_FORMAT_NOT_SUPPORTED; const bool video = info->usage & (VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR); - if (video && !ac_modifier_supports_video(&pdev->info, modifier)) - return VK_ERROR_FORMAT_NOT_SUPPORTED; + if (video) { + if (!ac_modifier_supports_video(&pdev->info, modifier)) + return VK_ERROR_FORMAT_NOT_SUPPORTED; + + /* Decode DPB and output coincide (tier3) requires tiling. */ + if (info->usage & VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR && modifier == DRM_FORMAT_MOD_LINEAR) + return VK_ERROR_FORMAT_NOT_SUPPORTED; + } /* We can expand this as needed and implemented but there is not much demand * for more.