Создание логического устройства
This commit is contained in:
33
src/vk.cpp
33
src/vk.cpp
@@ -9,11 +9,13 @@ void Vulkan::init()
|
||||
{
|
||||
createInstance(); // Создание экземпяра
|
||||
selectPhysicalDevice(); // Выбор физического устройства
|
||||
createLogicalDevice(); // Создание физического устройства
|
||||
}
|
||||
|
||||
// завершение работы
|
||||
void Vulkan::destroy()
|
||||
{
|
||||
vkDestroyDevice(logicalDevice, nullptr); // Уничтожение логического устройства
|
||||
vkDestroyInstance(instance, nullptr); // Уничтожение экземпляра Vulkan
|
||||
}
|
||||
|
||||
@@ -173,3 +175,34 @@ void Vulkan::selectPhysicalDevice()
|
||||
throw std::runtime_error("failed to find a suitable GPU!");
|
||||
}
|
||||
}
|
||||
|
||||
void Vulkan::createLogicalDevice()
|
||||
{
|
||||
// Приоритеты очередей
|
||||
float priority[1] = {1};
|
||||
// Данные о необходимых очередях
|
||||
VkDeviceQueueCreateInfo queueCreateInfo{};
|
||||
queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
||||
queueCreateInfo.queueFamilyIndex = physicalDevice.pickQueueFamily(VK_QUEUE_GRAPHICS_BIT);
|
||||
queueCreateInfo.queueCount = 1;
|
||||
queueCreateInfo.pQueuePriorities = priority;
|
||||
|
||||
// Данные о создаваемом логическом устройстве
|
||||
VkDeviceCreateInfo createInfo{};
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||
createInfo.pQueueCreateInfos = &queueCreateInfo;
|
||||
createInfo.queueCreateInfoCount = 1;
|
||||
createInfo.enabledExtensionCount = 0;
|
||||
createInfo.enabledLayerCount = 0;
|
||||
createInfo.pEnabledFeatures = nullptr;//&physicalDevice.features;
|
||||
|
||||
// Создание логического устройства
|
||||
if (vkCreateDevice(physicalDevice.device, &createInfo, nullptr, &logicalDevice) != VK_SUCCESS)
|
||||
{
|
||||
// Отправим исключение в случае ошибок создания лог. устройства
|
||||
throw std::runtime_error("failed to create logical device!");
|
||||
}
|
||||
|
||||
// Получим дескриптор очереди логического устройства
|
||||
vkGetDeviceQueue(logicalDevice, queueCreateInfo.queueFamilyIndex, 0, &graphicalQueue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user