# Failing to load Mesa3D on macOS instead of macOS provided OpenGL library

**URL:** <https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408>\
**Category:** OpenGL\
**Created:** [March 15, 2022, 4:04pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408 "2022-03-15T16:04:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 15, 2022, 4:04pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/1 "2022-03-15T16:04:36Z")

</div>

Hi,

I am working on a (java) software running on macOS for which I want to use MESA3D software rendering instead of MacOS provided native GL. **Despite explicitely loading MESA libGL.dylib before anything else, I got the Apple Metal renderer used (and the macOS libGL loaded as well)**.

To force the use of MESA3D, I start my program with the following environment variable wich is supposed to ensure that Mesa’s libGL will be loaded instead of macOS libGL.

`DYLD_INSERT_LIBRARIES=/opt/homebrew/Cellar/mesa/21.3.7/lib/libGL.dylib`

My software then queries the OpenGL renderer to verify if I load Mesa’s GL or Apple GL.

`gl.glGetString(GL.GL_RENDERER)` = `Apple M1`

instead of the expected

`gl.glGetString(GL.GL_RENDERER)` = `llvmpipe (...)`

which is what I got on Ubuntu and Windows when MESA3D is properly enabled for software rendering.

To check which library is loaded first I enable

```auto
DYLD_PRINT_LIBRARIES=YES
DYLD_PRINT_BINDINGS=YES

```

I then can read logs in console

```auto
dyld: loaded: <3C537115-FC06-3645-A5B9-7300A12C63C3> /Library/Java/JavaVirtualMachines/zulu17.30.15-ca-jdk17.0.1-macosx_aarch64/zulu-17.jdk/Contents/Home/bin/java
dyld: loaded: <3E35E317-C590-329B-80B6-EF196B72D3B4> /opt/homebrew/Cellar/mesa/21.3.7/lib/libGL.dylib
dyld: loaded: <B0979A3D-EEF8-32FE-AF37-643FA12FEFA1> /usr/lib/libz.1.dylib
dyld: loaded: <A543B77E-5CD0-3214-A571-85774207BF2C> /Library/Java/JavaVirtualMachines/zulu17.30.15-ca-jdk17.0.1-macosx_aarch64/zulu-17.jdk/Contents/Home/bin/../lib/libjli.dylib
dyld: loaded: <72158147-592E-31AB-A1D5-800AC618735D> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
...
dyld: loaded: <A216E56E-4166-3753-9DDA-285369A91C16> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
dyld: loaded: <5DC8E881-0092-37CE-945E-43392DC84245> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
dyld: loaded: <320BE048-A77E-3495-B42D-5E5B1ED6C035> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
dyld: loaded: <46B15C22-B004-3BE3-BE18-B070FBDCF2CF> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
...
dyld: bind: libGL.dylib:0x10489C720 = libglapi.0.dylib:__glapi_tls_Dispatch, *0x10489C720 = 0x104928108
dyld: bind: libGL.dylib:0x104894018 = libsystem_pthread.dylib:___chkstk_darwin, *0x104894018 = 0x1994FA5E4
dyld: bind: libGL.dylib:0x104894020 = libsystem_c.dylib:___stack_chk_guard, *0x104894020 = 0x20482C320
dyld: bind: libGL.dylib:0x104894028 = libsystem_c.dylib:___stderrp, *0x104894028 = 0x1F841BFA0
dyld: bind: libGL.dylib:0x10489C708 = libdyld.dylib:__tlv_bootstrap, *0x10489C708 = 0x19952169C
dyld: bind: libGL.dylib:0x104894030 = libdyld.dylib:dyld_stub_binder, *0x104894030 = 0x19951BBF8
dyld: bind: libGL.dylib:0x104894000 = libX11.6.dylib:__XLockMutex_fn, *0x104894000 = 0x104A21EC8
dyld: bind: libGL.dylib:0x104894008 = libX11.6.dylib:__XUnlockMutex_fn, *0x104894008 = 0x104A21ED0
dyld: bind: libGL.dylib:0x104894010 = libX11.6.dylib:__Xglobal_lock, *0x104894010 = 0x104A21EB0
...
dyld: loaded: <FEE476A4-722C-32E9-8AEF-E9F475BDD03A> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine
dyld: loaded: <9202ACAB-D360-3F63-90C1-3CAB807A279D> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
dyld: loaded: <A66467D5-806E-33EC-98A5-CF2E04E978E5> /System/Library/Extensions/AppleMetalOpenGLRenderer.bundle/Contents/MacOS/AppleMetalOpenGLRenderer
dyld: fixup: AppleMetalOpenGLRenderer:0x2a1aa8000 = 0x19959700c
dyld: fixup: AppleMetalOpenGLRenderer:0x2a1aa8008 = 0x19957e3cc
dyld: fixup: AppleMetalOpenGLRenderer:0x2a1aa8010 = 0x19957f54c
dyld: fixup: AppleMetalOpenGLRenderer:0x2a1aa8018 = 0x1995822ec
...
dyld: loaded: <B58FF098-8789-3D4B-98FD-78A0B1F549D0> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
dyld: loaded: <B7F38BA5-84F4-3FC2-BF97-EA05FEAAAD16> /System/Library/Extensions/AGXMetal13_3.bundle/Contents/MacOS/AGXMetal13_3
dyld: loaded: <9A488340-95B1-3742-9D23-6F14BEF6CCDD> /System/Library/PrivateFrameworks/IOGPU.framework/Versions/A/IOGPU
dyld: fixup: AGXMetal13_3:0x2a20ec000 = 0x1feefa078
dyld: fixup: AGXMetal13_3:0x2a20ec008 = 0x1feef9f88
dyld: fixup: AGXMetal13_3:0x2a20ec010 = 0x1f8816e90
dyld: fixup: AGXMetal13_3:0x2a20ec018 = 0x1f8816e40
...
dyld: loaded: <CF360CA0-E351-316F-A250-4D1C290B5437> /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libmetal_timestamp.dylib
dyld: lazy bind: libjogl_desktop.dylib:0x2A06B8038 = OpenGL:_CGLDescribeRenderer, *0x2A06B8038 = 0x1DB4FF898
dyld: lazy bind: libjogl_desktop.dylib:0x2A06B8260 = libsystem_malloc.dylib:_malloc, *0x2A06B8260 = 0x1993219A4
dyld: lazy bind: libjogl_desktop.dylib:0x2A06B8138 = libsystem_c.dylib:___memset_chk, *0x2A06B8138 = 0x1994453C4
dyld: lazy bind: libjogl_desktop.dylib:0x2A06B8058 = OpenGL:_CGLDestroyRendererInfo, *0x2A06B8058 = 0x1DB4FF850
dyld: lazy bind: libnativewindow_macosx.dylib:0x2A0638018 = SkyLight:_CGDisplayCurrentMode, *0x2A0638018 = 0x19DFFA0B8
dyld: lazy bind: libnativewindow_macosx.dylib:0x2A0638000 = CoreFoundation:_CFDictionaryGetValue, *0x2A0638000 = 0x1995822EC
dyld: lazy bind: libnativewindow_macosx.dylib:0x2A0638008 = CoreFoundation:_CFNumberGetValue, *0x2A0638008 = 0x199597234
dyld: lazy bind: libjogl_desktop.dylib:0x2A06B8080 = OpenGL:_CGLLockContext, *0x2A06B8080 = 0x1DB4FE4E8
dyld: lazy bind: libjogl_desktop.dylib:0x2A06B80B0 = OpenGL:_CGLUnlockContext, *0x2A06B80B0 = 0x1DB4FE528
dyld: lazy bind: libvtkRenderingOpenGL2Java.jnilib:0x16F6A0E78 = libvtkRenderingOpenGL2-9.1.1.dylib:__ZN28vtkGenericOpenGLRenderWindow3NewEv, *0x16F6A0E78 = 0x287FEC204
...

```

I am surprised that libGL provided by macOS gets loaded after the one provided by Mesa which is said to be loaded first.

**Any idea how I can prevent Metal from handling OpenGL in favor of Mesa3D?**

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 16, 2022, 1:59am UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/2 "2022-03-16T01:59:40Z")

