|
|
Subscribe / Log in / New account

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Over at the Collabora blog, Erik Faye-Lund writes about Zink, which is an effort to create an OpenGL driver on top of Vulkan that he has been working on with Dave Airlie. "One problem is that OpenGL is a big API with a lot of legacy stuff that has accumulated since its initial release in 1992. OpenGL is well-established as a requirement for applications and desktop compositors. But since the very successful release of Vulkan, we now have two main-stream APIs for essentially the same hardware functionality. It's not looking like neither OpenGL nor Vulkan is going away, and the software-world is now hard at work implementing Vulkan support everywhere, which is great. But this leads to complexity. So my hope is that we can simplify things here, by only require things like desktop compositors to support one API down the road. We're not there yet, though; not all hardware has a Vulkan-driver, and some older hardware can't even support it. But at some point in the not too far future, we'll probably get there. This means there might be a future where OpenGL's role could purely be one of legacy application compatibility. Perhaps Zink can help making that future a bit closer?"

to post comments

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 2, 2018 11:42 UTC (Fri) by ledow (guest, #11753) [Link]

Never hurts to have a backwards compatible layer on everything you can.

I can quite see this being used to run "old games/apps" in the future when everyone has stopped bundling OpenGL drivers and instead does only Vulkan (or whatever supercedes it).

Not unlike GL wrappers now.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 2, 2018 18:11 UTC (Fri) by teknohog (guest, #70891) [Link] (5 responses)

> OpenGL is a big API with a lot of legacy stuff that has accumulated since its initial release in 1992.

A lot of that legacy stuff was deprecated with OpenGL 3.0 in 2008 and removed the following year with 3.1, so this isn't quite as clear-cut.

For the purposes of running old games etc., a separately compatibility layer makes more sense than maintaining OpenGL 1/2 drivers forever. But I imagine that current software has already moved on to OpenGL 3/4, so that argument doesn't hold as much.

A part of the problem seems to be that current OpenGL drivers haven't removed the old API, and you can still find code examples with legacy OpenGL around the web. This is something that should be cleaned up first, IMHO. I'm not sure if OpenGL 1/2 on top of 3/4 makes sense, but at least the legacy status of 1/2 should be made clearer.

On a more general level, layering OpenGL on top of Vulkan seems rather obvious, in the same way the Python interpreter is written in C.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 2, 2018 21:05 UTC (Fri) by anholt (guest, #52292) [Link] (4 responses)

>A part of the problem seems to be that current OpenGL drivers haven't removed the old API, and you can still find code examples with legacy OpenGL around the web. This is something that should be cleaned up first, IMHO. I'm not sure if OpenGL 1/2 on top of 3/4 makes sense, but at least the legacy status of 1/2 should be made clearer.

It's not just code examples. It's modern games and major desktop applications. AMD's been extending how far forward compat contexts can go on Mesa because today's software demands it. It may be absurd, but if we don't support it our users will just switch to closed source drivers that work. The compat/core split that the ARB attempted has clearly failed.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 4, 2018 0:05 UTC (Sun) by teknohog (guest, #70891) [Link] (3 responses)

I guess the lesson is that if you make large enough changes to a technology, you should change the name and break compatibility for good. Which is probably one reason why Vulkan was created.

The situation with OpenGL is looking a bit like USB: version 3 is a wholly different technology, but the wiring for v1/2 is kept around for compatibility. (I remember when USB was supposed to replace old ports in "legacy free" PCs, so this is particularly ironic.)

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 4, 2018 15:04 UTC (Sun) by mageta (subscriber, #89696) [Link] (1 responses)

Throwing away all backwards compatibility every (second) hardware generation sounds like a wet dream of hardware sellers.

Being able to run old(ish) hard- and software has incredible big value to many Users.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 6, 2018 14:55 UTC (Tue) by Wol (subscriber, #4433) [Link]

Back when RS232 was going away I remember when Bill Gates allegedly told a company "just buy new peripherals then" when they complained new computers didn't have the old serial ports.

At 250K per peripheral, maybe 10 of them, that's a lot of money ...

Cheers,
Wol

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 6, 2018 0:49 UTC (Tue) by rgmoore (✭ supporter ✭, #75) [Link]

I remember when USB was supposed to replace old ports in "legacy free" PCs, so this is particularly ironic.

It seems to me that the real selling point of USB was that it was unifying. Instead of needing separate, dedicated ports for keyboard, mouse, printer, etc. you could plug just about anything into the one port and it would just work. There were dongles that let you plug your old devices into the new ports- I still have some devices around that depend on USB/serial converters- but devices that were designed for USB would just work. Maintaining wiring so the old USB 1 and USB 2 devices continue to work (though they may need simple adapters to plug into USB type C ports) is in the true spirit of the original design.

If anything, USB has been so successful as a universal connector that it's created security problems. We're used to using it not only as a communications connector but also as a power connector, and that leads people to do all kinds of unsafe things. We get USB-powered devices and plug them into our computers without considering that they might be Trojans. Similarly, we happily power our phones from public USB power cables without considering the potential security problems.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 5, 2018 21:57 UTC (Mon) by xtifr (guest, #143) [Link] (3 responses)

I'm surprised nobody has mentioned the most obvious comparison: XWayland. A shim layer to allow legacy apps which need the old ABI (X or GL) to run on the new (Wayland/Vulkan).

In both cases, I think it's an outstanding idea.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 10, 2018 3:11 UTC (Sat) by flussence (guest, #85566) [Link]

Or XGL, which was the opposite - a shim to run new apps (primarily Compiz) on legacy (nvidia) drivers.

The way things are going, Wayland may end up wedged into the same role for the same reason.

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 15, 2018 5:59 UTC (Thu) by gwg (guest, #20811) [Link] (1 responses)

> I'm surprised nobody has mentioned the most obvious comparison: XWayland. A shim layer to allow
> legacy apps which need the old ABI (X or GL) to run on the new (Wayland/Vulkan).

XWayland isn't a replacement for X11 - it lacks support for critical features such as color management, since Wayland itself lacks such support. (No color management is really unforgivable in a graphics API that claims to be modern.)

Introducing Zink, an OpenGL implementation on top of Vulkan (Collabora blog)

Posted Nov 15, 2018 7:08 UTC (Thu) by Cyberax (✭ supporter ✭, #52523) [Link]


Copyright © 2018, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds