Ткните, меня, пожалуйста, кто-нибудь, носом в спецификацию, где написано (если это вообще где-то написано), с какой версией создаётся Vulkan Instance, если он не передан явно через структуру VkApplicationInfo (т. е. значение поля VkInstanceCreateInfo::pApplicationInfo равно nullptr).
prowkan
https://registry.khronos.org/vulkan/specs/latest/man/html/VkAppli… tionInfo.html
Providing a NULL VkInstanceCreateInfo::pApplicationInfo or providing an apiVersion of 0 is equivalent to providing an apiVersion of VK_MAKE_API_VERSION(0,1,0,0).
v1c
Спасибо, стало очень интересно и появились много новых вопросов.
В частности, непонятно, как работают суффиксы у функций из расширений.
Теоретически, если я создал Instance версии 1.0, то я не могу использовать функцию vkGetPhysicalDeviceProperties2, так как она из версии 1.1.
Вместо неё я должен использовать расширение VK_KHR_get_physical_device_properties2 и функцию vkGetPhysicalDeviceProperties2KHR.
Однако функция vkGetPhysicalDeviceProperties2 работает нормально!
Это неопределённое поведение или какие-то косяки со стороны драйвера или загрузчика?
Я бы не обратил на это внимание, если бы не столкнулся с одной интересной вещью.
Функция vkGetBufferDeviceAddress не загружалась (т. е. возвращался нулевой указатель), пока я не указал явно версию 1.3. Загружалась только функция vkGetBufferDeviceAddressKHR, так как я явно использовал расширение VK_KHR_buffer_device_address.
Как всё-таки правильно использовать функции из расширений и ядра, я не понимаю, они взаимозаменяемы или нет?
И ещё вопрос вдогонку: почему, несмотря на то, что функционал расширения VK_KHR_buffer_device_address обязательно должен поддерживаться в версии 1.3, всё равно необходимо явно включать соответствующую возможность (VkPhysicalDeviceVulkan12Features::bufferDeviceAddress) при создании логического устройства?
prowkan
> И ещё вопрос вдогонку: почему, несмотря на то, что функционал расширения VK_KHR_buffer_device_address обязательно должен поддерживаться в версии 1.3, всё равно необходимо явно включать соответствующую возможность (VkPhysicalDeviceVulkan12Features::bufferDeviceAddress) при создании логического устройства?
Это сделано скорее всего потому, что драйвер может быть модульным и подгружать нужную .dll если фича запрошена. Или выделять дополнительную память под эту фичу.
prowkan
> Функция vkGetBufferDeviceAddress не загружалась (т. е. возвращался нулевой указатель), пока я не указал явно версию 1.3. Загружалась только функция vkGetBufferDeviceAddressKHR, так как я явно использовал расширение VK_KHR_buffer_device_address.
По аналогии с OpenGL функции которые не входят в созданную версию API не должны загружаться. Если загружаются, то это косяк драйвера или загрузчика.
Есть в вулкане что-нибудь для поддержки DLSS? Может уже 4-й поддерживается, правда я не могу найти информации ни об одной версии, разве что редкую фразу:
Vulkan Now Supports NVIDIA DLSS in Proton on Linux
THE_MASTER
все эти штуки типа DLSS, FSR, XeSS они берут вулкановские имеджы, что то с ними делают, и отдают результат. В ядре этого нет. расширения VK_NV_DLSS4 - нет. Интеграция DLSS супер тривиальная, но тебе будет нужна текстура с моушн векторами.
они берут вулкановские имеджы, что то с ними делают, и отдают результат.
Интересно.
Продолжайте наблюдение :)
Так глядишь и вулкан будет вовсе бесполезен.
HolyDel
> Интеграция DLSS супер тривиальная
А как хоть интегрировать? Как расширение называется?
Кстати, у всех Access Denied по этой ссылке?
https://developer.nvidia.com/rtx/dlss/get-started
p.s.: вот собаки, а через vpn то открывается :)
Access Denied и
THE_MASTER
Нет никакого расширения. Есть DLSS SDK, которому вы передаёте ресурсы и объекты Vulkan API. Вот SDK, упрощающий интеграцию, там же находится руководство: https://github.com/NVIDIAGameWorks/Streamline
THE_MASTER
> А как хоть интегрировать? Как расширение называется?
да нет расширения. точнее там есть функция которая вернет те расширения (и фичи) которые требуются для длсс.
дальше вызываешь NVSDK_NGX_VULKAN_Init_with_ProjectID, NVSDK_NGX_VULKAN_AllocateParameters, NVSDK_NGX_VULKAN_GetCapabilityParameters, NGX_VULKAN_CREATE_DLSS_EXT, NGX_VULKAN_EVALUATE_DLSS_EXT и все равботает.
в doc/DLSS_Programming_Guide_Release.pdf в SDK по твоей же ссылке все есть.
prowkan, HolyDel, а...всё, понял, спс. Правда тогда не понятно, что это такое https://github.com/NVIDIA/DLSS
THE_MASTER
> Правда тогда не понятно, что это такое https://github.com/NVIDIA/DLSS
это сам DLSS SDK. Там же находится пдфка с гайдом по интеграции.
https://github.com/NVIDIA/DLSS/blob/main/doc/DLSS_Programming_Guide_Release.pdf
HolyDel
> это сам DLSS SDK.
короче, скоро выходит в продажу 5090, буду требовать себе апгрейд и внедрять в фото-рендер всякие DLSS4 с мульти фрейм генерейшенами и прочим блэк джеком и шлюхами :)
P.S.: я вообще делаю ставку на nvidia, т.к. AMD в плане GPU совсем сдулся в последнее время, ну то есть на старте определяешь, если крутая nvidia - активируешь весь этот фарш, а на AMD пока забью, может быть как-нибудь потом руки дойдут... Вообще, блин, Вулкан - на то и вулкан, что бы иметь общее для всех GPU расширение в ядре, но его нет для DLSS...
THE_MASTER
Ставки делают в казино ... А тут нужно работать