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 <bas@basnieuwenhuizen.nl>
This commit is contained in:
Dave Airlie 2016-11-30 04:08:10 +00:00 committed by Bas Nieuwenhuizen
parent 442735d35d
commit 6229994ab7

View file

@ -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(