
Vulkan is coming to macOS and iOS, but no thanks to Apple - ekianjo
https://arstechnica.com/gadgets/2018/02/vulkan-is-coming-to-macos-ios-but-no-thanks-to-apple/
======
ryandrake
These guys also have an implementation[1] of OpenGL that’s optimized for
Metal, and supports more modern OpenGL than Apple’s pathetic “frozen in time”
implementation. Sadly it’s not open source, but I suppose a company’s gotta
make money somehow.

Such a shame that such essential support for hardware that comes with every
Mac apparently needs to be provided by a third party.

1: [https://moltengl.com/moltengl/](https://moltengl.com/moltengl/)

~~~
gumby
> Such a shame that such essential support for hardware that comes with every
> Mac apparently needs to be provided by a third party.

Why? The whole point of having a general purpose computer is that you can
install stuff. I do prefer to use the bundled facilities in my OS but
sometimes third party alternatives are superior.

(The point of a phone is arguably different.)

~~~
jonny_eh
It's like leaving road building to companies, it should be provided by the
local government.

~~~
gnarbarian
Road building _is_ done by private companies contracted to build them.

~~~
__s
Which would be Apple having moltengl replace their implementation

~~~
gnarbarian
and pay them for the work...

~~~
Sophistifunk
Why should they? Let the developers who don't want to use metal pay them.

~~~
akritrime
Why should the government pay for fixing potholes? Let the people who don't
want to get stuck in potholes fix them with their own money.

------
mathnode
I am always bitterly disappointed in HN's views and understanding of graphic
API's. HN, what I largely assume is a community of programmers. Not Khronos
idealists. The OpenGL dream died long ago. I think we can thank CAD and GPU
vendors for that.

Yet here we are again. If Valve had to port software to Nintendo or Sony; they
would be using the native, supported API's. Not porting over Vulkan or OpenGL.

Just use Metal. It really is, very good.

~~~
emh68
What do you mean by “the OpenGL dream died”? It seems to me that we were
slowly moving toward a unified API across all operating systems, then Apple
did what they always do and invented their own closed API.

~~~
bronxbomber92
Vulkan, as a Khronos open standard, likely wouldn't exist if Apple didn't make
Metal. Khronos was content for OpenGL{ES} to sputter ad infinitum until it
realized that its largest platform (iOS/macOS) was moving on. It helped that
the rest of the industry (MS, AMD) was also moving in the same direction, but
it was the release of Metal that broke the camel's back.

There were several efforts in the past to revamp OpenGL (e.g. long's peak),
but they all failed. OpenGL was stuck and there was little reason to think the
situation would improve. Writing OpenGL code that worked across multiple
platforms was worse than it is today to write multiple per-graphics-API render
backends.

~~~
kllrnohj
If anything the current crop of new graphics APIs (Metal, Vulkan, and DX12)
all owes their start to AMD's Mantle project. Metal certainly didn't get the
ball rolling, although it almost certainly accelerated Khronos's path to
standardization & shipping (which is why Vulkan adopted Mantle as the base, to
ship quicker). AMD gets that claim.

OpenGL was not stuck, either. OpenGL's AZDO project was alive & well:
[https://www.khronos.org/assets/uploads/developers/library/20...](https://www.khronos.org/assets/uploads/developers/library/2014-gdc/Khronos-
OpenGL-Efficiency-GDC-Mar14.pdf) (just not on macOS because AZDO is GL4.2+
whereas macOS is stuck on 4.1)

------
DLudwig
It looks like the next version of LibSDL, 2.0.8, will support it to some
degree, as of a commit from a few days ago:
[https://hg.libsdl.org/SDL/rev/d97ab6d12404](https://hg.libsdl.org/SDL/rev/d97ab6d12404)

For reference, LibSDL recently added the ability to help initialize Vulkan, in
a cross-platform manner. A bit of further info on this is available at
[https://discourse.libsdl.org/t/sdl-2-0-6-released/23109](https://discourse.libsdl.org/t/sdl-2-0-6-released/23109)

~~~
BinaryIdiot
A little off topic but how is SDL nowadays? I used it for a quick and dirty
game back in my college days (13-ish years ago?) and I really, really enjoyed
using it. It was very approachable and I could build it on my Windows and
Linux PCs.

~~~
pjmlp
Basically the same, a nice API to do accelerated 2D rendering, audio, file and
io access in a portable way.

The API changed a bit with 2.0 release, the biggest change was support for
multiple rendering windows.

------
codeflo
This is really great news. I wonder how this deal went down, businesswise.
MoltenVK used to be a commercial offering by Brenwill Workshop. The way the
press release[1] mentions how Khronos "worked" with Valve and Brenwill
Workshop to "enable" this release makes it sound like there might have been
money involved. If so, great for both Brenwill Workshop and the community.

1: [https://www.khronos.org/news/press/vulkan-applications-
enabl...](https://www.khronos.org/news/press/vulkan-applications-enabled-on-
apple-platforms)

------
movedx
I have a Windows 10 based PC at home. I use it because I like to play games,
but I'm also a YouTube creator and a programmer. In Australian dollars, the
build cost me about $3,000. it's an i5 6600K, 16GB of 2333MHz RAM, a 256GB
Samsung 950 Pro NVMe M.2 SSD, and an nVidia GTX 1070.

I would drop this system in a heart beat if I could play all my AAA games on
macOS, and I would replace it with a high end iMac Pro. Sadly two problems
remain:

\- I can't play my AAA games on macOS because things like Vulkan aren't fully
adopted and in place yet

\- You can't swap out the GPU in the iMac Pro

This is why my next build is going to be a Hackintosh.

~~~
zanny
Barely any AAA games support OSX anyway anymore. Both OSX and Linux are second
class citizens for AAA publishers because all their studios drink the DX
koolaid hard, even in an age where almost every game is made on Unreal / Unity
/ Cryengine / etc and all those engines are OS portable they still only see
Windows releases.

~~~
ryandrake
That’s never made much sense to me. I could see if you’re not using one of the
major (portable) game engines—you might not want to spend the time developing
Windows, Mac, and Linux ports. But if your underlying engine is already
portable, would it kill you to hit build a few extra times to produce an
“unsupported” Linux or Mac release?

Unless you’re deliberately using Windows specific stuff in you non-platform-
specific areas like game logic. In which case _facepalm_.

EDIT: I know it’s not THAT simple but in general why not have a policy to be
portable by default, platform dependent only when necessary?

~~~
zanny
The major cost barrier is support. If you are going to sell a product for a
platform, you need to be able to have your CS staff handle support tickets
involving it. Officially Steam on Linux only supports Ubuntu and SteamOS, so
you can just throw out problems on other distros (albeit I'm not aware of any
distro not taking responsibility for Steam breakages that work on Ubuntu and
they aren't that common either).

Even then, having to implement that support infrastructure is time consuming
if you have _never_ supported that platform before. It is the first game that
is the hardest. That is why publishers like Paradox and 2K can just throw
almost every new release on Linux nowadays since they are all made on portable
engines, are going to support OSX anyway, and they already have the support
infrastructure for SteamOS and Ubuntu.

Its not even really an option, either. Since the games are commercial products
in many (European) countries they have to by law support them in this way.

------
MBCook
There’s a little bit at the end of the article saying Khronos is doing the
same thing to put Vulkan on top of DX12.

~~~
dralley
What is the use case for that? Running Vulkan within UWP apps?

~~~
ovao
Yes, as explained in the article:

> While Windows, unlike macOS, does have Vulkan drivers from GPU companies,
> applications sold through the Microsoft Store are only permitted to use
> DirectX.

~~~
braderhart
Simple solution = installing operating systems that support open standards.

~~~
sametmax
You're not a gamer, are you ?

~~~
braderhart
Yes, I am well-versed. You can play many games in Linux and I have Steam
installed on my Arch distro with latest stable kernel and graphics drivers,
and they are all automatically updated using my package manager and aurutils
for extended third-party. It is so much faster than PowerShell, and my i3
windows manager is much more efficient.

I just got new laptops that will support both GVT-G and PCI passthrough via
OVMF so that I can run my bloatware OS in a KVM VM but still get full 3D
acceleration. Hopefully Microsoft decides to contribute heavily back to Wine,
or maybe open source their 4GB spyware beast to understand what it is actually
doing that makes it so large compared to my distro, which does everything
Windows does in much less resources both storage and compute.

------
haxiomic
Can anyone who has experience with MoltenVK discuss any potential pitfalls?
(It's existed in a closed-source form for 2 years). Is it a case of loading
the library and forgetting it, or will you likely need some MoltenVK-specific
codepaths to use it?

~~~
kvark
Vulkan Portability subset is excluding the following features (at the moment!)
from core Vulkan:

    
    
      - triangle fans
      - separate stencil reference values
      - events
    

There are also extra limitations to things like the maximum buffer size, which
are exposed via Molten-specific API.

------
efnx
This is great news! Anyone have a recommended Vulkan intro?

~~~
fulafel
Here's a 1192 line example that draws a colored triangle:
[https://github.com/SaschaWillems/Vulkan/blob/master/examples...](https://github.com/SaschaWillems/Vulkan/blob/master/examples/triangle/triangle.cpp)

~~~
thealfreds
> Contrary to the other examples, this one won't make use of helper functions
> or initializers

Wondering what the code would look like with the helpers. Is this a bit of a
"recoding of the wheel" example/exercise by Sascha?

~~~
dogma1138
Helpers and initializers aren’t necessarily platform agnostic in Vulkan same
goes for non-mandatory / base extensions.

Say what you want about D3D at least it follows a strict take or leave it
regime.

------
evolve2k
Silly question. Would installing this likely have any affect on Media Design
tools like Adobe After Effects, Adobe Premier or Cinema 4D?

~~~
teilo
No. This would be included in the app itself, and would no more interfere with
Metal than one Metal app would interfere with another.

------
twtw
This is great. I've seen MoltenVK before, but did have any reason to justify
getting it.

I am a really big fan of Vulkan. While it takes a bit more work to get going
and does less for you, I find the increased transparency very valuable and
more enjoyable than trying to guess what the driver is doing.

------
jheriko
Graphics programming is so painful because of these anachronisms :(

the Apple gles implementation is buggy as hell. produces gpu crashes from
compliant code etc... I have low expectations. they have made a new annoyance
in our lives ... nothing more

------
chris_wot
I suspect this is going to help LibreOffice, as we extensively use OpenGL now:

[https://wiki.documentfoundation.org/OpenGL](https://wiki.documentfoundation.org/OpenGL)

------
emh68
It’ll be interesting to see if this helps the lack of games on Mac in the long
run.

------
Ericson2314
This is the best way to fight back against the rent seekers. Good luck!!

