8 ms·
Deprecation of OpenGL and OpenCL (2018)
- Asraelite 4y agoI don't see any mention of their deprecation, is the linked page correct? As an aside, Apple has been pretty good about adding support for WebGL 2.0 and WebGPU to Safari recently. I wonder if this will drive more people to build web apps instead of having to target Metal.
- secretsatan 4y agoPretty much everything marked as deprecated in GLKit: https://developer.apple.com/documentation/glkit https://developer.apple.com/documentation/glkit I have been getting into metal, but maybe I should be looking more into Vulcan
- hddqsb 4y agoThe page shows the current news, here is an archived snapshot from 2018 that talks about the deprecation: https://web.archive.org/web/20181226081443/https://developer.apple.com/macos/whats-new/ https://web.archive.org/web/20181226081443/https://developer...
- natly 4y agoSo wait since they seem to have changed the page, does that mean opengl isn't depricated (or planning on being depricated)?
- hddqsb 4y agoHa ha, no. The macOS 10.14 SDK deprecated OpenGL in 2018, and the page currently shows what's new in macOS 12. Here is a live page with the macOS 10.14 release notes showing the deprecation: https://developer.apple.com/documentation/macos-release-notes/macos-mojave-10_14-release-notes https://developer.apple.com/documentation/macos-release-note...
- pjmlp 4y agoSure, if all they care about is the GPU state of art in 2011, because WebGL 2.0 won't go further than a OpenGL ES 3.0 subset. Also when WebGPU gets released later this year, it will be a subset of version 1.0 from Metal, Vulkan and DX 12. If you want state of the art graphics on the Web, only via streaming like Unreal Pixel Streaming, GeForce Now or XBox Cloud.
- flohofwoe 4y agoThe newer WebGL support in Safari is unrelated to the system OpenGL implementation. Instead WebGL in Safari is now built on top of ANGLE which has "new-ish" Metal backend: https://chromium.googlesource.com/angle/angle/+/refs/heads/main/src/libANGLE/renderer/metal/ https://chromium.googlesource.com/angle/angle/+/refs/heads/m...
- bullen 4y agoOpenGL can't be deprecated, just like IPv4 or HTTP. That combined with the fact that VAO that came in version 3 is the last feature makes all threats to force you to update weak at best. As hardware peaks you can stop worrying about new things and write software that never goes bad. The wheel has not been rediscovered for a long time. Focus on the vehicle instead = bike.
- jokoon 4y agoYeah, I bet apple just wants to discourage project managers and other deciders from using OpenGL and adopt their new thing. In the end, those strategies will require more work from developers, and those developers become "locked" on apple. It's a shitty practice.
- m-p-3 4y agoWouldn't it make more sense for the developers to target something more universal like Vulkan and then add an abstraction layer like MoltenVK[1] to make it work on MacOS if needed? [1]: https://github.com/KhronosGroup/MoltenVK https://github.com/KhronosGroup/MoltenVK
- pubby 4y agoVulkan takes a lot more effort than OpenGL.
- dimman 4y agoI think there's a confusion of terms, there's a big difference between 'deprecated' and 'obsolete'. They sure can be deprecated, which can be read as "not recommended for use and _may_ be removed in a future release", but that doesn't mean it has been removed/made obsolete.
- romwell 4y agoThe joke from when I worked in Google was "deprecated means stable"
- natly 4y agoThis reminds me of the horrible state of mac gaming back in the day when almost no games existed for mac. (Minecraft was one of the only decent games I remember being able to play, due to being built on opengl.) Things aren't perfect on that front yet but it's certanily improved a lot. I wonder if them forcing people to use metal for graphics could bring this wall up again to make the bar too high for developers to port it.
- ChrisMarshallNY 4y agoAs a Mac person, I can report that it still sucks. If I'm lucky, I'll get to play a AAA game, a year and a half after it's released on Windows. All that sneering at Macs as "toy" computers is ridiculous. It's the worst gaming platform in the world. Linux is better. I use a Mac because I need to get work done.
- natly 4y agoMakes me wonder if there's an opportunity to make games for the mac. You can make decent things with a month turnaround if you're proficient and there's a lot of mac users. If they're this desperate it might be a lower hanging fruit than a lot of other SaaS type ideas that you could try to tackle for a side hustle.
- rbanffy 4y ago> Makes me wonder if there's an opportunity to make games for the mac. M1 Macs can run the extensive iOS game library. While you won't find many AAA Windows or console games on it, there is no lack of entertainment on the platform.
- Crabber 4y agoI don't think there's any market. The only people who buy macs are people that have no intention of playing videogames on that system. I personally transitioned from Windows -> Linux -> MacOS, and each switch correlated exactly with how much I was playing videogames at that time. I don't play games anymore which is why I'm perfectly content using a mac. If I wanted to play games again I would go back to linux, or all the way back to windows.
- cyber_kinetist 4y agoOpenGL/CL is officially deprecated in all Macs, but Apple will probably not remove it for quite some time, because of many really important 3D applications (like Autodesk products) having trouble with ditching their OpenGL/CL legacy code. Even more hilariously, I’ve heard anecdotes that the quality of the OpenGL drivers for M1 are higher than expected and is pretty heavily optimized!
- galad87 4y agoThe OpenGL "driver" on the M1 (and on iOS) is just a wrapper around the Metal API, like MoltenVK is doing for Vulkan.
- account42 4y agoSo? It's not like other OpenGL drivers don't have lower level abstraction layers internally and Metal is something Apple apple controls and therefore can extend if the higher level OpenGL driver runs into performance bottlenecks due to the abstraction. And the "just" here is unjustified considering the complexity of a performant OpenGL implementation, no matter what API you have available to build it on - the fact that Apple have bothered to do that considering the deprecation and their general disdain for backwards compatibility is positively surprising.
- flohofwoe 4y agoSo... even though OpenGL is deprecated there seems to have been a lot of work going on under the hood to preserve the "status quo" for the future (e.g. Apple's OpenGL implementation now seems to be a shim on top of Metal instead of having a separate low-level driver). I guess that means we won't see any new GL versions above 4.1 (TBH: good riddance), but what's there now will probably work for a while.
- traspler 4y agoFrom what I heard, Apple‘s OpenGL driver had a lot of bugs & issues, now that they kind of re-built it as a wrapper, did they they care to replicate the bugs as well? If not I would assume that some Apps might not work with this new wrapper or maybe some even get perf boosts. Or am I understanding things wrong?
- flohofwoe 4y agoFrom what I'm seeing with my own GL code (fairly basic GL 3.2 stuff), the actual GL implementation is quite ok, but utility classes like NSOpenGLView have been a bit hit and miss in recent years. I would expect though that their new GL-on-Metal thing is a bug-for-bug compatibility layer for existing applications, otherwise it wouldn't make much sense because new apps shouldn't use GL anyway.
- rowanG077 4y agoopenGL for all it's faults is still miles more preferable then proprietary, only useable on Apple devices, Metal.
- Rhedox 4y agoOpenGL was practically deprecated on MacOS since 2012. It hasn't been updated since 2011.
- can16358p 4y agoThe link just points to Apple's general developer news. It mentions many M1-related stuff so it's impossible that the page dates to 2018.
- bitwize 4y ago3D APIs are like GUI toolkits: Use the one supplied by the vendor. Metal on Apple, DirectX on Microsoft, whatever proprietary one comes with the game console(s) you're developing for. If you're a gamedev, your engine should abstract all these away. If you're a gamedev, you should be using a commercial engine unless you have a John Carmack on staff. OpenGL and Vulkan are the worst of all worlds and really only make sense on Linux or Android, which have nothing else.
- Crabber 4y agoThe vendors are the GPU manufacturers. And both AMD and Nvidia offer full support for OpenGL and Vulkan. There is no reason why I should have to use a different APIs to access the exact same graphics hardware depending on whether I'm running Windows, Linux or MacOS. OpenGL and Vulkan work just fine.
- pjmlp 4y agoFor various levels of just fine, and cranky tooling. It only took 20 years to have RenderDoc catch up to PIX, and still nothing comparable to DirectXTK or MetalKit in sight. And in regards to game consoles even worse.
- badsectoracula 4y ago> And both AMD and Nvidia offer full support for OpenGL and Vulkan With big fat asterisks for the AMD OpenGL drivers on Windows :-P. Just recently i read about someone trying Zinc (the OpenGL-on-Vulkan implementation) on AMD hardware under Windows is actually faster than AMD's own drivers (which is on line with what i've observed with my own code between AMD on Windows with AMD's drivers and AMD on Linux with Mesa with the latter being way faster than the former).
- zamalek 4y agoYou should try out DXVK on Windows; it's usually as fast, if not faster.
- usrn 4y agoThese sorts of games from OS vendors are why everyone still writes VT apps.
- DeathArrow 4y agoThis is madness. They simply don't want 3D software, otherwise they would have supported cross platform graphics Apis. No developers gives a damn about Metal on MacOS. They wouldn't give a damn about Metal on iOS, too, if Apple wouldn't have forced their hands. Even MS allows OpenGL and Vulkan on Windows.
- criddell 4y agoI'd love to see an implementation of Metal on Windows and Linux.
- dyingkneepad 4y agoWhy??? We have Vulkan and DX12. We can in theory have those on top of Metal. Why would you want Metal on others?
- criddell 4y agoMetal (and MetalKit) is a more humane API. Frankly, I'd rather use old OpenGL than Vulkan. Vulkan feels like it was designed with the hardware in mind rather than developers. DX12 may be fine, I have no experience with it.
- moth-fuzz 4y agoThis has been kicking my ass lately as I am trying to build a generic GL abstraction over the past year or so. OpenGL is in such an odd state that the actual graphics hardware hasn’t changed significantly in a decade or more, but the API certainly has grown to be more elegant. OpenGL 2-3 had a nice way of doing things, 3.3-4.1 is a weird and inconsistent API, and 4.3+ is nice again. But good luck finding support for 4.1+ anywhere. Not on macs, not on old cards, not on web, not on mobile. So in 3.3-4.1 land, you get to do the exact same things you’d do in 4.3 land, but in more tedious ways programmatically, because the drivers and implementations decide how elegant you are able to make your code and abstractions. The commands that end up on the GPU are the exact same regardless but the developer experience is highly variable. My point is GL versions do not delineate features nor performance enhancements past a certain point, they delineate periods of programmer happiness. It is solely up to the drivers, not the hardware, not the actual machinery, to determine this metric. GL, being a standard rather than an implementation, suffers for this. I happily await webgpu finalization.
- contravariant 4y agoWhat kind of cursed limbo is 4.2 in?
- moth-fuzz 4y agoWell, historically, 4.0 was made to be roughly equivalent to 3.3 IIRC. 4.1 didn't add much and 4.2 started seeing changes going in the direction that was roughly complete by 4.5 I'd say. So each version bump in the 4.x range is just a history of getting a slightly cleaner API each version until you get to a version where you can personally say "I'm okay with this now" based on your preferences as a developer. For me personally that version is 4.3, it has the features where I think "this makes sense as an API" and things that came after that were just extra conveniences. But what are just conveniences for some developers are the basic core abstractions for other developers, and where you draw that line is up to you. In my personal opinion, 4.2 is like, halfway to 4.3 But sometimes it's more comfortable to go none of the way than half of the way, hence me targeting 4.0 in my most recent library.