[Bf-committers] Metal GPU support

Stuart Carnie stuart.carnie at gmail.com
Wed Dec 12 17:31:31 CET 2018

Hi Ton:

Thanks for the response. I have considered Cycles as a potential candidate
to add Metal support, so thanks for the confirmation!

In all fairness to Apple, Metal was released almost 2 years before Vulkan
and undoubtedly their product releases would be a driving force for the
software they develop. More specifically, Apple design and manufacture
their own graphics chips, so it seems obvious they would develop a set of
APIs that can leverage their innovations. Exploring the Metal API
documentation confirms this.

On the positive side, Metal is sufficiently low-level enough that a
relatively complete and actively developed Vulkan API exists in the form of
MoltenVK, so perhaps that is a viable alternative. I have some experience
with MoltenVK and RetroArch, so I'd be happy to help there in the future

"Apple is clearly not interested in supporting open source or cross
platform openness in any way." is a surprising statement when there are
obvious examples of Apple's support for open source. Take their entire
C/C++ compiler toolchain, which is supported on all major desktop
platforms. Swift is also open source and support for other platforms is
making progress. Apple has also contributed macOS specific libraries like
Grand Central Dispatch and added Linux support. More recently, Apple
announced support for cross-platform, cross IDE language server protocol
support for the Swift and C languages <

Incidentally, I do not represent or work for Apple.



On Wed, Dec 12, 2018 at 2:53 AM Ton Roosendaal <ton at blender.org> wrote:

> Hi Stuart,
> Thanks for reaching out. I understand the concern of Apple users.
> However, going native with Metal in Blender is not the way to go.
> For example:
> -The amount of work (since 2014) to move old OpenGL in Blender to OpenGL
> Core Profile was huge. Multiple person years of work. A decent generic
> wrapper to support other APIs than OpenGL (Metal, or Direct3d) is going to
> be even more work than that. Everything in Blender draws with OpenGL. Every
> button, every editor uses it. It means you can only work on graphics apis
> when all developers/contributors to Blender agree on it and will help out.
> - Maintaining such a dual or triple graphics framework is going to take a
> lot of attention and support as well. We will often get situations where
> functionality keeps working in Linux/Windows but then breaks in Mac OS.
> There are better solutions.
> - Blender should choose for supporting open standards. We align closely
> with what Khronos does for that reason.
> The future is to make Blender work with Vulkan. That should be the core
> focus of development efforts.
> - Apple has refused to work with Khronos on Vulkan. However, once Vulkan
> gets more support in the market it's inevitable that there will be a Vulkan
> implementation available for Mac, using Metal. Supporting Vulkan then will
> automatically bring us Mac support back. And we align with every other app
> who prefers to keep working cross platform on Macs.

> But if you want to help us with Metal:
> Cycles has been designed from the ground up to support multiple graphics
> APIs.
> It has good Cuda and OpenCL support for that reason. Here it's possible to
> add Metal as well. Cycles code base is much smaller and much better
> designed (and newer :) than Blender code.
> Why not volunteer first to help with Metal for Cycles? If that project
> looks like it works well, we (and you!) also get more insight in the
> complexity of having this kind of work done for Blender. Adding Metal in
> Cycles will take 3-6 months of work already.

> Last thing for everyone to know: Apple took back our Mac Pro dev system
> loan last summer. My contacts within Apple can't manage to get approval for
> sending us another system. Blender Foundation has to pay for the Apple
> developer program (to sign binaries).
> Apple is clearly not interested in supporting open source or cross
> platform openness in any way. If they would, they'd work with the industry
> on getting decent Vulkan support for their systems. If they were, they
> would give open source coders access to updated hardware.
> Thanks,
> -Ton-
> --------------------------------------------------------
> Ton Roosendaal  -  ton at blender.org   -   www.blender.org
> Chairman Blender Foundation, Director Blender Institute
> Buikslotermeerplein 161, 1025 ET Amsterdam, the Netherlands
> > On 4 Dec 2018, at 20:14, Stuart Carnie <stuart.carnie at gmail.com> wrote:
> >
> > Hi Blender 3D developers:
> >
> > Given the deprecation and poor support of OpenGL on Apple platforms, I am
> > curious if there is any interest in my desire to develop Metal GPU
> support
> > for Blender 3D?
> >
> > I recently implemented Metal support for RetroArch (a cross-platform
> > emulator front end). Some of the highlights of RA:
> >
> > * supports multiple GPU back ends, including GL, Metal, Vulkan, DirectX
> and
> > other esoteric APIs
> > * a complex, shader pipeline for post-processing using a unified shader
> > system of glsl shaders, some in excess of 20 passes (
> > https://github.com/libretro/slang-shaders). These are cross compiled to
> > target APIs such as Metal, Vulkan or DirectX using glslang and
> SPIRV-cross.
> >
> > I've had a bit of a peek at the blender 2.8 branch and imagine the place
> to
> > start would be the GPU folder. I suspect, given the abstractions, there
> has
> > already been some thought into multiple-GPU support and wonder if there
> is
> > any public information on this?
> >
> > Cheers,
> >
> > Stuart
> >
> > *Stuart Carnie*
> > _______________________________________________
> > Bf-committers mailing list
> > Bf-committers at blender.org
> > https://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> https://lists.blender.org/mailman/listinfo/bf-committers

More information about the Bf-committers mailing list