radv/llvm: enable 16-bit storage features on GFX6-GFX7
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 29 Jan 2020 13:40:17 +0000 (14:40 +0100)
committerMarge Bot <eric+marge@anholt.net>
Fri, 3 Apr 2020 08:01:28 +0000 (08:01 +0000)
Should allow to play Doom Eternal on GFX6-GFX7 because the
driver now supports storageBuffer16BitAccess.

It's now supported and all CTS tests pass.

Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/857
Cc: 20.0 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

src/amd/vulkan/radv_device.c

index 7bbc8be9b3f22672fbbb8e03158c2f930ed76e80..f45d86bd3f72e5bb29e4bde1acec4cec8ee8fd4d 100644 (file)
@@ -1001,11 +1001,10 @@ void radv_GetPhysicalDeviceFeatures2(
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
                        VkPhysicalDevice16BitStorageFeatures *features =
                            (VkPhysicalDevice16BitStorageFeatures*)ext;
-                       bool enabled = pdevice->rad_info.chip_class >= GFX8 && !pdevice->use_aco;
-                       features->storageBuffer16BitAccess = enabled;
-                       features->uniformAndStorageBuffer16BitAccess = enabled;
-                       features->storagePushConstant16 = enabled;
-                       features->storageInputOutput16 = enabled && LLVM_VERSION_MAJOR >= 9;
+                       features->storageBuffer16BitAccess = !pdevice->use_aco;
+                       features->uniformAndStorageBuffer16BitAccess = !pdevice->use_aco;
+                       features->storagePushConstant16 = !pdevice->use_aco;
+                       features->storageInputOutput16 = pdevice->rad_info.chip_class >= GFX8 && !pdevice->use_aco && LLVM_VERSION_MAJOR >= 9;
                        break;
                }
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
@@ -1220,9 +1219,9 @@ void radv_GetPhysicalDeviceFeatures2(
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
                        VkPhysicalDeviceVulkan11Features *features =
                                (VkPhysicalDeviceVulkan11Features *)ext;
-                       features->storageBuffer16BitAccess = pdevice->rad_info.chip_class >= GFX8 && !pdevice->use_aco;
-                       features->uniformAndStorageBuffer16BitAccess = pdevice->rad_info.chip_class >= GFX8 && !pdevice->use_aco;
-                       features->storagePushConstant16 = pdevice->rad_info.chip_class >= GFX8 && !pdevice->use_aco;
+                       features->storageBuffer16BitAccess = !pdevice->use_aco;
+                       features->uniformAndStorageBuffer16BitAccess = !pdevice->use_aco;
+                       features->storagePushConstant16 = !pdevice->use_aco;
                        features->storageInputOutput16 = pdevice->rad_info.chip_class >= GFX8 && !pdevice->use_aco && LLVM_VERSION_MAJOR >= 9;
                        features->multiview = true;
                        features->multiviewGeometryShader = true;