Vulkan 1.3.278是今天早上发布的,除了通常的文档更正/澄清外,还有两个新的Vulkan扩展。
V1.3.278的第一个新的Vulkan扩展是VK_EXT_MAP_MEMORY_PLACED。由Collabora、AMD、NVIDIA、Valve和CodeWever开发的VK_EXT_MAP_MEMORY_PLAGE扩展应该有助于使用Wine/Valve的STeam Play(Proton)进行Linux游戏。VK_EXT_MAP_MEMORY_PLACED允许请求将内存映射放置在特定的虚拟地址。在过去一年的大部分时间里,在特定客户端的地址空间拥有VkDeviceMemory对象一直在进行中。这是Wine开发人员为了更好地支持32位Windows应用程序而要求的,同时使用64位Vulkan驱动程序。如果64位Vulkan驱动程序从vkMapMemory返回一个指针,而32位API使用者由于超出了32位范围而无法处理该指针,那么就有问题了。但通过利用VK_EXT_MAP_MEMORY_PLACES来确保内存对象在可接受的范围内,可以处理Wine上的32位Windows软件,从而使内存对象不会超出32位范围。
这个VK_EXT_MAP_MEMORY_PLACED扩展也是在MoltenVK for Vulkan API Support on Apple‘s Metals for iOS/MacOS Device的上下文中提出的,这个扩展在那里也是有用的,包括如果获得DXVK支持的话。
今天命名的另一个新扩展是VK_NV_SHADER_ATOM_FLOAT16_VECTOR。此带有VK_NV_SHADER_ATOM_FLOAT16_VECTOR的NVIDIA供应商扩展允许着色器对FLOAT16格式的2分量和4分量向量执行原子相加/最小/最大/交换操作。NVIDIA同样已经具有类似功能的GL_NV_SHADER_ATOM_FP16_VECTOR OpenGL扩展。
最新的Vulkan文档可从Vulkan.org.