From 2b04d6cada3a77b53804f1080a397aed911ffa4e Mon Sep 17 00:00:00 2001 From: Yogesh Mohan Marimuthu Date: Tue, 21 Feb 2023 15:56:35 +0530 Subject: [PATCH] radv: set RADEON_SURF_NO_TEXTURE flag in radv_get_surface_flags() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In vkCreateImage() if block comrpessed format and VK_IMAGE_TILING_LINEAR is used, then the app crashes in vega gpu. This is because addrlib does not support BC + linear as from function ValidateSwModeParams(). From Marek Olšák the addrlib behaviour is correct. In pal driver, flags.texture is not set in DetermineSurfaceFlags() function if BC + linear. pal driver does it because it is expected that the BC + linear image is only used as transfer resource. This patch sets RADEON_SURF_NO_TEXTURE flag if usage is not VK_IMAGE_USAGE_SAMPLED_BIT and and VK_IMAGE_USAGE_STORAGE_BIT. flags.texture flag is not set if RADEON_SURF_NO_TEXTURE and this fixes the crash. v1: set NO_TEXTURE if not SAMPLED or STORAGE (Marek Olšák) Reviewed-by: Marek Olšák Part-of: --- src/amd/vulkan/radv_image.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 1db6a9b639c..bf3c7a3b474 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -656,6 +656,8 @@ radv_get_surface_flags(struct radv_device *device, struct radv_image *image, uns /* Disable DCC for VRS rate images because the hw can't handle compression. */ if (pCreateInfo->usage & VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) flags |= RADEON_SURF_VRS_RATE | RADEON_SURF_DISABLE_DCC; + if (!(pCreateInfo->usage & (VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT))) + flags |= RADEON_SURF_NO_TEXTURE; return flags; }