</div>

Trying the same on a macOS 10.12 lead to a different error where MESA GL and macOS GL seam to conflict with a DYLD error

```auto
dyld: Symbol not found: _gll_noop
  Referenced from: /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
  Expected in: /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
 in /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL

```

Complete DYLD logs :

```auto
dyld: loaded: /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin/java
dyld: loaded: /usr/lib/libz.1.dylib
dyld: loaded: /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin/../lib/libjli.dylib
dyld: loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
dyld: loaded: /System/Library/Frameworks/Security.framework/Versions/A/Security
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
dyld: loaded: /usr/lib/libSystem.B.dylib
dyld: loaded: /usr/lib/system/libcache.dylib
dyld: loaded: /usr/lib/system/libcommonCrypto.dylib
dyld: loaded: /usr/lib/system/libcompiler_rt.dylib
dyld: loaded: /usr/lib/system/libcopyfile.dylib
dyld: loaded: /usr/lib/system/libcorecrypto.dylib
dyld: loaded: /usr/lib/system/libdispatch.dylib
dyld: loaded: /usr/lib/system/libdyld.dylib
dyld: loaded: /usr/lib/system/libkeymgr.dylib
dyld: loaded: /usr/lib/system/liblaunch.dylib
dyld: loaded: /usr/lib/system/libmacho.dylib
dyld: loaded: /usr/lib/system/libquarantine.dylib
dyld: loaded: /usr/lib/system/libremovefile.dylib
dyld: loaded: /usr/lib/system/libsystem_asl.dylib
dyld: loaded: /usr/lib/system/libsystem_blocks.dylib
dyld: loaded: /usr/lib/system/libsystem_c.dylib
dyld: loaded: /usr/lib/system/libsystem_configuration.dylib
dyld: loaded: /usr/lib/system/libsystem_coreservices.dylib
dyld: loaded: /usr/lib/system/libsystem_coretls.dylib
dyld: loaded: /usr/lib/system/libsystem_dnssd.dylib
dyld: loaded: /usr/lib/system/libsystem_info.dylib
dyld: loaded: /usr/lib/system/libsystem_kernel.dylib
dyld: loaded: /usr/lib/system/libsystem_m.dylib
dyld: loaded: /usr/lib/system/libsystem_malloc.dylib
dyld: loaded: /usr/lib/system/libsystem_network.dylib
dyld: loaded: /usr/lib/system/libsystem_networkextension.dylib
dyld: loaded: /usr/lib/system/libsystem_notify.dylib
dyld: loaded: /usr/lib/system/libsystem_platform.dylib
dyld: loaded: /usr/lib/system/libsystem_pthread.dylib
dyld: loaded: /usr/lib/system/libsystem_sandbox.dylib
dyld: loaded: /usr/lib/system/libsystem_secinit.dylib
dyld: loaded: /usr/lib/system/libsystem_symptoms.dylib
dyld: loaded: /usr/lib/system/libsystem_trace.dylib
dyld: loaded: /usr/lib/system/libunwind.dylib
dyld: loaded: /usr/lib/system/libxpc.dylib
dyld: loaded: /usr/lib/libobjc.A.dylib
dyld: loaded: /usr/lib/libc++abi.dylib
dyld: loaded: /usr/lib/libc++.1.dylib
dyld: loaded: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
dyld: loaded: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
dyld: loaded: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
dyld: loaded: /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
dyld: loaded: /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
dyld: loaded: /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
dyld: loaded: /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
dyld: loaded: /usr/lib/libenergytrace.dylib
dyld: loaded: /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
dyld: loaded: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
dyld: loaded: /usr/lib/libScreenReader.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
dyld: loaded: /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
dyld: loaded: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
dyld: loaded: /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
dyld: loaded: /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
dyld: loaded: /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
dyld: loaded: /usr/lib/libicucore.A.dylib
dyld: loaded: /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
dyld: loaded: /usr/lib/libauto.dylib
dyld: loaded: /usr/lib/libxml2.2.dylib
dyld: loaded: /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
dyld: loaded: /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
dyld: loaded: /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
dyld: loaded: /usr/lib/liblangid.dylib
dyld: loaded: /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
dyld: loaded: /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
dyld: loaded: /usr/lib/libDiagnosticMessagesClient.dylib
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
dyld: loaded: /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
dyld: loaded: /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
dyld: loaded: /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
dyld: loaded: /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
dyld: loaded: /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
dyld: loaded: /usr/lib/libarchive.2.dylib
dyld: loaded: /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
dyld: loaded: /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
dyld: loaded: /usr/lib/libCRFSuite.dylib
dyld: loaded: /usr/lib/libbsm.0.dylib
dyld: loaded: /usr/lib/system/libkxld.dylib
dyld: loaded: /usr/lib/libcoretls.dylib
dyld: loaded: /usr/lib/libcoretls_cfhelpers.dylib
dyld: loaded: /usr/lib/libOpenScriptingUtil.dylib
dyld: loaded: /usr/lib/libpam.2.dylib
dyld: loaded: /usr/lib/libsqlite3.dylib
dyld: loaded: /usr/lib/libxar.1.dylib
dyld: loaded: /usr/lib/libbz2.1.0.dylib
dyld: loaded: /usr/lib/liblzma.5.dylib
dyld: loaded: /usr/lib/libnetwork.dylib
dyld: loaded: /usr/lib/libpcap.A.dylib
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
dyld: loaded: /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
dyld: loaded: /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
dyld: loaded: /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
dyld: loaded: /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
dyld: loaded: /usr/lib/libmecabra.dylib
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
dyld: loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
dyld: loaded: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
dyld: loaded: /usr/lib/libcompression.dylib
dyld: loaded: /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
dyld: loaded: /usr/lib/libcups.2.dylib
dyld: loaded: /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
dyld: loaded: /System/Library/Frameworks/GSS.framework/Versions/A/GSS
dyld: loaded: /usr/lib/libresolv.9.dylib
dyld: loaded: /usr/lib/libiconv.2.dylib
dyld: loaded: /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
dyld: loaded: /usr/lib/libheimdal-asn1.dylib
dyld: loaded: /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
dyld: loaded: /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
dyld: loaded: /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
dyld: loaded: /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
dyld: loaded: /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
dyld: loaded: /usr/lib/libmarisa.dylib
dyld: loaded: /usr/lib/libChineseTokenizer.dylib
dyld: loaded: /usr/lib/libcmph.dylib
dyld: loaded: /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
dyld: loaded: /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
dyld: loaded: /usr/lib/libxslt.1.dylib
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
dyld: loaded: /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
dyld: loaded: /System/Library/Frameworks/Metal.framework/Versions/A/Metal
dyld: loaded: /usr/lib/libate.dylib
dyld: loaded: /System/Library/PrivateFrameworks/GPUCompiler.framework/libmetal_timestamp.dylib
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
dyld: loaded: /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
dyld: loaded: /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
dyld: loaded: /usr/lib/libFosl_dynamic.dylib
dyld: loaded: /System/Library/PrivateFrameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
dyld: loaded: /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
dyld: loaded: /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
dyld: loaded: /usr/local/Cellar/mesa/21.1.2/lib/libGL.dylib
dyld: loaded: /usr/local/Cellar/mesa/21.1.2/lib/libglapi.0.dylib
dyld: loaded: /usr/local/opt/libx11/lib/libX11.6.dylib
dyld: loaded: /usr/local/opt/libxcb/lib/libxcb-glx.0.dylib
dyld: loaded: /usr/local/opt/libxcb/lib/libxcb.1.dylib
dyld: loaded: /usr/local/opt/libx11/lib/libX11-xcb.1.dylib
dyld: loaded: /usr/local/opt/libxext/lib/libXext.6.dylib
dyld: loaded: /usr/lib/libXplugin.1.dylib
dyld: loaded: /usr/local/opt/libxau/lib/libXau.6.dylib
dyld: loaded: /usr/local/opt/libxdmcp/lib/libXdmcp.6.dylib
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
dyld: loaded: /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
dyld: loaded: /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
dyld: loaded: /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
dyld: loaded: /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
dyld: loaded: /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
dyld: loaded: /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
dyld: loaded: /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
dyld: loaded: /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
dyld: loaded: /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
dyld: loaded: /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
dyld: loaded: /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
dyld: loaded: /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
dyld: loaded: /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
dyld: loaded: /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
dyld: loaded: /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
dyld: loaded: /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
dyld: loaded: /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
dyld: loaded: /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
dyld: loaded: /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
dyld: Symbol not found: _gll_noop
  Referenced from: /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
  Expected in: /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
 in /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL

```

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 17, 2022, 2:57pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/3 "2022-03-17T14:57:41Z")

