From 38d79d00a1cc959ec102cf116a1089354a3bf79d Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 3 Sep 2021 12:15:03 +0200 Subject: [PATCH] v3dv: honor VkPhysicalDeviceFeatures2 in pNext chain of VkDeviceCreateInfo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: dEQP-VK.robustness.buffer_access.through_pointers.*.reads.* Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/ci/deqp-v3dv-rpi4-flakes.txt | 2 -- src/broadcom/vulkan/v3dv_device.c | 18 ++++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/broadcom/ci/deqp-v3dv-rpi4-flakes.txt b/src/broadcom/ci/deqp-v3dv-rpi4-flakes.txt index d90b0220d83..2ce4dde1524 100644 --- a/src/broadcom/ci/deqp-v3dv-rpi4-flakes.txt +++ b/src/broadcom/ci/deqp-v3dv-rpi4-flakes.txt @@ -1,6 +1,4 @@ dEQP-VK.api.external.fence.opaque_fd.reset_permanent dEQP-VK.api.external.fence.opaque_fd.reset_temporary -dEQP-VK.robustness.buffer_access.through_pointers.compute.*out_of_memory_with_.* -dEQP-VK.robustness.buffer_access.through_pointers.graphics.*out_of_memory_with_.* dEQP-VK.ssbo.layout.instance_array_basic_type.std430.uvec4 dEQP-VK.wsi.display.get_display_plane_capabilities diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 7b9dd3c11a5..82b9ba7bb6f 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -1762,14 +1762,24 @@ v3dv_CreateDevice(VkPhysicalDevice physicalDevice, device->devinfo = physical_device->devinfo; - if (pCreateInfo->pEnabledFeatures) { + /* Vulkan 1.1 and VK_KHR_get_physical_device_properties2 added + * VkPhysicalDeviceFeatures2 which can be used in the pNext chain of + * vkDeviceCreateInfo, in which case it should be used instead of + * pEnabledFeatures. + */ + const VkPhysicalDeviceFeatures2 *features2 = + vk_find_struct_const(pCreateInfo->pNext, PHYSICAL_DEVICE_FEATURES_2); + if (features2) { + memcpy(&device->features, &features2->features, + sizeof(device->features)); + } else if (pCreateInfo->pEnabledFeatures) { memcpy(&device->features, pCreateInfo->pEnabledFeatures, sizeof(device->features)); - - if (device->features.robustBufferAccess) - perf_debug("Device created with Robust Buffer Access enabled.\n"); } + if (device->features.robustBufferAccess) + perf_debug("Device created with Robust Buffer Access enabled.\n"); + int ret = drmSyncobjCreate(physical_device->render_fd, DRM_SYNCOBJ_CREATE_SIGNALED, &device->last_job_sync);