Bug 399820 - Implement Metal support as OpenGL is deprecated on OS X
Summary: Implement Metal support as OpenGL is deprecated on OS X
Status: RESOLVED LATER
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: 4.1.5
Platform: macOS (DMG) macOS
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-10-15 02:26 UTC by Alberto
Modified: 2018-10-20 10:00 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alberto 2018-10-15 02:26:16 UTC
SUMMARY
Apple has deprecated OpenGL support for the Mac OS X platform and the API is no longer supported. Although still functional, it may cease to be included in future releases of the operating system. This bug is to report this change and advise implementation of the Metal API for continued support of Krita on the OS X platform.

Please refer to Apple's note in the OpenGL programming guide:
"Important OpenGL was deprecated in macOS 10.14. To create high-performance code on GPUs, use the Metal framework instead."
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html

They refer developers to use the Metal API referenced here:
https://developer.apple.com/metal/

Additional information regarding Apple's deprecation warning:

"Deprecations
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."

Reference: https://developer.apple.com/macos/whats-new/

STEPS TO REPRODUCE
1. Open Krita
2. Go to menu Krita->Preferences->Display

OBSERVED RESULT
Observe Canvas Graphics Acceleration option Renderer lists OpenGL and Metal is not an option.


EXPECTED RESULT
Metal is an available graphics acceleration renderer option

SOFTWARE VERSIONS
Krita
  Version: 4.1.5

Qt
  Version (compiled): 5.11.1
  Version (loaded): 5.11.1

OS Information
  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: darwin
  Kernel Version: 18.0.0
  Pretty Productname: macOS 10.14
  Product Type: osx
  Product Version: 10.14

OpenGL Info
  **OpenGL not initialized**

ADDITIONAL INFORMATION
Comment 1 Halla Rempt 2018-10-15 09:28:17 UTC
I'm pretty firmly convinced we'd drop support for macOS sooner than start supporting a proprietary, walled-garden type of API like Metal. Apple should have gone with Vulkan, but they decided they wanted to lock in developers on their platform instead.

If the Angle project starts supporting Metal or if there appears another opengl->angle translation layer that we could use, we would use that. 

Even if someone would turn up and start coding support for Metal, I would still hesitate because then we would have to maintain that code.