Apple Announces that OpenGL and OpenCL will be Deprecated in macOS 10.14 Mojave

At the Worldwide Developers Conference, Apple has unveiled macOS 10.14 Mojave the next version of its operating system for desktop computers. macOS 10.14 should be available in 2019. Among the news, there is one that is only half-surprising: Apple has decided that OpenGL and OpenCL will be deprecated technologies. Here is the short passage in the What’s New in macOS article:

Deprecation of OpenGL and OpenCL

Apps built using OpenGL and OpenCL will continue to run in macOS 10.14, but these legacy technologies are deprecated in macOS 10.14. Games and graphics-intensive apps that use OpenGL should now adopt Metal. Similarly, apps that use OpenCL for computational tasks should now adopt Metal and Metal Performance Shaders.

Metal is designed from the ground up to provide the best access to the modern GPUs on iOS, macOS, and tvOS devices. Metal avoids the overhead inherent in legacy technologies and exposes the latest graphics processing functionality. Unified support for graphics and compute in Metal lets your apps efficiently utilize the latest rendering techniques. For information about developing apps and games using Metal, see the developer documentation for Metal, Metal Performance Shaders, and MetalKit. For information about migrating OpenGL code to Metal, see Mixing Metal and OpenGL Rendering in a View.

macOS only supports OpenGL 4.1 which has been released years ago in 2010. Other platforms like Windows and Linux support OpenGL 4.6, released last year. No evolution since 8 years, that’s why it’s not surprising to read this news. It’s a pity that OpenGL is no longer considered by Apple. I love OpenGL because it’s an easy and powerful 3D API. Properly utilized, OpenGL offers very good performances, approaching in some cases the performances of Vulkan (or Metal?). But above all, OpenGL is a simple to use and very flexible API.

The good news is that OpenGL will not be removed but only marked as deprecated. So all current OpenGL applications will continue to work correctly (I hope!). Developers are encouraged to adopt Apple’s Metal API. And if OpenGL will follow the same deprecation model than Carbon, we will enjoy OpenGL for several years on macOS. So keep calm!

The Metal API is not the new version of OpenGL for macOS. It’s an API similar to Direct3D 12 and Vulkan. The migration from OpenGL to Metal is not easy task. I don’t know yet if I will add Metal support to GeeXLab. GeeXLab already supports Vulkan and D3D12, so adding Metal should be quite easy. But what is easy on Windows and Linux, is often another story on macOS. I will look at this chapter next year… unless I decide that macOS is a deprecated platform for GeeXLab 😀

I didn’t mention it so far, but OpenGL ES will be deprecated as well (source):

Deprecation of OpenGL ES

Apps built using OpenGL ES will continue to run in iOS 12, but Open GL ES is deprecated in iOS 12. Games and graphics-intensive apps that previously used OpenGL ES should now adopt Metal.

Metal is designed from the ground up to provide the best access to the modern GPUs on iOS, macOS, and tvOS devices. Metal avoids the overhead inherent in legacy technologies and exposes the latest graphics processing functionality. Unified support for graphics and compute in Metal lets your apps efficiently utilize the latest rendering techniques.