</div>

I verified that the problem happens both with MESA as provided by `brew install mesa`, as well as MESA built with the options suggested [here](https://docs.mesa3d.org/macos.html).

---

<div class="post-metadata">

**Author:** ![stefanovic](https://community.khronos.org/letter_avatar_proxy/v4/letter/s/2bfe46/32.png) [@stefanovic](https://community.khronos.org/u/stefanovic)\
**Post date:** [March 17, 2022, 3:47pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/4 "2022-03-17T15:47:14Z")

</div>

How is GL loaded in your java code? Do you use anything like glad or glew?

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 17, 2022, 4:28pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/5 "2022-03-17T16:28:42Z")

</div>

No, I am not using GLAD or GLEW.

I use JOGL to access OpenGL and query the renderer. [Here is a sample program demonstrating the issue](https://github.com/jzy3d/vtk-java-wrapper/blob/feature/vtkCPURendering_Windows/src/test/java/windows/opengl32/classloader/TestLoadMesaOnMacOS.java).

---

<div class="post-metadata">

**Author:** ![stefanovic](https://community.khronos.org/letter_avatar_proxy/v4/letter/s/2bfe46/32.png) [@stefanovic](https://community.khronos.org/u/stefanovic)\
**Post date:** [March 17, 2022, 5:21pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/6 "2022-03-17T17:21:33Z")

</div>

```auto
env.appendFirst("PATH", mesa, ";");

```

have you tried something like

```auto
env.appendFirst("DYLD_LIBRARY_PATH_PATH", mesa, ":");

```

instead?

(PATH is the windows equivalent to macos DYLD\_LIBRARY\_PATH)

---

<div class="post-metadata">

**Author:** ![Atemu](https://community.khronos.org/user_avatar/community.khronos.org/atemu/32/8162_2.png) [@Atemu](https://community.khronos.org/u/Atemu)\
**Post date:** [March 21, 2022, 12:42am UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/7 "2022-03-21T00:42:27Z")

</div>

I had the same issue and was able to resolve it by configuring mesa with `"-Dglx=xlib"` as mentioned in the short mesa macOS documentation I’m not allowed to link.

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 21, 2022, 12:21pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/8 "2022-03-21T12:21:17Z")

</div>

Thank you @stefanovic. The DYLD\_LIBRARY\_PATH was already given as environment variable in my Eclipse run configuration. Making the variable edition in the program did not change the result.

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 21, 2022, 12:30pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/9 "2022-03-21T12:30:14Z")

</div>

Thank you @Atemu. I was already using this flag mentioned in the Mesa MacOS documentation. I trashed my previous build and rebuilt the complete Mesa on macOS 11.4 (on Apple M1) with the below lines without success

```auto
meson builddir/ -Dosmesa=true -Dglx=xlib -Dgallium-drivers=swrast -Dprefix=/Users/Martin/Dev/jzy3d/external/osmesa
ninja -C builddir/ 
ninja -C builddir/ install

```

---

<div class="post-metadata">

**Author:** ![Atemu](https://community.khronos.org/user_avatar/community.khronos.org/atemu/32/8162_2.png) [@Atemu](https://community.khronos.org/u/Atemu)\
**Post date:** [March 24, 2022, 2:15pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/10 "2022-03-24T14:15:54Z")

</div>

Is your java app using X11 for Windowing or macOS’ Toolkits? Because I think Mesa only works with X11 on macOS.

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 24, 2022, 3:41pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/11 "2022-03-24T15:41:58Z")

</div>

Yes @Atemu .

In the case of macOS 10.12 I see x11 in the library loading history

```auto
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
dyld: loaded: /usr/local/Cellar/mesa/21.1.2/lib/libGL.dylib
dyld: loaded: /usr/local/Cellar/mesa/21.1.2/lib/libglapi.0.dylib
dyld: loaded: /usr/local/opt/libx11/lib/libX11.6.dylib
dyld: loaded: /usr/local/opt/libxcb/lib/libxcb-glx.0.dylib
dyld: loaded: /usr/local/opt/libxcb/lib/libxcb.1.dylib
dyld: loaded: /usr/local/opt/libx11/lib/libX11-xcb.1.dylib
dyld: loaded: /usr/local/opt/libxext/lib/libXext.6.dylib
dyld: loaded: /usr/lib/libXplugin.1.dylib
dyld: loaded: /usr/local/opt/libxau/lib/libXau.6.dylib
dyld: loaded: /usr/local/opt/libxdmcp/lib/libXdmcp.6.dylib

```

In the case of macOS 11.4 + Apple M1 as well

```auto
dyld: loaded: <320BE048-A77E-3495-B42D-5E5B1ED6C035> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
dyld: loaded: <46B15C22-B004-3BE3-BE18-B070FBDCF2CF> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
...
dyld: bind: libGL.dylib:0x10489C720 = libglapi.0.dylib:__glapi_tls_Dispatch, *0x10489C720 = 0x104928108
dyld: bind: libGL.dylib:0x104894018 = libsystem_pthread.dylib:___chkstk_darwin, *0x104894018 = 0x1994FA5E4
dyld: bind: libGL.dylib:0x104894020 = libsystem_c.dylib:___stack_chk_guard, *0x104894020 = 0x20482C320
dyld: bind: libGL.dylib:0x104894028 = libsystem_c.dylib:___stderrp, *0x104894028 = 0x1F841BFA0
dyld: bind: libGL.dylib:0x10489C708 = libdyld.dylib:__tlv_bootstrap, *0x10489C708 = 0x19952169C
dyld: bind: libGL.dylib:0x104894030 = libdyld.dylib:dyld_stub_binder, *0x104894030 = 0x19951BBF8
dyld: bind: libGL.dylib:0x104894000 = libX11.6.dylib:__XLockMutex_fn, *0x104894000 = 0x104A21EC8
dyld: bind: libGL.dylib:0x104894008 = libX11.6.dylib:__XUnlockMutex_fn, *0x104894008 = 0x104A21ED0
dyld: bind: libGL.dylib:0x104894010 = libX11.6.dylib:__Xglobal_lock, *0x104894010 = 0x104A21EB0

```

---

<div class="post-metadata">

**Author:** ![Atemu](https://community.khronos.org/user_avatar/community.khronos.org/atemu/32/8162_2.png) [@Atemu](https://community.khronos.org/u/Atemu)\
**Post date:** [March 24, 2022, 5:54pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/12 "2022-03-24T17:54:58Z")

</div>

Does it load the apple-native toolkits later? I have no idea how mesa interacts with X11 but it might not expose ogl properly eventhough it does load X11 libs?

Just a hunch though. Maybe try something that for sure uses X11. `glxgears` is working for me.

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 24, 2022, 6:33pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/13 "2022-03-24T18:33:56Z")

</div>

Yes, I see some debug info mentioning Metal.

I just installed MacPorts to install glxgears. I am not sure if it mixes properly with Homebrew but MacPorts install Mesa and xorg-x11. Anyway, after installing glxgears says it can’t open a display…

```bash
martin@osxm1 ~/D/j/external (master)> sudo port install glxgears

---> Computing dependencies for glxgears
The following dependencies will be installed: 
 expat
 gettext-runtime
 icu
 libiconv
 libxml2
 mesa
 xorg-libX11
 xorg-libXau
 xorg-libXdamage
 xorg-libXdmcp
 xorg-libXext
 xorg-libXfixes
 xorg-libXi
 xorg-libXmu
 xorg-libXt
 xorg-libXxf86vm
 xorg-libice
 xorg-libpthread-stubs
 xorg-libsm
 xorg-libxcb
 xorg-xcb-proto
 xorg-xorgproto
 xz
 zlib
Continue? [Y/n]: Y
---> Fetching archive for expat
---> Attempting to fetch expat-2.4.7_0.darwin_20.arm64.tbz2 from https://packages.macports.org/expat
---> Attempting to fetch expat-2.4.7_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/expat
---> Installing expat @2.4.7_0
---> Activating expat @2.4.7_0
---> Cleaning expat
---> Fetching archive for xorg-xorgproto
---> Attempting to fetch xorg-xorgproto-2021.5_0.darwin_20.noarch.tbz2 from https://packages.macports.org/xorg-xorgproto
---> Attempting to fetch xorg-xorgproto-2021.5_0.darwin_20.noarch.tbz2.rmd160 from https://packages.macports.org/xorg-xorgproto
---> Installing xorg-xorgproto @2021.5_0
---> Activating xorg-xorgproto @2021.5_0
---> Cleaning xorg-xorgproto
---> Fetching archive for xorg-libXau
---> Attempting to fetch xorg-libXau-1.0.9_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXau
---> Attempting to fetch xorg-libXau-1.0.9_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXau
---> Installing xorg-libXau @1.0.9_0
---> Activating xorg-libXau @1.0.9_0
---> Cleaning xorg-libXau
---> Fetching archive for xorg-libXdmcp
---> Attempting to fetch xorg-libXdmcp-1.1.3_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXdmcp
---> Attempting to fetch xorg-libXdmcp-1.1.3_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXdmcp
---> Installing xorg-libXdmcp @1.1.3_0
---> Activating xorg-libXdmcp @1.1.3_0
---> Cleaning xorg-libXdmcp
---> Fetching archive for xorg-libpthread-stubs
---> Attempting to fetch xorg-libpthread-stubs-0.4_0.darwin_20.noarch.tbz2 from https://packages.macports.org/xorg-libpthread-stubs
---> Attempting to fetch xorg-libpthread-stubs-0.4_0.darwin_20.noarch.tbz2.rmd160 from https://packages.macports.org/xorg-libpthread-stubs
---> Installing xorg-libpthread-stubs @0.4_0
---> Activating xorg-libpthread-stubs @0.4_0
---> Cleaning xorg-libpthread-stubs
---> Fetching archive for icu
---> Attempting to fetch icu-67.1_4.darwin_20.arm64.tbz2 from https://packages.macports.org/icu
---> Attempting to fetch icu-67.1_4.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/icu
---> Installing icu @67.1_4
---> Activating icu @67.1_4
---> Cleaning icu
---> Fetching archive for libiconv
---> Attempting to fetch libiconv-1.16_1.darwin_20.arm64.tbz2 from https://packages.macports.org/libiconv
---> Attempting to fetch libiconv-1.16_1.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/libiconv
---> Installing libiconv @1.16_1
---> Activating libiconv @1.16_1
---> Cleaning libiconv
---> Fetching archive for gettext-runtime
---> Attempting to fetch gettext-runtime-0.21_0.darwin_20.arm64.tbz2 from https://packages.macports.org/gettext-runtime
---> Attempting to fetch gettext-runtime-0.21_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/gettext-runtime
---> Installing gettext-runtime @0.21_0
---> Activating gettext-runtime @0.21_0
---> Cleaning gettext-runtime
---> Fetching archive for xz
---> Attempting to fetch xz-5.2.5_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xz
---> Attempting to fetch xz-5.2.5_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xz
---> Installing xz @5.2.5_0
---> Activating xz @5.2.5_0
---> Cleaning xz
---> Fetching archive for zlib
---> Attempting to fetch zlib-1.2.11_0.darwin_20.arm64.tbz2 from https://packages.macports.org/zlib
---> Attempting to fetch zlib-1.2.11_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/zlib
---> Installing zlib @1.2.11_0
---> Activating zlib @1.2.11_0
---> Cleaning zlib
---> Fetching archive for libxml2
---> Attempting to fetch libxml2-2.9.13_0.darwin_20.arm64.tbz2 from https://packages.macports.org/libxml2
---> Attempting to fetch libxml2-2.9.13_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/libxml2
---> Installing libxml2 @2.9.13_0
---> Activating libxml2 @2.9.13_0
---> Cleaning libxml2
---> Fetching archive for xorg-xcb-proto
---> Attempting to fetch xorg-xcb-proto-1.14.1_0+python310.darwin_20.noarch.tbz2 from https://packages.macports.org/xorg-xcb-proto
---> Attempting to fetch xorg-xcb-proto-1.14.1_0+python310.darwin_20.noarch.tbz2.rmd160 from https://packages.macports.org/xorg-xcb-proto
---> Installing xorg-xcb-proto @1.14.1_0+python310
---> Activating xorg-xcb-proto @1.14.1_0+python310
---> Cleaning xorg-xcb-proto
---> Fetching archive for xorg-libxcb
---> Attempting to fetch xorg-libxcb-1.14_0+python310.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libxcb
---> Attempting to fetch xorg-libxcb-1.14_0+python310.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libxcb
---> Installing xorg-libxcb @1.14_0+python310
---> Activating xorg-libxcb @1.14_0+python310
---> Cleaning xorg-libxcb
---> Fetching archive for xorg-libX11
---> Attempting to fetch xorg-libX11-1.7.3.1_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libX11
---> Attempting to fetch xorg-libX11-1.7.3.1_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libX11
---> Installing xorg-libX11 @1.7.3.1_0
---> Activating xorg-libX11 @1.7.3.1_0
---> Cleaning xorg-libX11
---> Fetching archive for xorg-libXfixes
---> Attempting to fetch xorg-libXfixes-6.0.0_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXfixes
---> Attempting to fetch xorg-libXfixes-6.0.0_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXfixes
---> Installing xorg-libXfixes @6.0.0_0
---> Activating xorg-libXfixes @6.0.0_0
---> Cleaning xorg-libXfixes
---> Fetching archive for xorg-libXdamage
---> Attempting to fetch xorg-libXdamage-1.1.5_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXdamage
---> Attempting to fetch xorg-libXdamage-1.1.5_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXdamage
---> Installing xorg-libXdamage @1.1.5_0
---> Activating xorg-libXdamage @1.1.5_0
---> Cleaning xorg-libXdamage
---> Fetching archive for xorg-libXext
---> Attempting to fetch xorg-libXext-1.3.4_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXext
---> Attempting to fetch xorg-libXext-1.3.4_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXext
---> Installing xorg-libXext @1.3.4_0
---> Activating xorg-libXext @1.3.4_0
---> Cleaning xorg-libXext
---> Fetching archive for xorg-libXi
---> Attempting to fetch xorg-libXi-1.7.10_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXi
---> Attempting to fetch xorg-libXi-1.7.10_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXi
---> Installing xorg-libXi @1.7.10_0
---> Activating xorg-libXi @1.7.10_0
---> Cleaning xorg-libXi
---> Fetching archive for xorg-libice
---> Attempting to fetch xorg-libice-1.0.10_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libice
---> Attempting to fetch xorg-libice-1.0.10_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libice
---> Installing xorg-libice @1.0.10_0
---> Activating xorg-libice @1.0.10_0
---> Cleaning xorg-libice
---> Fetching archive for xorg-libsm
---> Attempting to fetch xorg-libsm-1.2.3_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libsm
---> Attempting to fetch xorg-libsm-1.2.3_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libsm
---> Installing xorg-libsm @1.2.3_0
---> Activating xorg-libsm @1.2.3_0
---> Cleaning xorg-libsm
---> Fetching archive for xorg-libXt
---> Attempting to fetch xorg-libXt-1.2.1_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXt
---> Attempting to fetch xorg-libXt-1.2.1_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXt
---> Installing xorg-libXt @1.2.1_0
---> Activating xorg-libXt @1.2.1_0
---> Cleaning xorg-libXt
---> Fetching archive for xorg-libXmu
---> Attempting to fetch xorg-libXmu-1.1.3_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXmu
---> Attempting to fetch xorg-libXmu-1.1.3_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXmu
---> Installing xorg-libXmu @1.1.3_0
---> Activating xorg-libXmu @1.1.3_0
---> Cleaning xorg-libXmu
---> Fetching archive for xorg-libXxf86vm
---> Attempting to fetch xorg-libXxf86vm-1.1.4_1.darwin_20.arm64.tbz2 from https://packages.macports.org/xorg-libXxf86vm
---> Attempting to fetch xorg-libXxf86vm-1.1.4_1.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/xorg-libXxf86vm
---> Installing xorg-libXxf86vm @1.1.4_1
---> Activating xorg-libXxf86vm @1.1.4_1
---> Cleaning xorg-libXxf86vm
---> Fetching archive for mesa
---> Attempting to fetch mesa-19.0.8_1+osmesa+python27.darwin_20.arm64.tbz2 from https://packages.macports.org/mesa
---> Attempting to fetch mesa-19.0.8_1+osmesa+python27.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/mesa
---> Installing mesa @19.0.8_1+osmesa+python27
---> Activating mesa @19.0.8_1+osmesa+python27
---> Cleaning mesa
---> Fetching archive for glxgears
---> Attempting to fetch glxgears-8.4.0_0.darwin_20.arm64.tbz2 from https://packages.macports.org/glxgears
---> Attempting to fetch glxgears-8.4.0_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/glxgears
---> Installing glxgears @8.4.0_0
---> Activating glxgears @8.4.0_0
---> Cleaning glxgears
---> Updating database of binaries
---> Scanning binaries for linking errors
---> No broken files found.
---> No broken ports found.
martin@osxm1 ~/D/j/external (master)> glxgears
Error: couldn't open display (null)
martin@osxm1 ~/D/j/external (master) [255]> glxgears -info
Error: couldn't open display (null)
martin@osxm1 ~/D/j/external (master) [255]> glxgears -display
Error: couldn't open display (null)
martin@osxm1 ~/D/j/external (master) [255]> man glxgears
No manual entry for glxgears

```

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 24, 2022, 6:54pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/14 "2022-03-24T18:54:21Z")

</div>

I installed XQuartz on this Apple M1 and can now get glxgears working.

It does not solved my java program still loading Metal out of the box, but I’ll investigate if it requires any additional PATH re-configuration to ensure XQuartz libs get called before Metal.

For now glxinfo says

```auto
martin@osxm1 ~/D/j/external (master) [1]> glxinfo
name of display: /private/tmp/com.apple.launchd.1HsjwmLsBd/org.xquartz:0
display: /private/tmp/com.apple.launchd.1HsjwmLsBd/org.xquartz:0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_OML_swap_method, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, 
    GLX_SGI_make_current_read
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness, 
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read
OpenGL vendor string: Apple
OpenGL renderer string: Apple M1
OpenGL version string: 2.1 Metal - 71.6.4
OpenGL shading language version string: 1.20

```

---

<div class="post-metadata">

**Author:** ![Atemu](https://community.khronos.org/user_avatar/community.khronos.org/atemu/32/8162_2.png) [@Atemu](https://community.khronos.org/u/Atemu)\
**Post date:** [March 24, 2022, 6:56pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/15 "2022-03-24T18:56:47Z")

</div>

You’ll likely have to compile glxinfo yourself, linking against your mesa/libgl.

---

<div class="post-metadata">

**Author:** ![Atemu](https://community.khronos.org/user_avatar/community.khronos.org/atemu/32/8162_2.png) [@Atemu](https://community.khronos.org/u/Atemu)\
**Post date:** [March 24, 2022, 6:57pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/16 "2022-03-24T18:57:26Z")

</div>

Also try `__GLX_VENDOR_LIBRARY_NAME=mesa`

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 25, 2022, 3:39pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/17 "2022-03-25T15:39:12Z")

</div>

Thanks @Atemu.

Unfortunately the `__GLX_VENDOR_LIBRARY_NAME=mesa` does not change anything.

I ran otool on `glxgears` to check its dependencies and found that the GL libraries are those installed in MacPorts directory so I assume it is Mesa’s GL being used as imported from MacPorts (otherwise one would see a more conventional MacOS path like `/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib`). I have no real proof that this libGL is Mesa’s one though.

```auto
martin@osxm1 ~/D/j/e/mesa-demos (main)> otool -L /opt/local/bin/glxgears
/opt/local/bin/glxgears:
	/opt/local/lib/libGL.1.dylib (compatibility version 4.0.0, current version 4.0.0)
	/opt/local/lib/libX11.6.dylib (compatibility version 11.0.0, current version 11.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)

```

And also

```auto
martin@osxm1 ~/D/j/e/mesa-demos (main) [1]> otool -L /opt/local/bin/glxinfo
/opt/local/bin/glxinfo:
	/opt/local/lib/libGL.1.dylib (compatibility version 4.0.0, current version 4.0.0)
	/opt/local/lib/libX11.6.dylib (compatibility version 11.0.0, current version 11.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)

```

I then verified `libGL`

```auto
martin@osxm1 ~/D/j/e/mesa-demos (main)> otool -L /opt/local/lib/libGL.1.dylib
/opt/local/lib/libGL.1.dylib:
	/opt/local/lib/libGL.1.dylib (compatibility version 4.0.0, current version 4.0.0)
	/opt/local/lib/libexpat.1.dylib (compatibility version 8.0.0, current version 8.12.0)
	/usr/lib/libXplugin.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
	/opt/local/lib/libglapi.0.dylib (compatibility version 1.0.0, current version 1.0.0)
	/opt/local/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
	/opt/local/lib/libXdamage.1.dylib (compatibility version 3.0.0, current version 3.0.0)
	/opt/local/lib/libXfixes.3.dylib (compatibility version 5.0.0, current version 5.0.0)
	/opt/local/lib/libX11-xcb.1.dylib (compatibility version 2.0.0, current version 2.0.0)
	/opt/local/lib/libX11.6.dylib (compatibility version 11.0.0, current version 11.0.0)
	/opt/local/lib/libxcb.1.dylib (compatibility version 3.0.0, current version 3.0.0)
	/opt/local/lib/libxcb-glx.0.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.0.0)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 54.0.0)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1770.106.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 904.4.0)

```

Yet, we don’t know if the imported libGL was built with the `-Dglx=xlib` so it is worth trying to build a `glxgear`/`glxinfo` linking to the previous Mesa build that I succeeded to run (which was made with `meson builddir/ -Dosmesa=true -Dglx=xlib -Dgallium-drivers=swrast -Ddri-drivers=[] -Dvulkan-drivers=[] -Dprefix=/Users/Martin/Dev/jzy3d/external/osmesa`).

**Where did you get glxinfo from?** I unfortunately can’t build [Mesa’s demo found here](https://gitlab.freedesktop.org/mesa/demos) successfully.

_configure fails as follow_

```auto
martin@osxm1 ~/D/j/e/mesa-demos (main)> ./configure.ac
./configure.ac: line 25: dnl: command not found
./configure.ac: line 27: syntax error near unexpected token `[2.59]'

```

_cmake fails as follow_

```auto
martin@osxm1 ~/D/j/e/mesa-demos-build (master)> make
[0%] Building C object src/glad/CMakeFiles/glad.dir/src/glad.c.o
[0%] Linking C static library libglad.a
[0%] Built target glad
[0%] Building C object src/util/CMakeFiles/util.dir/readtex.c.o
[0%] Building C object src/util/CMakeFiles/util.dir/shaderutil.c.o
/Users/martin/Dev/jzy3d/external/mesa-demos/src/util/shaderutil.c:45:13: error: variable has incomplete type 'void'
static void GLAPIENTRY
            ^
/Users/martin/Dev/jzy3d/external/mesa-demos/src/glad/include/glad/glad.h:895:20: note: expanded from macro 'GLAPIENTRY'
#define GLAPIENTRY APIENTRY
                   ^
/Users/martin/Dev/jzy3d/external/mesa-demos/src/util/shaderutil.c:45:23: error: expected ';' after top level declarator
static void GLAPIENTRY
                      ^
                      ;
2 errors generated.
make[2]: *** [src/util/CMakeFiles/util.dir/shaderutil.c.o] Error 1
make[1]: *** [src/util/CMakeFiles/util.dir/all] Error 2
make: *** [all] Error 2

```

One funny thing though is that enabling `LIBGL_ALWAYS_SOFTWARE` - which I though was a Mesa only environment variable lead to Apple Software rendering activation.

```auto
export LIBGL_ALWAYS_SOFTWARE=true
martin@osxm1 ~/D/j/external (master)> glxinfo | head -n 50
...
OpenGL vendor string: Apple Inc.
OpenGL renderer string: Apple Software Renderer
OpenGL version string: 2.1 APPLE-18.5.9
OpenGL shading language version string: 1.20

export LIBGL_ALWAYS_SOFTWARE=false
martin@osxm1 ~/D/j/external (master)> glxinfo | head -n 50
...
OpenGL vendor string: Apple
OpenGL renderer string: Apple M1
OpenGL version string: 2.1 Metal - 71.6.4
OpenGL shading language version string: 1.20

```

---

<div class="post-metadata">

**Author:** ![Atemu](https://community.khronos.org/user_avatar/community.khronos.org/atemu/32/8162_2.png) [@Atemu](https://community.khronos.org/u/Atemu)\
**Post date:** [March 27, 2022, 9:29am UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/18 "2022-03-27T09:29:52Z")

</div>

Yeah, you have to build glxinfo yourself and link against your mesa. You could probably also inject your mesa via `DYLD_INSERT_LIBRARIES` but I’ve never used it successfully.  
Its build system seems majorly broken and I haven’t gotten it to work either but you can just run the compiler manually:

```
cc -lgl -lX11 glinfo_common.c glxinfo.c -o glxinfo

```

Then

```
DISPLAY=:0 ./glxinfo -B

```

should print llvmpipe info.

---

<div class="post-metadata">

**Author:** ![Martin3d](https://community.khronos.org/user_avatar/community.khronos.org/martin3d/32/7503_2.png) [@Martin3d](https://community.khronos.org/u/Martin3d)\
**Post date:** [March 28, 2022, 12:52pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/19 "2022-03-28T12:52:36Z")

</div>

Thanks again for your suggestions. I was able to build but the program fails at execution with an error I can not resolve.

```auto
martin@osxm1 ~/D/j/e/mesa-demos > DISPLAY=:0 ./build/glxinfo -B

name of display: :0
X Error of failed request: BadMatch (invalid parameter attributes)
  Major opcode of failed request: 149 ()
  Minor opcode of failed request: 34
  Serial number of failed request: 7
  Current serial number in output stream: 7

```

I found ways to clarify these error codes [here](https://www.x.org/wiki/Development/Documentation/Protocol/OpCodes/):

- running `xdpyinfo -queryExt | grep opcode` returns that the error involves the GLX extension (`... GLX (opcode: 149, base event: 102, base error: 161) ...`)
- then minor opcode [34 seams to be provided here](https://cgit.freedesktop.org/xorg/xserver/tree/dix/protocol.txt#n151) and meaning `GLX:CreateContextAttribsARB`.
- the serial number of failed request 7 lead to `R007 GLX:QueryVersion`

For information I slightly modified the build command you suggested as follow

```auto
mkdir build/

# export path_to_mesa:path_to_macport_libraries:path_to_XQuartz
export C_INCLUDE_PATH=/Users/Martin/Dev/jzy3d/external/osmesa/include:/opt/local/include/:/opt/X11/include
export CPLUS_INCLUDE_PATH=/Users/Martin/Dev/jzy3d/external/osmesa/include:/opt/local/include/:/opt/X11/include
export LIBRARY_PATH=/Users/Martin/Dev/jzy3d/external/osmesa/lib:/opt/local/lib/:/opt/X11/lib

gcc -lgl -lX11 src/xdemos/glinfo_common.c src/xdemos/glxinfo.c -o build/glxinfo

```

The same problem occured when using path `/opt/X11/lib` (macports) and removing `/opt/local/lib/` (macports).

One thing I noticed is that XQuartz has a libGL.dylib in `/opt/X11/lib/`

---

<div class="post-metadata">

**Author:** ![system](https://community.khronos.org/uploads/default/original/2X/b/ba89cb49313a0e869198c8be354afde8bcae027e.png) [@system](https://community.khronos.org/u/system)\
**Post date:** [September 27, 2022, 12:53pm UTC](https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/20 "2022-09-27T12:53:06Z")

</div>

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.
