kookboy
deepin
2025-11-18 18:59 巧了,我的ollama升级到version 0.12.11,它刚好支持Vulkan加速,不过,貌似我也用不到。
Reply Like 0 View the author
巧了,我的ollama升级到version 0.12.11,它刚好支持Vulkan加速,不过,貌似我也用不到。
巧了,我的ollama升级到version 0.12.11,它刚好支持Vulkan加速,不过,貌似我也用不到。
大模型不都是一键部署直接调用,傻瓜式的,哪里还管这些。
Popular Ranking
ChangePopular Events
More
2025年11月1日的时候,WineHQ发布了wine 10.18 开发版,里面有一条特性:OpenGL memory mapping using Vulkan in WoW64 mode.
更新日志如下:
核心目标:用 Vulkan 来做 OpenGL 的事
因此,开发者希望既保留应用程序的 OpenGL 代码(为了兼容性或减少重写成本),又能享受到 Vulkan 的性能优势。这就引出了“在 Vulkan 之上实现 OpenGL”的技术。
关键技术:OpenGL 内存映射
这里的“内存映射”并非指简单的文件内存映射,而是指 在 Vulkan 的底层内存和 OpenGL 的抽象对象之间建立桥梁。简单来说:OpenGL 的 API 调用被“翻译”或“映射”为对 Vulkan 对象和内存的操作。
在图形编程中,我们需要在 GPU 上创建和操作各种资源,例如:
差异对比:
VkDeviceMemory),然后在其上创建缓冲区 (VkBuffer) 或图像 (VkImage),并自己管理数据的上传和同步。glGenBuffers(),glBufferData()这样的高级函数来创建和管理这些资源。驱动程序帮你处理底层的内存分配和数据传输。“内存映射”就是指:当一个 OpenGL 应用程序调用
glBufferData时,底层的 Vulkan 实现(如 Mesa 的 Zink 驱动或 NVIDIA/AMD 的专有驱动)并不会真的去调用老旧的 OpenGL 驱动,而是会:VkDeviceMemory并创建对应的VkBuffer。VkBuffer。VkCommandBuffer来记录操作)。运行环境:WoW64 模式
WoW64 是 Windows-on-Windows 64-bit 的缩写。它是 Windows 操作系统的一个子系统,允许 32位应用程序 在 64位 Windows 上运行。
为什么需要它?
因为操作系统架构(64位)和应用程序架构(32位)不同。CPU 指令、指针大小、内存寻址方式都不同。WoW64 负责处理这些差异,包括重定向文件系统访问(`C:\Program Files (x86)\` vs `C:\Program Files\`)、注册表访问,以及最重要的——将 32位的系统调用转换成 64位内核能理解的形式。
“OpenGL memory mapping using Vulkan in WoW64 mode” 这句话描述的应用程序很可能是一个 32位的 OpenGL 程序,运行在 64位的 Windows系统上。它想要使用一个底层由 Vulkan 实现的 OpenGL 驱动。
所以,“在 WoW64 模式下” 意味着整个复杂的“OpenGL on Vulkan”的映射和翻译过程,都需要通过 WoW64 这个兼容层来进行,这增加了一层额外的复杂性,但对于运行旧的 32 位应用程序至关重要。
分析总结
“在 WoW64 模式下使用 Vulkan 进行 OpenGL 内存映射” 指的是:
一个 32 位的 OpenGL 应用程序,在 64 位的 Windows 系统(通过 WoW64 子系统兼容)上运行时,其图形调用并非由传统的 OpenGL 图形驱动处理,而是由一个特殊的“转换层”或“驱动”来处理。这个转换层将应用程序发出的高级 OpenGL 指令(尤其是关于创建和管理 GPU 内存资源的指令,如创建缓冲区、纹理等)实时地翻译成更低级、更高效的 Vulkan API 调用,并在 Vulkan 层面直接分配和操作真正的 GPU 内存资源。
这样做的最终目的是让这个老的 32 位 OpenGL 程序能够享受到现代 Vulkan 图形接口带来的高性能和低开销,而无需重写应用程序本身的代码。
举个例子:
其实NVIDIA和AMD 公司也在其官方驱动中探索类似技术,用共同的 Vulkan 底层来同时支持 OpenGL 和 Vulkan API,以优化驱动开发和性能。