From dec5a624e9bca24720c59d02c6a14f2e0c9f5f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Fri, 30 Aug 2024 13:00:09 -0700 Subject: [PATCH] anv: Check if vkCreateQueryPool() is being created in a supported queue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turns out not even VK CTS was calling vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR() to check if queue supports query. So here adding a explicity check in our implementation of vkCreateQueryPool(). https://github.com/KhronosGroup/VK-GL-CTS/pull/482 Cc: 24.2 Reviewed-by: Lionel Landwerlin Signed-off-by: José Roberto de Souza Part-of: --- src/intel/vulkan/genX_query.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index 6d0d9945ab9..aa3aeaf5e0f 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -146,9 +146,15 @@ VkResult genX(CreateQueryPool)( case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: { const struct intel_perf_query_field_layout *layout = &pdevice->perf->query_layout; + const struct anv_queue_family *queue_family; perf_query_info = vk_find_struct_const(pCreateInfo->pNext, QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR); + /* Same restriction as in EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR() */ + queue_family = &pdevice->queue.families[perf_query_info->queueFamilyIndex]; + if (!queue_family->supports_perf) + return vk_error(device, VK_ERROR_UNKNOWN); + n_passes = intel_perf_get_n_passes(pdevice->perf, perf_query_info->pCounterIndices, perf_query_info->counterIndexCount,