-
Notifications
You must be signed in to change notification settings - Fork 444
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dropping OpenGL 2.1, OpenGL ES 2.0 and WebGL 1.0 support #78
Comments
I'm a bit concerned about dropping GLES 2, as the number of devices that support GLES3 are few and far between at this point. I'm pretty associated with the Dolphin emulator, and our Android port requires GLES3 (I think for UBOs but I'm not sure) but there are some really nasty driver bugs that make it pretty hard to use (Qualcomm's drivers in particular are terrible). Although WebGL2 probably won't get enabled until there are a lot of mobile devices with support for it anyway. |
Yep, the quality of drivers is a very serious problem. Even on desktop, except for NVidia, implementation quality of GL4+ functionality is horrible and sometimes it looks like nobody tested given thing at all. I remember that I read a blog post about mobile driver quality from Dolphin developers and it read like a nightmare. I hope things got better since then. I wonder, does all newly released hardware already support GLES3 or are there still new models with GLES2 only? |
Fwiw in unity we get frequent crashes on some Android devices if we enable
|
Well, guess I was being too optimistic. Thanks for the valuable info! |
Might be worth keeping an eye on this: https://developer.android.com/about/dashboards/index.html#OpenGL |
When toying with OpenGL ES on Android, the most common maximum support for OpenGL was 2.0. |
Six years later, it finally might be the time to do this!
Right now, Magnum's source code has about ~2k occurences of |
Hi! :) Just thought I'd chime in and serve as a data point. We discovered Magnum only a few months ago, and then we chose it precisely because it was the only library (we could find) that offered integration with third-party rendering, whilst also supporting older OpenGL versions. It's been working seamlessly so far. Our specific use case is rendering within a VCV Rack plug-in, where rendering must be performed within its OpenGL 2.1 context. We have no control over the OpenGL version used here, and it's unlikely VCV will move to a more modern one, as they target fairly old hardware. We're also targeting VST3, AUv3, etc. plug-in formats too, but here we own the window handle, and we're free to use an OpenGL version of our choosing (probably one with a core profile). Magnum is a perfect fit here, allowing us to share the same rendering code between both use cases and differing OpenGL versions. Older OpenGL isn't dead yet, and we'd appreciate it if the support remained; however, I understand maintenance is probably cumbersome, and nothing feels better than deleting a bunch of old code, so it's understandable if you do drop the support. |
@crncnnr hi, thanks for the feedback! Good to know. Sure, if you have a use case for GL 2.1, then it's here to stay :) The "old GL" code is pretty much complete with nothing significant missing or broken, it's well-tested and well-documented, so it's not a manintenance nightmare, it just occupies space. Most of the GL 2.1 code paths are shared with WebGL 1 and even though majority of platforms is WebGL2-capable, WebGL 1 doesn't seem dead yet either (and removing GL 2.1 while keeping WebGL 1 wouldn't make sense from the testability perspective). It's possible that certain new features won't work with GL 2.1, but the base GL wrapper will continue to do so. (Or backporting of the new features can happen later if there's demand for it, like it happened with ImGui integration that used to be GL3+ but now works on 2.1 as well.) Similarly I considered dropping GCC 4.8 support not so long ago, only to discover that it's still useful for manylinux packages, and thus it's still supported. Even though I have to put an occasional workaround here and there, it's not that painful either. |
Note: Don't panic, the main blocker is WebGL, as version 2.0 is still under heavy development and without any release date yet. I don't want to drop HTML5/NaCl support, so this change will not happen sooner than when WebGL 2.0 is officially supported in most browsers.
Current status:
Currently it looks like it won't happen sooner than in H2 2015 (possibly along with updates for next major release of desktop OpenGL, GLnext).
What the switch to ES 3.0 / GL 3.0 / WebGL 2.0 at minimum would mean (feature wishlist):
bindAttributeLocation()
calls, again massively simplifying shader code.gl_VertexID
(no hacky fullscreen triangle anymore).GL_LUMINANCE
formats.Buffer::map(MapAccess)
function.ARB_vertex_array_object
support, thus reducing the bloatedMesh
class.ARB_framebuffer_object
support on desktop, no annoying extension checks. In fact I could probably do this already, because this functionality is present WebGL and GLES, yay!Switch to GL 3.1 at minimum would mean also:
Switch to GL 3.2 at minimum would mean also:
The text was updated successfully, but these errors were encountered: