Vulkan/Device: Add queue infos
Former-commit-id: 36a260b1efa0f443b1c22c21060adbc7ff23a10f [formerly a9c073dfae57cde2c3b175c5f70e2fa47976bd82] Former-commit-id: a14c9a5283579dff978fffcca660e4974bf8e58d
This commit is contained in:
@@ -13,6 +13,13 @@ namespace Nz
|
||||
{
|
||||
bool Device::Create(VkPhysicalDevice device, const VkDeviceCreateInfo& createInfo, const VkAllocationCallbacks* allocator)
|
||||
{
|
||||
std::vector<VkQueueFamilyProperties> queuesProperties;
|
||||
if (!m_instance.GetPhysicalDeviceQueueFamilyProperties(device, &queuesProperties))
|
||||
{
|
||||
NazaraError("Failed to query queue family properties");
|
||||
return false;
|
||||
}
|
||||
|
||||
m_lastErrorCode = m_instance.vkCreateDevice(device, &createInfo, allocator, &m_device);
|
||||
if (m_lastErrorCode != VkResult::VK_SUCCESS)
|
||||
{
|
||||
@@ -33,6 +40,25 @@ namespace Nz
|
||||
for (UInt32 i = 0; i < createInfo.enabledLayerCount; ++i)
|
||||
m_loadedLayers.insert(createInfo.ppEnabledLayerNames[i]);
|
||||
|
||||
// And retains informations about queues
|
||||
m_enabledQueuesInfos.resize(createInfo.queueCreateInfoCount);
|
||||
for (UInt32 i = 0; i < createInfo.queueCreateInfoCount; ++i)
|
||||
{
|
||||
const VkDeviceQueueCreateInfo& queueCreateInfo = createInfo.pQueueCreateInfos[i];
|
||||
QueueFamilyInfo& info = m_enabledQueuesInfos[i];
|
||||
|
||||
info.familyIndex = queueCreateInfo.queueFamilyIndex;
|
||||
|
||||
const VkQueueFamilyProperties& queueProperties = queuesProperties[info.familyIndex];
|
||||
info.flags = queueProperties.queueFlags;
|
||||
info.minImageTransferGranularity = queueProperties.minImageTransferGranularity;
|
||||
info.timestampValidBits = queueProperties.timestampValidBits;
|
||||
|
||||
info.queues.resize(queueCreateInfo.queueCount);
|
||||
for (UInt32 queueCount = 0; queueCount < queueCreateInfo.queueCount; ++queueCount)
|
||||
info.queues[queueCount] = queueCreateInfo.pQueuePriorities[queueCount];
|
||||
}
|
||||
|
||||
#define NAZARA_VULKAN_LOAD_DEVICE(func) func = reinterpret_cast<PFN_##func>(GetProcAddr(#func))
|
||||
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user