Metal Graphics Card Mac

NVIDIA GeForce GTX 680 Mac Edition. When it comes to Graphics Cards, NVIDIA can easily make it.



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.

What is the Metal-compatible graphics card for MacPro5,1 (Mid 2010). Would I need new 'connectors' for the device. I want to upgrade my MAC PRO 2010 to get ready for the MAC OS Mojave due in the fall. What's the current state of graphic cards with Metal support? As far as I've understood, the limitations posted by Apple of not supporting models before 2012 are due to their own configurations of Mac Pro never shipping with a compatible graphics card, so it's not due to the HW of the Mac Pro itself, or any artificial limitations on the. Like DirectX, Metal is intended to provide games and applications, direct access to your Mac’s GPU, allowing improved rendering, frame rates, and other benefits. Metal was actually introduced in iOS 8, but with the recent announcement that it will be rolled into OS X, 10.11, El Capitan, graphic performance on Macs, particularly with regard to. Metal Compatible NVIDIA Graphics Cards 33,253 Since the release of Mojave, macOS requires Metal Supported Graphics Card, Without metal compatibility graphics acceleration is not possible in a Hackintosh with Mojave.

The M1 Chip

Graphics

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.

The M1 GPU has a FP32 performance of 2.6 TFLOPS (source). This is more or less the same performance than the Radeon RX 560 or the GeForce GTX 1650:
– GeForce GTX 1650: 2.9 TFLOPS
– Radeon RX 560: 2.6 TFLOPS
See THIS PAGE for a more complete TFLOP table.

Xcode, command line tools

The source code of GeeXLab is based on makefiles and I had no problem to compile all core libraries from the command line. I installed the latest Xcode 12.3 as well as the command line tools (because gcc/g++ are needed). By default, the compilation in command line (like gcc file.c) produces a binary for the arm64 architecture. I was surprised to see that all GeeXLab OpenGL code has been successfully compiled. OpenGL is still there in the latest macOS Big Sur!

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. But in command line with gcc/g++, you have to specify the target architecture. By default on Apple M1 + Big Sur, gcc will generate an amr64 code. If you want to generate a x86_64 code you have to use the following gcc option:
-target x86_64-apple-macos10.15

Example:
gcc main.c -o x86_test -target x86_64-apple-macos10.15

To compile for arm64 architecture:
gcc main.c -o arm_test -target arm64-apple-macos11

The arm64-apple-macos11 target is handy if you are on an Intel-based Mac mini and want to compile for ARM architecture.

Once I finished to build GeeXLab, I was impressed by its launch speed: very fast. On Linux, the launch of GeeXLab is fast but on macOS Big Sur + Apple M1, the startup is a bit faster.

This is GeeXLab compiled for arm64 architecture:

Rosetta

I compiled GeeXLab in two separate versions: GeeXLab for arm64 and GeeXLab for Intel x86_64. On the Apple M1, you can’t launch an x86_64 executable directly. You have to install Rosetta before. Fortunately, it’s easy, you are guided by macOS:


Rosetta is a translation layer that allows the Apple M1 CPU (arm64 architecture) to execute a x86_64 code developed for Intel-based Macs. The first version of Rosetta was developed for the switch from PowerPC to Intel CPUs. Rosetta 2 is the new version for the switch from Intel to Apple silicon M1 CPUs.

Rosetta works fine: here, we have GeeXLab compiled for x86_64 architecture running on Apple M1:


Here is the same GeeXLab on an Intel-based Mac mini:


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). This statement found on the Apple M1 homepage is true:

And 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.

M1 GPU OpenGL Test


Let’s do another test: a shadertoy demo with a heavy pixel shader. I chose a recent demo that gives some good results: Neural Stanford Bunny 5kb.

This demo has been ported to GeeXLab and is available in the shadertoy demopack in the following folder:
geexlab-demopack-shadertoy/gl-32-shadertoy-02/neural-stanford-bunny-5-kb/

Resolution of the demo: 800×480

