
#MAC OS OPENGL SOFTWARE#
According to the GL_VERSION, OpenGL in macOS is based on the Metal API.It kept a lot of commercial software off the Windows platform and left it on Workstations like SGI and DEC had. But a lot of OpenGL applications exist for macOS and it’s nice to know that they still work. The modern way to do graphics programming on macOS is to use the Metal API (or Vulkan via MoltenVK). To end this article, here is the OpenGL 4.1 and OpenGL 2.1 data from GeeXLab (M1 arm64) log file. Launch the Activity Monitor and look at the Architecture column: MacOS Big Sur has a way to know for what architecture a program has been compiled. GeeXLab for x86_64 can be downloaded from this link. GeeXLab for arm64 can be downloaded from this link. This shadertoy test shows us that the M1 GPU is not a toy. Let’s look at the theoretical FP32 performance of these GPUs:
#MAC OS OPENGL MAC#
– Apple M1 Mac mini (x86_64 via rosetta): 220 FPS – Apple M1 Mac mini (arm64 native code): 245 FPS – GeForce RTX 2070 on Windows 10: 720 FPS Geexlab-demopack-shadertoy/gl-32-shadertoy-02/neural-stanford-bunny-5-kb/ This demo has been ported to GeeXLab and is available in the shadertoy demopack in the following folder: I chose a recent demo that gives some good results: Neural Stanford Bunny 5kb. Let’s do another test: a shadertoy demo with a heavy pixel shader. This statement found on the Apple M1 homepage is true:Īnd thanks to Metal and M1, some of the most graphically demanding apps perform better under Rosetta 2 than they did running natively on previous Mac systems with integrated graphics.
#MAC OS OPENGL CODE#
Look at the framerate: 1951 FPS (M1 CPU, arm64 native code), 1282 FPS (M1 CPU, x86_64 emulated code via rosetta) and 471 FPS (Intel CPU, x86_64 native code). Here is the same GeeXLab on an Intel-based Mac mini: Rosetta works fine: here, we have GeeXLab compiled for x86_64 architecture running on Apple M1: Rosetta 2 is the new version for the switch from Intel to Apple silicon M1 CPUs. The first version of Rosetta was developed for the switch from PowerPC to Intel CPUs. Rosetta is a translation layer that allows the Apple M1 CPU (arm64 architecture) to execute a x86_64 code developed for Intel-based Macs. Fortunately, it’s easy, you are guided by macOS: On the Apple M1, you can’t launch an x86_64 executable directly. I compiled GeeXLab in two separate versions: GeeXLab for arm64 and GeeXLab for Intel x86_64. This is GeeXLab compiled for arm64 architecture:

On Linux, the launch of GeeXLab is fast but on macOS Big Sur + Apple M1, the startup is a bit faster. Once I finished to build GeeXLab, I was impressed by its launch speed: very fast. The arm64-apple-macos11 target is handy if you are on an Intel-based Mac mini and want to compile for ARM architecture.

Gcc main.c -o arm_test -target arm64-apple-macos11 If you want to generate a x86_64 code you have to use the following gcc option: By default on Apple M1 + Big Sur, gcc will generate an amr64 code.

But in command line with gcc/g++, you have to specify the target architecture. Using Xcode 12.3, you can generate a kind of hybrid executable (Apple calls it an universal macOS binary) that packs the x86_64 and arm64 code. OpenGL is still there in the latest macOS Big Sur! I was surprised to see that all GeeXLab OpenGL code has been successfully compiled. By default, the compilation in command line (like gcc file.c) produces a binary for the arm64 architecture. I installed the latest Xcode 12.3 as well as the command line tools (because gcc/g++ are needed). The source code of GeeXLab is based on makefiles and I had no problem to compile all core libraries from the command line. See THIS PAGE for a more complete TFLOP table. This is more or less the same performance than the Radeon RX 560 or the GeForce GTX 1650: The M1 GPU has a FP32 performance of 2.6 TFLOPS ( source). The M1 chip is a SoC (System on a Chip) and includes a 8-core CPU, a 8-core GPU as well as other components like a neural engine, memory or input/output interfaces. Here are some feedbacks about the Mac mini M1 I purchased few weeks ago, in order to compile and test GeeXLab with the new Apple Silicon M1.
