|
|
Log in / Subscribe / Register

Announcing Vulkan 1.0

Vulkan is a new graphics API specification, seemingly meant to supersede OpenGL. Collabora has announced the availability of the 1.0 specification — and that the Wayland compositor already supports it. "To provide the best possible base for fluid modern user interfaces, Collabora have worked extensively on the Wayland window system, the underlying Kernel Mode Setting drivers and atomic modesetting, and also the EGL specifications and implementations. We are proud to continue this work with Vulkan." Intel has announced an open-source Vulkan driver for its hardware as well.

to post comments

Announcing Vulkan 1.0

Posted Feb 16, 2016 19:37 UTC (Tue) by jzb (editor, #7867) [Link]

Anybody who wants to try this out on Fedora, check the post to the devel list from Adam Jackson.

Announcing Vulkan 1.0

Posted Feb 17, 2016 5:04 UTC (Wed) by daenzer (subscriber, #7050) [Link] (8 responses)

There is no "the Wayland compositor". It would be better to say that "the Wayland protocol" is supported by Vulkan right from the start, which is definitely awesome. :) The linked announcement has some examples of specific Wayland compositors which can run Vulkan clients out of the box.

Announcing Vulkan 1.0

Posted Feb 17, 2016 18:57 UTC (Wed) by fandingo (guest, #67019) [Link] (6 responses)

> There is no "the Wayland compositor".

Umm, yes there is. It's called Weston.

Announcing Vulkan 1.0

Posted Feb 17, 2016 21:01 UTC (Wed) by HelloWorld (guest, #56129) [Link] (2 responses)

Umm, no, there isn't. What you mean is "the Wayland reference compositor".

Announcing Vulkan 1.0

Posted Feb 17, 2016 21:57 UTC (Wed) by fandingo (guest, #67019) [Link] (1 responses)

...which is named Weston.

Announcing Vulkan 1.0

Posted Feb 17, 2016 23:39 UTC (Wed) by nybble41 (subscriber, #55106) [Link]

Weston is *a* Wayland compositor, and the *reference* Wayland compositor, but it is not "the Wayland compositor". There are many Wayland compositors, and Weston is not among those which most users are likely to interact with beyond experimentation. GNOME, KDE, and Enlightenment each supply their own compositor, for example. "Wayland compositor" is a role akin to an X window manager, not a specific piece of software.

Announcing Vulkan 1.0

Posted Feb 17, 2016 22:44 UTC (Wed) by raven667 (guest, #5198) [Link] (2 responses)

It's a reference implementation but it is not the only Wayland compositor and doesn't define the standard, it just follows it like any other compositor.

Announcing Vulkan 1.0

Posted Feb 17, 2016 22:50 UTC (Wed) by fandingo (guest, #67019) [Link] (1 responses)

I'm well aware. Thanks.

Announcing Vulkan 1.0

Posted Feb 18, 2016 4:06 UTC (Thu) by raven667 (guest, #5198) [Link]

Then I completely missed your point, were you just feigning ignorance to make some rhetorical shot that I missed?

Announcing Vulkan 1.0

Posted Feb 18, 2016 11:01 UTC (Thu) by robbe (guest, #16131) [Link]

Jon’s summary was a bit off in this regard. Here’s from The Fine Announcement:

> Vulkan clients can run on unmodified Wayland servers, including
> Weston, GENIVI LayerManager, Mutter / GNOME Shell,
> Enlightenment, and more.

Announcing Vulkan 1.0

Posted Feb 17, 2016 10:05 UTC (Wed) by oldtomas (guest, #72579) [Link] (14 responses)

Holy smoke. Vulkan's "quick reference" is thirteen densely packed pages.

I'm a total outsider, so be gentle. But if someone "in the know" would like to share some insights: is this kind of complexity necessary, or just the product of an "industry consortium"? Or something in between?

If there were some kind of incentive towards simpler interfaces... would we have them? Or are we looking at (more or less) an "irreducible core" (take or give a power of two) of what is needed?

Announcing Vulkan 1.0

Posted Feb 17, 2016 10:13 UTC (Wed) by jack.mitchell (guest, #86281) [Link]

There was a great talk on this very subject at Fossdem, link below.

http://video.fosdem.org/2016/k1105/vulkan-in-open-source.mp4

Announcing Vulkan 1.0

Posted Feb 17, 2016 10:19 UTC (Wed) by DOT (subscriber, #58786) [Link]

Considering that it's a very low-level graphics API, I'm not surprised at its verbosity. Vulkan is really only a thin hardware abstraction layer for GPUs. You could probably use it to write a generic OpenGL 'driver'. But it's designed to allow AAA game engine developers (Valve, Id, Epic, Crytek, etc) full control over the hardware. I think mere mortals would rather keep using OpenGL.

Announcing Vulkan 1.0

Posted Feb 17, 2016 13:50 UTC (Wed) by tshow (subscriber, #6411) [Link] (5 responses)

> Holy smoke. Vulkan's "quick reference" is thirteen densely packed pages.

If that's your reaction, Vulkan is Not For You, and that's fine. OpenGL is still there, and it does the job.

Vulkan is for when you need to push the hardware as hard as you can, and are willing to get it at the cost of throwing away all the convenience (memory allocation, state tracking, error handling...) that OpenGL gives you.

I'm a game dev, and I'll be using Vulkan, but if I'm going to do something like a tool, I may well do it in OpenGL. You can kind of think of Vulkan as C/C++ where OpenGL is more Ruby or Python. If it's not performance critical, OpenGL is easier and good enough.

Announcing Vulkan 1.0

Posted Feb 17, 2016 15:02 UTC (Wed) by oldtomas (guest, #72579) [Link] (2 responses)

Thank you all for your insightful answers. And I'll definitely watch that video, thanks Jack.

> If that's your reaction, Vulkan is Not For You, and that's fine.

Most probably. But my question/reaction was more from a "philosophical" standpoint:

> Vulkan is for when you need to push the hardware as hard as you can, and are willing to get it at the cost of throwing away all the convenience [...]

I understand that -- that'd mean that Vulkan's architecture reflects the video hardware's architecture *as it is today*, with little abstraction.

Now what do we do when the video architecture changes under us significantly (which will probably happen in a not too distant future)? A new Vulkan?

Announcing Vulkan 1.0

Posted Feb 17, 2016 15:33 UTC (Wed) by farnz (subscriber, #17727) [Link]

Vulkan's abstractions are just thick enough to support any reasonable memory->processing pipeline->memory coprocessor design. If we get a rendering pipeline that's nothing like the existing OpenGL pipeline, Vulkan can support it as a new flag on queues; existing flags are effectively "compute shader", "rasterization rendering pipeline", "image copy and convert operations", and "virtual memory support"; it would be possible to add a flag for (say) "raytracing rendering pipeline", and then expose queues that support raytracing operations.

Announcing Vulkan 1.0

Posted Feb 17, 2016 16:08 UTC (Wed) by Sesse (subscriber, #53779) [Link]

Well, OpenGL 1.0 represented the graphics pipeline as it was in the 80s. :-) Somehow that's not such a great fit anymore either. Maybe hardware will evolve really far from DX12/Vulkan, but for now, it's a much better match.

(Granted, modern OpenGL also looks nothing like OpenGL 1.0. But driver overhead can be painfully high.)

/* Steinar */

Announcing Vulkan 1.0

Posted Feb 17, 2016 17:02 UTC (Wed) by pclouds (guest, #76590) [Link] (1 responses)

> I'm a game dev, and I'll be using Vulkan

Speaking of which, how do game devs generally "feel" about Vulkan? Linux gamers are going nuts because it promises more and better games.

Announcing Vulkan 1.0

Posted Feb 18, 2016 13:55 UTC (Thu) by tshow (subscriber, #6411) [Link]

> Speaking of which, how do game devs generally "feel" about Vulkan? Linux gamers are going nuts because it promises more and better games.

I can't speak for anyone but myself, and I'd say if you asked 8 game devs you'd probably get 11 opinions, but I think generally:

OpenGL is considered to be good, but flawed. There is lots to like; cross-platform, reasonably powerful, reasonably well thought out API. There's lots of annoyances; multiple completely different APIs in one bag, no platform-independent window or font management, the hardware it was modeled on is obsolete...

I think what most devs want is more or less:

- full platform-independence -- no glx/wgl/agl crap, I shouldn't have to #ifdef to get a window with a graphics context
- get rid of the old stuff nobody needs -- if anyone really needs bitblt ops or stippling they can do it in a shader
- pull a bunch of extensions into core -- many of these were for modern hardware support, but you have to jump small hoops to use them
- strip off some of the overhead -- moar speed

Vulkan looks to deliver a lot of that.

The glaring problem now is Apple; it's looking like so far Apple is content to keep an old version of OpenGL and push Metal, their own 3D library. That said, given their historic antipathy to games, I assume Metal will stagger along for a few years and eventually Apple will quietly stick Vulkan drivers in their desktop OS, at least.

So... I think most game devs are hopeful about Vulkan, though I assume not many are ready to bet the farm on its success yet.

Announcing Vulkan 1.0

Posted Feb 17, 2016 15:22 UTC (Wed) by malor (guest, #2973) [Link] (1 responses)

>is this kind of complexity necessary, or just the product of an "industry consortium"? Or something in between?

Not a graphics dev, but from a broad overview, I think the whole purpose of Vulkan is removing abstraction, and letting you get as close to the metal as you possibly can.

Abstractions always have a cost, both in terms of runtime and in narrowing the possible solution space for a problem. Vulkan seems to be about throwing away most of those, and then letting you build your own, ones that exactly match your specific goals.

I understand that existing toolkits are also pretty strongly single-threaded, which is no longer true in Vulkan. On modern multi-core processors, you should be able to get much better performance.

I rather expect you'll start to see small/simple abstraction layers to manage the worst of the boilerplate, while still taking advantage of the multithreading.

But, fundamentally, this is not a product to make your life simple. Rather, it's a product to make your programming life complex, and in return to give you blazing speed.

Announcing Vulkan 1.0

Posted Feb 18, 2016 0:32 UTC (Thu) by roc (subscriber, #30627) [Link]

Working around GL driver bugs already makes our lives complex. Vulcan might, in the long run, reduce that problem by simplifying the driver.

Announcing Vulkan 1.0

Posted Feb 17, 2016 16:51 UTC (Wed) by farnz (subscriber, #17727) [Link]

Fundamentally, Vulkan as specified today provides standard abstractions for 4 common sets of GPU features, on the assumption that the GPU's behaviour is "read memory objects, feed data through a processing pipeline, write memory objects":

  1. Compute shaders - think OpenCL type processing.
  2. Raster graphics pipeline, as per current OpenGL/DirectX.
  3. Sparse memory binding - think virtual memory without paging.
  4. Image transfer - copy, format convert, blit with optional scaling and filtering.

Looking at the 13 pages, it's not that painful, either. About 3.5 pages of the quick reference are "fluff" - present so that you can see a descriptive enumeration and look up the right page of the spec immediately - another page and a half are all about window system integration, which is supplementary to the API itself (it's defining how you tie a Wayland surface, X11 drawable, Windows HWND or equivalent to Vulkan rendering). That leaves about 8 pages on core Vulkan APIs; about a page of that is on background data you need to know to understand the rest of the API, there's 5 pages on generic device and buffer manipulation (including all the various types of memory barrier, thread barrier, fences, semaphores etc you can have between GPU queues or between CPU threads and GPU queues, and the various ways a GPU can reference memory), leaving about 2 pages to cover Vulkan's rendering API. In turn, Vulkan's rendering API is atomized - you control every stage of the pipeline individually (or disable it if not needed), so 2 pages on render API isn't unreasonable.

The key to note is that a lot of the spec is dedicated to careful control of memory accesses by CPU and GPU - the idea is to minimise synchronisation overhead while still encoding precisely the right set of barriers and sync points to get a correct result.

Announcing Vulkan 1.0

Posted Feb 17, 2016 19:17 UTC (Wed) by sorokin (guest, #88478) [Link]

Well, good old OpenGL has a quick reference page of a similar size: https://www.khronos.org/files/opengl44-quick-reference-ca... 12 pages of densely packed text. So Vulkan is not terribly worse in this regard.

I haven't looked into details of the new API, but from what I have seen it is pretty lean API already. Yes you can make it smaller, but at expense of loss of functionality. One can wish it to be a bit more complex or simple, depending on one's taste or needs, but I would say in its current form it is pretty good and reasonable. I wouldn't call it overengineered or a product of consortium.

Announcing Vulkan 1.0

Posted Feb 18, 2016 0:16 UTC (Thu) by excors (subscriber, #95769) [Link]

> is this kind of complexity necessary, or just the product of an "industry consortium"?

The impression I get is that its (substantial) level of complexity is necessary to achieve its goals, and that its goals are good ones.

I think typical OpenGL drivers broadly consist of two parts: the first is a wrapper around the very low-level hardware details, and the second is mapping between the first part and the OpenGL API. The second part has to maintain compatibility with the decades-old API and with every application that has ever used it, and tries to map those applications onto the hardware as efficiently as possible, even when those applications are very poorly written, which is a hard job.

Expert game engine developers don't like that second part because it's a lot of complicated code that they have no visibility into and that they can't debug or optimise for their specific use cases, and that is different between every GPU vendor. All that code, and the OpenGL API itself, is just a frustrating obstacle between their game engine and the hardware.

So they want to eliminate that second part from the drivers and take over its responsibilities themselves. Vulkan lets them do that, by specifying a vendor-independent API to the code that wraps the low-level hardware details. Hardware is complicated so that API is necessarily complicated.

The engine developers will likely wrap Vulkan in their own ad-hoc high-level API, essentially implementing a driver that the rest of their graphics engine will call into. That means the total amount of code in the stack is roughly the same as with OpenGL, but they've minimised the amount of it that's specified in a standard. The remainder of the code is now free of the painful restrictions of standards (the need for backward compatibility, design by committee, multiple independent implementations, binary blobbiness, etc), and engine developers are free to innovate and improve it.

From an open source perspective, I think it's good for driver developers (they have less work to do), very challenging for engine developers (they have a lot more work to do), a significant risk that nobody will be able to cope with using Vulkan directly and will all move to non-Free engines like Unity and Unreal, but a significant opportunity for new middleware developers who can design a new high-level API (lower level than an entire graphics engine, perhaps slightly higher level than OpenGL (and much cleaner)) that could be shared by many open source game engines.

Announcing Vulkan 1.0

Posted Feb 19, 2016 13:02 UTC (Fri) by cortana (subscriber, #24596) [Link]

I found this flowchart explained the situation fairly well.

Announcing Vulkan 1.0

Posted Feb 19, 2016 1:35 UTC (Fri) by sheepdestroyer (guest, #54968) [Link]

The driver released by Intel only supports back as far as Gen7 (Ivybridge) ; The ilo driver independantly developped by LunarG and available on their Github supports Gen6, 7 and 7.5
So I hope that some efforts will be made to upstream at least the Gen6 part, as Intel does not seem to care anymore.


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