Можно ли создать два VkDevice из одного и того же VkPhysicalDevice?

Я пишу оболочку C++ для Vulkan API, поэтому я хочу убедиться, что моя документация не противоречит тому, что говорит фактический API.

Device device1 = physical_device.Connect(device_settings);
Device device2 = physical_device.Connect(device_settings);

Этот сценарий работает даже при включенном стандартном уровне проверки LunarG. Но есть много вещей, которые в настоящее время проходят через уровень проверки, несмотря на то, что они неверны. Итак, мой вопрос: действительно это сделать?


person Andrew Williamson    schedule 08.04.2016    source источник


Ответы (1)


Из спецификации под vkCreateDevice:

Несколько логических устройств могут быть созданы из одного физического устройства.

Не то чтобы это нужно было говорить, поскольку раздел документа «Действительное использование» прямо не запрещает это. Правда, следующая фраза:

Создание логического устройства может завершиться ошибкой из-за отсутствия ресурсов, специфичных для устройства (в дополнение к другим ошибкам).

Таким образом, вы не можете создавать бесконечные VkDevice объекты из одного и того же VkPhysicalDevice. Если реализация не хочет поддерживать более одного, это не обязательно.

person Nicol Bolas    schedule 08.04.2016