OpenGL and OpenCL to be deprecated in iOS 12 and macOS Mojave

A new macOS is upon us and Mojave is packed with new features sure to delight consumers and aficionados alike. The WWDC 2018 keynote showed the grounds being made in AR and using the Metal graphics framework for its development. This push has also prompted Apple to deprecate both the OpenGL and OpenGL frameworks.

Why deprecate OpenGL and OpenCL

Apple wants to ensure that in the future, all applications that use the OpenGL standard (and the iOS equivalent OpenGL ES) switch to Apple's own Metal API. Similarly, it also wants the swift to be made for all computation tasks that use OpenCL, also switching to the Metal framework. Typically, using an open standard like OpenGL and OpenCL allows for developers to more easily make cross-platform applications. Creating the same application over multiple OSs using different APIs is time consuming and costly. So it's easy to see why a developer would do so. Apple's stance on deprecating software is the following:

Periodically, Apple adds deprecation macros to APIs to indicate that those APIs should no longer be used in active development. When a deprecation occurs, it's not an immediate end of life for the specified API. Instead, it is the beginning of a grace period for transitioning from that API and to newer and more modern replacements. Deprecated APIs typically remain present and usable in the system for a reasonable time past the release in which they were deprecated. However, active development on them ceases, and the APIs receive only minor changes to accommodate security patches or to fix other critical bugs. Deprecated APIs may be removed entirely from a future version of the operating system. As a developer, avoid using deprecated APIs in your code as soon as possible. At a minimum, new code you write should never use deprecated APIs. And if your existing code uses deprecated APIs, update that code as soon as possible.

The inherent benefits of Metal

Apple also goes on to explain why it's better to switch to Metal over the open standards:

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.

How this affects the end user

Ultimately, this will not affect consumers overall. Developers interested in maintaining a program will simple make the switch internally in their application transparently to the consumer. Developers that use major graphics engines such as Unity and Unreal have Metal support built in already so the transition is already done. There is also a push for the multi-platform Vulkan graphics API (under the MoltenVK API since Apple nixed direct Vulcan access on macOS) by some developers more keen on being able to still develop with multi-platform APIs.

What's your take?

Are you a developer? Are you using OpenGL and OpenCL in your applications? Will the switch to Metal and deprecation of OpenGL and OpenCL be seen as something you welcome or is it enough to push you to another platform? Some say that this also means the death knell of webGL as well. What's your take? Let us know in the comments!

Anthony Casella