From 6229994ab75cab2565c3df7b47b8fb32e4b31d45 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 30 Nov 2016 04:08:10 +0000 Subject: [PATCH] radv: expose the compute queue v2: Don't expose the SDMA queue and use the CIK check also in the second if. (Bas) Reviewed-by: Bas Nieuwenhuizen --- src/amd/vulkan/radv_device.c | 52 ++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index cfedff434b0..6362e9ead12 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -553,20 +553,50 @@ void radv_GetPhysicalDeviceQueueFamilyProperties( uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties) { + RADV_FROM_HANDLE(radv_physical_device, pdevice, physicalDevice); + int num_queue_families = 1; + bool all_queues = env_var_as_boolean("RADV_SHOW_QUEUES", true); + int idx; + if (all_queues && pdevice->rad_info.chip_class >= CIK) { + if (pdevice->rad_info.compute_rings > 0) + num_queue_families++; + } + if (pQueueFamilyProperties == NULL) { - *pCount = 1; + *pCount = num_queue_families; return; } - assert(*pCount >= 1); - - *pQueueFamilyProperties = (VkQueueFamilyProperties) { - .queueFlags = VK_QUEUE_GRAPHICS_BIT | - VK_QUEUE_COMPUTE_BIT | - VK_QUEUE_TRANSFER_BIT, - .queueCount = 1, - .timestampValidBits = 64, - .minImageTransferGranularity = (VkExtent3D) { 1, 1, 1 }, - }; + + if (!*pCount) + return; + + idx = 0; + if (*pCount >= 1) { + pQueueFamilyProperties[idx] = (VkQueueFamilyProperties) { + .queueFlags = VK_QUEUE_GRAPHICS_BIT | + VK_QUEUE_COMPUTE_BIT | + VK_QUEUE_TRANSFER_BIT, + .queueCount = 1, + .timestampValidBits = 64, + .minImageTransferGranularity = (VkExtent3D) { 1, 1, 1 }, + }; + idx++; + } + + if (!all_queues) + return; + + if (pdevice->rad_info.compute_rings > 0 && pdevice->rad_info.chip_class >= CIK) { + if (*pCount > idx) { + pQueueFamilyProperties[idx] = (VkQueueFamilyProperties) { + .queueFlags = VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT, + .queueCount = pdevice->rad_info.compute_rings, + .timestampValidBits = 64, + .minImageTransferGranularity = (VkExtent3D) { 1, 1, 1 }, + }; + idx++; + } + } } void radv_GetPhysicalDeviceMemoryProperties( -- 2.30.2