Skip to content

About

OpenGL -> Metal Translation For Apple Silicon. Works With a x86_64 Wine, Arm64 / Arm64EC Wine, And Native Arm64 Processes.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

55 stars

Watchers

0 watching

Forks

WineMetalGL

Metal WineMetalGL build CodeQL

What It Is:

WineMetalGL is a replacement to Apple's own OpenGL.Framework (Deprecated in 2018), which allows both native Arm64 applications and Wine Apps to receive and use OpenGL 1.0 -> OpenGL 4.6. It is fully conformant with the Khronos GL-CTS Test Suite, and also supports GLES 2 through 3.2. WineMetalGL is OpenGL -> Metal.

Quick Start:

WineMetalGL's main method of installation is with the DMG. It will help you install it into any Wine Prefix / Crossover Bottle. If a new version is released, the application detects this and can update your app and installed runtime to the latest available version. Otherwise, use the scripts from releases in combination with your preferred download (Arm64, x86_64). The below table explains the apps capabilities;

From 3.7.0, WineMetalGL also runs in native arm64 Wine: CrossOver 27's arm64 bottles and MetalSharp's Wine with FEX, for native ARM64, x86_64 and 32-bit programs. install-wine-module.sh and install-crossover.sh work out which kind of Wine or bottle they install into, and use or download the matching package (winemetalgl-<version>-x86_64 or winemetalgl-<version>-arm64).


Feature Use-Case
Install Install WineMetalGL Into a Wine Found on Your Mac (Its Default Prefix) & Enable / Disable It
Custom Install Choose Any Wine & Prefix in Finder to Install WineMetalGL Into
Install Crossover Install WineMetalGL Into a Crossover Bottle Found Anywhere (Any Copy of CrossOver, or None) & Enable / Disable It
Game Fixes Enable Quick Fixes For Tested Games or Disable Them
x87 Acceleration Older Titles Use x87 Calls: Enable This Option For Older 32-Bit Games
Runtime Logs Enable Logs Before Launching to See What Fails and Submit an Issue Report
WineMetalGL Settings

The core,libwinemetalgl.dylib, has no dependency on Apple's OpenGL. It compiles GLSL with glslang and SPIRV-Cross to the Metal Shading Language and implements the GL state machine, resources and draws on Metal. The Wine modules (winemetalgl.dll / winemetalgl.so, with a forwarding opengl32.dll in the prefix) carries WGL and every GL call to it through the driver ABI in include/winemetalgl/driver.h.

Wine itself is not patched or rebuilt (Build it yourself).

Conformance totals | (Test suite)

OpenGLConformance %Unsupported %
3.099.88%2.28%
3.1100%2.38%
3.2100%0.69%
3.3100%1.11%
4.099.99%10.11%
4.199.99%10.08%
4.299.98%9.74%
4.399.97%15.60%
4.4covered by KHR-GL46-
4.5covered by KHR-GL46-
4.699.98%22.33%
GLESConformance %Unsupported %
2.0100%0.60%
3.0100%0.83%
3.199.98%1.24%
3.299.95%0.64%

Docs

  • Conformance results: every Khronos CTS run per OpenGL version, configuration and runner, with the reason for each failing case.
  • Unsupported: what WineMetalGL does not support and why: the gaps in the compatibility profile, what the Unsupported % counts, the failing CTS cases, and every case the CTS reports NotSupported.
  • Test suite: each test suite, how to run it, and roughly how long it takes.
  • Build it yourself: building the core and the Wine module, installing them into a Wine 11.x, and checking that a program uses them.
  • Performance: frame times against Apple's OpenGL.
  • Logging: log levels and categories, the log file, and crash reports.
  • List Of OpenGL Games: PCGamingWiki's list of games that render with OpenGL.

Also: the game corpus results, releasing, and the design decisions.

Contributing: CONTRIBUTING.md. Security reports: SECURITY.md. Code of conduct: CODE_OF_CONDUCT.md.

License

Copyright (c) 2026 MetalSharp. WineMetalGL is licensed under the GNU Lesser General Public License, version 3 or (at your option) any later version (LGPL-3.0-or-later): LICENSE, which adds to the GNU General Public License version 3 in LICENSES/GPL-3.0.txt. Releases up to 2.1.0 were published under the MIT License.

The files of the Wine module adapted from Wine (src/wine/pe/wgl_formats.c, src/wine/pe/wgl_fonts.c) are LGPL-2.1-or-later, like Wine (LICENSES/Wine-LGPL-2.1.txt). The vendored glslang and SPIRV-Cross keep their own licenses (LICENSES/).

About

OpenGL -> Metal Translation For Apple Silicon. Works With a x86_64 Wine, Arm64 / Arm64EC Wine, And Native Arm64 Processes.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

55 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages