Vulkan 1.3.278 выпущен с двумя новыми расширениями — одно из них поможет Wine / Steam Play.
Vulkan 1.3.278 был опубликован 16.02.2024, и помимо обычных исправлений/разъяснений в документации, в нем также появились два новых расширения Vulkan.
Что нового в Vulkan 1.3.278
Первое новое расширение Vulkan в версии 1.3.278 — VK_EXT_map_memory_placed. Расширение VK_EXT_map_memory_placed, над которым работали Collabora, AMD, NVIDIA, Valve и CodeWeavers, должно помочь в играх под Linux с Wine / Steam Play (Proton) от Valve. VK_EXT_map_memory_placed позволяет запросить размещение карты памяти по определенному виртуальному адресу. Возможность размещения объекта VkDeviceMemory в адресном пространстве конкретного клиента разрабатывалась на протяжении большей части прошлого года. Это было сделано по просьбе разработчиков Wine для улучшения поддержки 32-битных Windows-приложений при использовании 64-битных драйверов Vulkan.
Если 64-битный драйвер Vulkan возвращает из vkMapMemory указатель, с которым 32-битный потребитель API не может работать из-за того, что он находится за пределами 32-битного диапазона, возникают проблемы. Но, используя VK_EXT_map_memory_placed для обеспечения того, чтобы объекты памяти находились в допустимом диапазоне, 32-битное программное обеспечение Windows в Wine может быть обработано так, что объекты памяти не будут выходить за пределы 32-битного диапазона.
Это расширение VK_EXT_map_memory_placed также упоминалось в контексте MoltenVK для поддержки Vulkan API на устройствах Apple Metal для iOS/macOS, что это расширение будет полезно и там, в том числе при запуске поддержки DXVK.
Другим новым расширением, получившим сегодняшнее крещение, является VK_NV_shader_atomic_float16_vector. Это расширение от производителя NVIDIA — VK_NV_shader_atomic_float16_vector — позволяет шейдерам выполнять атомарные операции сложения / минимизации / максимизации / обмена над 2- и 4-компонентными векторами формата float16. Аналогично у NVIDIA уже есть расширение OpenGL GL_NV_shader_atomic_fp16_vector с похожими возможностями.
Последняя версия документации по Vulkan доступна на сайте Vulkan.org.