Wine Adds MESA_map_buffer_client_pointer Support for 32-bit OpenGL Under WoW64
Translated by a model; the original is in Russian.
An initiative led by CodeWeavers this year has paid off: Wine has merged code that improves OpenGL support under WoW64. This mode lets 32-bit Windows applications and games run using 64-bit system libraries.
The problem
The OpenGL extension MESA_map_buffer_client_pointer was proposed back in February specifically for 32-bit Windows programs running on Wine with 64-bit libraries. Until now, Wine set up separate CPU-side storage for a buffer and copied its contents over when glUnmapBuffer was called. For persistent maps, it relied on Vulkan resource sharing.
Legacy applications and games, however, manage buffer uploads on their own side. Making these legacy maps work at reasonable speed required a different mechanism.
How the extension works
MESA_map_buffer_client_pointer lets Wine hand the driver 32-bit address ranges onto which buffer objects can then be mapped. This gives 32-bit code direct access to the buffer without an intermediate copy.
The extension itself was merged into Mesa in March. The Wine-side support has only now been merged: the relevant merge request implements WoW64 OpenGL buffer mapping in Wine's 32-bit OpenGL code.
When and where it will work
The feature will ship in Wine 11.21, due on Friday. Driver support is still incomplete. Zink has already merged the extension, and a merge request is open for the RadeonSI Gallium3D driver. No other Mesa drivers have pending merge requests yet.
Source: Phoronix
Comments
Sign in, to comment.