diff --git a/.pick_status.json b/.pick_status.json index 2323bc9ab87..a34827aba38 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1164,7 +1164,7 @@ "description": "radv: Enable global bo list if 1.2 features are used.", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "because_sha": null }, { diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index b078ac6217d..c655f315843 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2945,6 +2945,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr bool attachment_vrs_enabled = false; bool image_float32_atomics = false; bool vs_prologs = false; + bool global_bo_list = false; /* Check enabled features */ if (pCreateInfo->pEnabledFeatures) { @@ -3005,6 +3006,12 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr vs_prologs = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { + const VkPhysicalDeviceVulkan12Features *features = (const void *)ext; + if (features->bufferDeviceAddress || features->descriptorIndexing) + global_bo_list = true; + break; + } default: break; } @@ -3052,7 +3059,8 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr /* With update after bind we can't attach bo's to the command buffer * from the descriptor set anymore, so we have to use a global BO list. */ - device->use_global_bo_list = (device->instance->perftest_flags & RADV_PERFTEST_BO_LIST) || + device->use_global_bo_list = global_bo_list || + (device->instance->perftest_flags & RADV_PERFTEST_BO_LIST) || device->vk.enabled_extensions.EXT_descriptor_indexing || device->vk.enabled_extensions.EXT_buffer_device_address || device->vk.enabled_extensions.KHR_buffer_device_address ||