WineMetalGL is a general x86_64 Wine OpenGL conformance adapter. This reference backend translates Wine OpenGL calls to Metal on macOS 15 or newer and can be integrated with any compatible Wine build. It supports x86_64 and i386 Windows programs together in a WoW64 prefix.
These are implementation-coverage estimates, not a claim that every Khronos
case passes. The detailed scope, tests, and unsupported behavior are in
docs/conformance.md.
| OpenGL level | Implementation | Short description |
|---|---|---|
| 1.0 | 100% | Compatibility entry points and basic immediate mode |
| 1.1 | 100% | Textures, arrays, and legacy objects |
| 1.2 | 95% | Core legacy rendering and transfer paths |
| 1.3 | 95% | Multitexture and texture-coordinate paths |
| 1.4 | 90% | Blending, fog, point/line state, and legacy queries |
| 1.5 | 90% | Buffer objects, queries, and sync foundations |
| 2.0 | 90% | GLSL 1.10/1.20, shaders, FBO, and vertex attributes |
| 2.1 | 85% | Compatibility GLSL and fixed-function integration |
| 3.0 | 97% | Core resources, FBOs, instancing, textures, and GLSL 3.30 |
| 3.1 | 96% | UBOs, primitive restart, texture promotion, and indirect work |
| 3.2 | 99% | MSAA, geometry-adjacent paths, and expanded FBO behavior |
| 3.3 | 93% | Transfer/shader/resource paths |
| 4.0 | 45% | Tessellation compilation and limited draw support |
| 4.1 | 35% | Separable programs and pipeline lifecycle |
| 4.2 | 25% | Image, atomic, and expanded texture/resource subsets |
| 4.3 | 20% | Compute, SSBO, image, and reflection subsets |
| 4.4 | 15% | Limited newer resource and robustness entry points |
| 4.5 | 10% | Selected DSA and robustness entry points |
| 4.6 | 0% | Not implemented or claimed |
cmake --preset release
cmake --build --preset release -j8The output is build/release/metalsharp-opengl.dylib. The historical filename is the sidecar ABI name; it does not require a
specific Wine distribution or application runtime. It must contain only one architecture: x86_64.
./scripts/stage-wine.sh /path/to/wine-build
./scripts/stage-host-libs.sh /path/to/wine-runtime
./scripts/stage-release.sh /path/to/wine-build /path/to/outputThe Wine integration bundles artifacts/wine-driver/winemetalgl.conf next to
winemac.so. It enables the experimental WineMetalGL path by default and caps
reported/requested OpenGL support at 3.3:
winemetalgl.enabled = 1
winemetalgl.experimental = 1
winemetalgl.maxFeatureLevel = 3.3Set WINEMETALGL_CONFIG_FILE to override the bundled configuration. Explicit
WINEMETALGL, WINEMETALGL_EXPERIMENTAL, and
WINEMETALGL_MAX_FEATURE_LEVEL environment variables take precedence. For the
bounded GL 4.0 API-coverage run, the runner explicitly raises the max level to
4.0; the default remains 3.3.
The WoW64 probe is run against any compatible Wine installation:
WINEMETALGL_WINE_RUNTIME=/path/to/wine-install \
./tests/wine/probe-opengl-wow64.shGitHub Actions runs the same reproducible build on macOS 15 or newer, checks
the x86_64 artifact, runs the native translation probe, and uploads the built
sidecar. The workflow is .github/workflows/build.yml.
The standalone source is MIT licensed. Wine integration is LGPL-2.1;
third-party shader compiler licenses are in LICENSES/.