Some framerates:
GeForce RTX 2070 on Windows 10: 720 FPS
Apple M1 Mac mini (arm64 native code): 245 FPS
– Apple M1 Mac mini (x86_64 via rosetta): 220 FPS
GeForce GTX 750 on Windows 10: 176 FPS

Macbook Graphic Card

Let’s look at the theoretical FP32 performance of these GPUs:
– GeForce RTX 2070: 7.4 TFLOPS
– Apple M1: 2.6 TFLOPS
– GeForce GTX 750: 1.1 FLOPS

Results sound coherent. This shadertoy test shows us that the M1 GPU is not a toy.

GeeXLab for arm64 can be downloaded from this link.
GeeXLab for x86_64 can be downloaded from this link.

Activity Monitor

Metal Graphics Card For Mac

macOS Big Sur has a way to know for what architecture a program has been compiled. Launch the Activity Monitor and look at the Architecture column:

– GeeXLab for Apple Silicon M1:

– GeeXLab for Intel x86_64:

OpenGL info

To end this article, here is the OpenGL 4.1 and OpenGL 2.1 data from GeeXLab (M1 arm64) log file. The modern way to do graphics programming on macOS is to use the Metal API (or Vulkan via MoltenVK). But a lot of OpenGL applications exist for macOS and it’s nice to know that they still work. According to the GL_VERSION, OpenGL in macOS is based on the Metal API.

Metal Capable Graphics Card Macbook Pro

OpenGL 4.1

OpenGL 2.1


Related posts:

Accelerating graphics and much more.

Metal provides near-direct access to the graphics processing unit (GPU), enabling you to maximize the graphics and compute potential of your apps on iOS, macOS, and tvOS. Building on an approachable, low-overhead architecture with precompiled GPU shaders, fine-grained resource control, and multithreading support, Metal further evolves support for GPU-driven command creation, simplifies working with the array of Metal-capable GPUs, and lets you tap into Pro power of Mac Pro and Pro Display XDR.

GPU-driven Compute Encoding

Moving beyond just rendering passes, Metal in iOS 13 and tvOS 13 empowers the GPU to construct its own compute commands with Indirect Compute Encoding. Now complete scenes using advanced culling and tessellation techniques can be built and scheduled with little or no CPU interaction.

Improved Raytracing Acceleration

Metal Performance Shaders (MPS) speed raytracing operations even more by moving the bounded volume hierarchy construction to the GPU. MPS also provide new, optimized de-noising filters in an essential collection of highly-optimized compute and graphics shaders.

Metal for Pro Apps

Professional content-creation apps can take advantage of outstanding enhancements in Metal on macOS Catalina. Metal Peer Groups make it easy to rapidly share data between multiple GPUs in Mac Pro without transferring through main memory. And enhancements to CAMetalLayer give you access to the High Dynamic Range capabilities of Pro Display XDR.

Simpler GPU Families

Developing with Metal is even easier with the dramatically simplified GPU Families. Three well-considered groupings allow you to easily target functionality that's common across all Metal-enabled GPUs, access unique capabilities of Apple-designed GPUs, and better harness supported third-party GPUs on macOS.

Metal Memory Debugger

The Metal Memory Debugger gives fine-grained insight into how much memory Metal objects and rendering resources consume at runtime. It also analyzes how your resources are configured and suggests improvements, so you can deeply optimize your game or app to take full advantage of Metal.

Metal-enabled iOS Simulator

The Simulator now uses Metal to speed up the development of iOS apps that either use Metal directly or rely on Metal-based system frameworks. This is perfect for smoothly transitioning from OpenGL ES to Metal.

  • What’s New in Metal

    Tools for Windows
    The Metal Developer Tools for Windows enables Metal Shading Language (MSL) compilation on Windows into Metal Library Objects targeting Apple platforms.

  • Documentation

    Browse the latest documentation including API reference and articles.

  • Sample Code

    Get sample code to see how Metal APIs are implemented.

  • Videos

    Learn how to take advantage of the latest advancements in Metal.

  • Forums

    Ask questions and discuss Metal with Apple engineers and other developers.