Search code examples
macosvulkanmoltenvk

My mac reports 4 Vulkan queue families but reference says it has 1


My home computer is a late 2012 Mac Mini, it has a 3rd gen Intel IvyBridge processor (mobile model for some reason only Apple knows).

The "vulkaninfo.app" from the LunarG SDK reports 4 queue families on the integrated GPU, but public information shows that it should only have 1 one it. What's happening?


VkQueueFamilyProperties[0]:
===========================
    queueFlags         = GRAPHICS | COMPUTE | TRANSFER
    queueCount         = 1
    timestampValidBits = 64
    minImageTransferGranularity = (1, 1, 1)
    present support    = true

VkQueueFamilyProperties[1]:
===========================
    queueFlags         = GRAPHICS | COMPUTE | TRANSFER
    queueCount         = 1
    timestampValidBits = 64
    minImageTransferGranularity = (1, 1, 1)
    present support    = true

VkQueueFamilyProperties[2]:
===========================
    queueFlags         = GRAPHICS | COMPUTE | TRANSFER
    queueCount         = 1
    timestampValidBits = 64
    minImageTransferGranularity = (1, 1, 1)
    present support    = true

VkQueueFamilyProperties[3]:
===========================
    queueFlags         = GRAPHICS | COMPUTE | TRANSFER
    queueCount         = 1
    timestampValidBits = 64
    minImageTransferGranularity = (1, 1, 1)
    present support    = true


Solution

  • In macOS, there's no queue count or queue family count in Metal Devices (as of July 2019), so one could create 1 or any number of queues and get full utilization of the device.

    However, as noted in a GitHub issue, some programs with hardwired assumptions crashes when there's only 1 queue family, so they made MoltenVK report 4 queue families to fix it (see pull request 450).