Re: Enable OpenGL software rendering on macOS
Martin Pernollet <[email protected]>
| Newsgroups | gmane.comp.video.mesa3d.devel |
|---|---|
| Message-ID | <cblzzl4q1KUQZj7ktz_Uawo_vTzKZceKJPIFHn5wo77aO85Q4nfXiHktVrT0Qe4BvEpjXTVx7dSDcSUw83MFJMWwAut-wEb-6oA6M41aU-8=@protonmail.com> |
Thank you all for your answers. Alyssa : I agree that Linux is easier to tackle, but I unfortunately can't ask to my clients to drop macOS support :) Do you mean that you finally stopped trying running Mesa on macOS? Jose : I was indeed thinking of MoltenGL to keep OpenGL working on Apple GPU. My thought about Mesa/macOS is only for CPU rendering. JOGL architecture assume that the OS can provide a GL shared library so I would not build JOGL with Mesa but rather ensure that a GL shared library is available, either MoltenGL+Metal for GPU rendering, either Mesa tweaked to display a CPU processed image. Envoyé avec la messagerie sécurisée ProtonMail. ------- Original Message ------- Le mercredi 4 mai 2022 à 13:34, Alyssa Rosenzweig <[email protected]> a écrit : > Having spent enough time wrangling Mesa/MacOS on Arm Macs.... > > the correct solution is to migrate to Linux. everything else is pain. > > On Wed, May 04, 2022 at 12:38:55AM +0000, Jose Fonseca wrote: > > > I'm not sure exactly what Homebrew provides, and I'm not able to > > investigate it now. > > Yes, using Mesa software rendering to fill the void left by Opengl > > deprecation makes some sense. But note is still software rendering, not > > GPU accelerated. And one needs to consider the x86 -> arm. > > You could consider somehow integrating jogl with osmesa -- offscreen > > rendering -Mesa -- which builds and runs pretty much anywhere Mesa builds > > -- thereby bypassing the headaches of integrating with mac specifics > > technologies such as CGL and Cocoa > > There are also other alternatives with considering, such > > as https://moltengl.com/moltengl/ > > Jose > > Get Outlook for Android > > > > ---------------------------------------------------------------------- > > > > From: Martin Pernollet [email protected] > > Sent: Monday, May 2, 2022 1:31:43 AM > > To: Jose Fonseca [email protected] > > Cc: [email protected] [email protected] > > Subject: Re: Enable OpenGL software rendering on macOS > > > > ** External Email > > > > Hi Jose, > > Many thanks for your answer. > > JOGL classes enabling GL binding macOS all refer to CGL, so yes, I think I > > want to rely on CGL (there is however in JOGL a couple of classes allowing > > to work with X11, but they're used on Linux only). > > I can't access the Apple M1 on which I built Mesa right now, but homebrew > > on another macOS provides libGL and not libGLX. > > > > ls /usr/local/Cellar/mesa/21.1.2/lib > > > > dri libGL.dylib libGLESv1_CM.dylib libGLESv2.dylib libglapi.dylib > > > > libGL.1.dylib libGLESv1_CM.1.dylib libGLESv2.2.dylib libglapi.0.dylib > > pkgconfig > > > > One motivation for enabling Mesa on macOS is actually the deprecated > > status of OpenGL. I would expect this software implementation of GL to > > simply provide an image to be copied to a native window/frame, without > > having to rely on CGL. Hence, one could continue working with simple > > OpenGL even if macOS doesn't provide such API. > > Does it sound reasonable? > > Martin > > Envoye avec la messagerie securisee ProtonMail. > > ------- Original Message ------- > > Le vendredi 29 avril 2022 a 16:08, Jose Fonseca [email protected] a > > ecrit : > > > > The difficulty with OpenGL on macOS is that all driver interfaces are > > both undocumented and deprecated. > > If you want to override the system OpenGL, you can use apitrace code as > > reference. There are two approaches: > > 1. DYLD_FRAMEWORK_PATH https://github.com/apitrace/apitrace/blob/master/cli/cli_trace.cpp > > 2. DYLD_INSERT_LIBRARIES https://github.com/apitrace/apitrace/tree/dyld-interpose (experimental > > branch) > > > > AFAIK, Mesa build for macOS generates a ibGLX which depends on X11, > > which is probably not what you want. You want to use Mesa for macOS > > apps which use CGL as opposed to GLX, right? > > So, if one wants to have a SW renderer on macOS with llvmpipe without > > depending on X11, then one would need to implement: > > * a new Gallium frontend that implements CGL API (equivalent to the > > WGL frontend that exists for Windows) > > * a new SW renderer winsys that draws pixels to Cocoa window somehow > > (equivalent to the GDI winsys that draws to a Windows GDI surface) > > It's not a matter of just integrating existing components together -- > > there's lot of new code that would be need here -- I'd reckon 2 months > > for somebody familiar with Mesa/macOS, 6 - 12 months for somebody more > > novice. And let's be frank, given mac deprecation of OpenGL and > > migration away from Intel to Arm, the usefulness of this in the long > > term is dubious. > > Jose > > > > ---------------------------------------------------------------------- > > > > From: mesa-dev [email protected] on behalf of > > Martin Pernollet [email protected] > > Sent: Friday, April 29, 2022 12:32 > > To: [email protected] [email protected] > > Subject: Enable OpenGL software rendering on macOS > > > > ** External Email > > > > TLDR : I failed using Mesa software rendering on macOS. I am looking for > > advice to invoke mesa's libGL.dylib without relying on macOS's system > > GL. > > Hi everyone, > > I am building (java) software involving Mesa for CPU rendering. I use > > CPU rendering as fallback when JOGL (OpenGL binding for Java) fail to > > use the GPU natively. This is sometime the case for old Linux > > distributions, this will certainly be frequent on macOS in the future > > due to Apple's OpenGL deprecation. > > Mesa CPU rendering is working great on Ubuntu (by enabling > > LIBGL_ALWAYS_SOFTWARE=true) and Windows (by simply loading Mesa's DLL > > instead of system DLL, no need to ask for software mode). > > I however thrive to use Mesa's software rendering on macOS for the > > following reasons > > * Spying dynamic library load sequence shows that whenever Mesa's > > libGL.dylib is loaded, Apple Metal and libGL.dylib are loaded > > before, even when using DYLD tricks to ensure Mesa get loaded before > > any other library (except the Java VM) [1] Someone says that Mesa's > > macOS implementation relies on system GL [4]. I noticed that when > > enabling LIBGL_ALWAYS_SOFTWARE=true, this activates Apple software > > rendering but not Mesa's software rendering [5]. I wonder how I > > could avoid this and use a pure Mesa's OpenGL implementation in this > > situation. > > * When getting out of the java World > > * Running a pre-built glxgear/glxinfo installed through MacPorts > > only allows using Apple's libGL.dylib but not Mesa's > > libGL.dylib [2]. > > * Building glxinfo myself by linking explicitely to Mesa's GL + > > X11 lead to an X11 error that I am not able to depict [3]. > > This has been discussed already on Khronos community [1] but I have no > > clue how to go further. I hope some experts here can help me solve this! > > Thanks in advance, > > Martin > > [1] https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408 > > [2] https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/14 > > [3] https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/19 > > [4] https://community.khronos.org/t/how-to-use-opengl-on-zink-mesa-moltenvk-and-macos/108160/18 > > [5] https://community.khronos.org/t/failing-to-load-mesa3d-on-macos-instead-of-macos-provided-opengl-library/108408/17 > > > > ---------------------------------------------------------------------- > > > > ** External Email: This email originated from outside of the > > organization. Do not click links or open attachments unless you > > recognize the sender.