本周,在定于下周五发布的Wine 9.4开发版本之前,合并了对使用新的Vulkan VK_EXT_MAP_Memory_Placed扩展的支持,以克服Windows 64位(WOW64)上的游戏/应用程序的性能损失。
正如在2月中旬提到的,当时Vulkan 1.3.278发布通过VK_EXT_MAP_MEMORY_PLACED扩展,这一新功能将有助于葡萄酒/蒸汽游戏。由Valve、AMD、NVIDIA、Collabora和CodeWeivers设计的扩展是与Wine on the Mind一起工作的。VK_EXT_MAP_MEMORY_PLACED允许请求将内存映射放置在特定的虚拟地址。这是Wine开发人员为了更好地支持32位Windows应用程序而要求的,同时使用64位Vulkan驱动程序。如果64位Vulkan驱动程序从vkMapMemory返回一个指针,而32位API使用者由于超出了32位范围而无法处理该指针,那么就有问题了。但通过利用VK_EXT_MAP_MEMORY_PLACES来确保内存对象在可接受的范围内,可以处理Wine上的32位Windows软件,从而使内存对象不会超出32位范围。
这个合并请求对于在WOW64上使用VK_EXT_MAP_MEMORY_PLACES进行内存映射,本周进行了合并,并将在下周五的Wine 9.4中找到。该合并请求解释了:
有了新的扩展,我们可以正确地实现WOW64,而不需要VK_EXT_EXTERNAL_MEMORY_HOST。这不仅更正确,而且性能更高(基本上消除了Vulkan WOW64的性能损失)。
NVIDIA Vulkan测试版驱动程序已经支持VK_EXT_MAP_MEMORY_PLACED,而RADV支持合并刚刚过去的这个星期五。NVK支持 for this extension is also found in Mesa 24.1-devel while so far I haven't seen any Intel ANV Vulkan driver patches for VK_EXT_map_memory_placed.