Я пишу оболочку C ++ для Vulkan API, поэтому хочу убедиться, что моя документация не противоречит тому, что говорит настоящий API.
Device device1 = physical_device.Connect(device_settings);
Device device2 = physical_device.Connect(device_settings);
Этот сценарий работает даже при работе со включенным стандартным слоем проверки LunarG. Но есть много вещей, которые в настоящее время проходят через слой проверки, несмотря на то, что они неверны. Итак, мой вопрос, это действительный сделать это?
Из спецификации в vkCreateDevice
:
Несколько логических устройств могут быть созданы из одного физического устройства.
Не то чтобы это нужно было сказать, поскольку раздел документа «Действительное использование» прямо не запрещает это. Конечно, следующее предложение:
Создание логического устройства может завершиться неудачей из-за нехватки ресурсов, специфичных для устройства (в дополнение к другим ошибкам).
Таким образом, вы не можете создать бесконечное VkDevice
объекты из того же VkPhysicalDevice
, Если реализация не хочет поддерживать более одного, это не обязательно.
Других решений пока нет …