Today is the release of the Vulkan API 1.3 specification update and The Khronos Group has put up a press release going over the changes. A vital API for the future of Linux gaming and the Steam Deck of course, with Steam Play Proton using Vulkan for the translation from Direct 3D for DXVK and VKD3D-Proton.
At a glance:
- The Vulkan® 1.3 specification was released today, incorporating and mandating proven, developer-requested extensions to make that functionality consistently available across all supported platforms.
- The Vulkan Working Group is developing a public roadmap to provide guidance on when and where more advanced Vulkan functionality will be supported. The Vulkan Roadmap 2022 milestone for mid-to-high-end hardware defines features beyond Vulkan 1.3 that will be available starting this year.
- Vulkan profiles will be introduced, with tooling, in the February 2022 Vulkan 1.3 SDK to precisely specify, manage and use sets of API capabilities. Profiles will be used to communicate functionality requirements for roadmaps, markets, platforms, and hardware and software developers.
Vulkan 1.3 includes a number of extensions into the main core of Vulkan like dynamic rendering, an improved synchronization API and various other features. Khronos mentioned that no features added in 1.3 are optional to ensure consistency across the industry.
“In this new phase of Vulkan's evolution, the Vulkan Working Group is taking significant steps to reduce fragmentation across the ecosystem and increase Vulkan’s value to the industry as a reliable cross-platform GPU API. We continue to expose new hardware features as extensions while improving the Vulkan API with new core versions that are portable to a wide range of devices. And now with the Vulkan Roadmap, we are committing to enhanced transparency and communication to forge industry consensus on baseline functionality Profiles that best serve Vulkan’s key markets,” said Tom Olson, Vulkan Working Group Chair and Distinguished Engineer at Arm.
Vulkan continues to see industry-wide support from AMD, NVIDIA, Arm, Google and more companies.
On the driver side things are looking to be in pretty good shape. NVIDIA has release their new Vulkan Beta Driver version 470.62.22 which includes a "Fully conformant Vulkan 1.3 implementation". On the open source Mesa side there's merge requests up for Intel ANV and AMD RADV. NVIDIA also have their own blog post going over some details.
Quoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Quoting: GuestQuoting: mirvQuoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Halo Infinite, being a flagship Microsoft product built on a new game engine, acts as sort of a tech demo for Microsoft to show off new features in DirectX12 Ultimate/Xbox Series consoles. In other words, they get deep in the DX12 API and use features most other games haven't adopted yet. Some of those more obscure, less used DX12 Ultimate features don't have trivial or straightforward analogs in the current version of Vulkan, which makes the game challenging to support flawlessly with DXVK.
A new version of Vulkan with new features means that some of those DX12 features now do have straightforward Vulkan equivalents, which means that DXVK can better support them and games like Halo Infinite might work a little better. Dynamic rendering sounds like it's one of those features.
I see where you're coming from, but no, dynamic rendering is nothing to do with that. It relates more dynamic usage (hence the name) of the default framebuffer for rendering output. In essence is allows a lot of framebuffer and renderpass setup to be simplified when interacting with Vulkan, for certain use cases.
Actually it's probably more useful for handling things like DX9 or OpenGL over Vulkan.
Quoting: mirvQuoting: GuestQuoting: mirvQuoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Halo Infinite, being a flagship Microsoft product built on a new game engine, acts as sort of a tech demo for Microsoft to show off new features in DirectX12 Ultimate/Xbox Series consoles. In other words, they get deep in the DX12 API and use features most other games haven't adopted yet. Some of those more obscure, less used DX12 Ultimate features don't have trivial or straightforward analogs in the current version of Vulkan, which makes the game challenging to support flawlessly with DXVK.
A new version of Vulkan with new features means that some of those DX12 features now do have straightforward Vulkan equivalents, which means that DXVK can better support them and games like Halo Infinite might work a little better. Dynamic rendering sounds like it's one of those features.
I see where you're coming from, but no, dynamic rendering is nothing to do with that. It relates more dynamic usage (hence the name) of the default framebuffer for rendering output. In essence is allows a lot of framebuffer and renderpass setup to be simplified when interacting with Vulkan, for certain use cases.
Actually it's probably more useful for handling things like DX9 or OpenGL over Vulkan.
It's more than for _certain_ use cases and GL emulation. The dynamic rendering extension dispenses with framebuffers and render pass objects altogether, which have been a constant source of pain for developers. In truth, render passes are still _the_ optimal way for tile-based renderers, but dynamic rendering makes things much simpler for apps targeted at desktop.
Quoting: ShabbyXQuoting: mirvQuoting: GuestQuoting: mirvQuoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Halo Infinite, being a flagship Microsoft product built on a new game engine, acts as sort of a tech demo for Microsoft to show off new features in DirectX12 Ultimate/Xbox Series consoles. In other words, they get deep in the DX12 API and use features most other games haven't adopted yet. Some of those more obscure, less used DX12 Ultimate features don't have trivial or straightforward analogs in the current version of Vulkan, which makes the game challenging to support flawlessly with DXVK.
A new version of Vulkan with new features means that some of those DX12 features now do have straightforward Vulkan equivalents, which means that DXVK can better support them and games like Halo Infinite might work a little better. Dynamic rendering sounds like it's one of those features.
I see where you're coming from, but no, dynamic rendering is nothing to do with that. It relates more dynamic usage (hence the name) of the default framebuffer for rendering output. In essence is allows a lot of framebuffer and renderpass setup to be simplified when interacting with Vulkan, for certain use cases.
Actually it's probably more useful for handling things like DX9 or OpenGL over Vulkan.
It's more than for _certain_ use cases and GL emulation. The dynamic rendering extension dispenses with framebuffers and render pass objects altogether, which have been a constant source of pain for developers. In truth, render passes are still _the_ optimal way for tile-based renderers, but dynamic rendering makes things much simpler for apps targeted at desktop.
If you want to get picky, be my guest, but I'll feel obliged to point out simpler for apps targeted at desktop that don't use render sub-passes (for example, if an initial colour pass is also calculating normal values and feeding them along with depth values directly into a lighting pass, then that can be optimised greatly using a sub-pass even on desktop). Once any particular sub-pass is desired, then the benefits of the dynamic rendering extension are limited somewhat and may as well not be used.
Quoting: mirvQuoting: GuestQuoting: mirvQuoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Halo Infinite, being a flagship Microsoft product built on a new game engine, acts as sort of a tech demo for Microsoft to show off new features in DirectX12 Ultimate/Xbox Series consoles. In other words, they get deep in the DX12 API and use features most other games haven't adopted yet. Some of those more obscure, less used DX12 Ultimate features don't have trivial or straightforward analogs in the current version of Vulkan, which makes the game challenging to support flawlessly with DXVK.
A new version of Vulkan with new features means that some of those DX12 features now do have straightforward Vulkan equivalents, which means that DXVK can better support them and games like Halo Infinite might work a little better. Dynamic rendering sounds like it's one of those features.
I see where you're coming from, but no, dynamic rendering is nothing to do with that. It relates more dynamic usage (hence the name) of the default framebuffer for rendering output. In essence is allows a lot of framebuffer and renderpass setup to be simplified when interacting with Vulkan, for certain use cases.
Actually it's probably more useful for handling things like DX9 or OpenGL over Vulkan.
Halo Infinite specifically uses DX12's dynamic rendering, which there is currently a draft to implement in dxvk
Quoting: PeakQuoting: mirvQuoting: GuestQuoting: mirvQuoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Halo Infinite, being a flagship Microsoft product built on a new game engine, acts as sort of a tech demo for Microsoft to show off new features in DirectX12 Ultimate/Xbox Series consoles. In other words, they get deep in the DX12 API and use features most other games haven't adopted yet. Some of those more obscure, less used DX12 Ultimate features don't have trivial or straightforward analogs in the current version of Vulkan, which makes the game challenging to support flawlessly with DXVK.
A new version of Vulkan with new features means that some of those DX12 features now do have straightforward Vulkan equivalents, which means that DXVK can better support them and games like Halo Infinite might work a little better. Dynamic rendering sounds like it's one of those features.
I see where you're coming from, but no, dynamic rendering is nothing to do with that. It relates more dynamic usage (hence the name) of the default framebuffer for rendering output. In essence is allows a lot of framebuffer and renderpass setup to be simplified when interacting with Vulkan, for certain use cases.
Actually it's probably more useful for handling things like DX9 or OpenGL over Vulkan.
Halo Infinite specifically uses DX12's dynamic rendering, which there is currently a draft to implement in dxvk
I think that refers to dynamic resolution rendering, which is not the same as Vulkan's dynamic rendering extension.
Quoting: mirvQuoting: ShabbyXQuoting: mirvQuoting: GuestQuoting: mirvQuoting: PeakHopefully the dynamic rendering extension means we will finally be able to get Halo Infinite running.
Not sure what one has to do with the other?
Halo Infinite, being a flagship Microsoft product built on a new game engine, acts as sort of a tech demo for Microsoft to show off new features in DirectX12 Ultimate/Xbox Series consoles. In other words, they get deep in the DX12 API and use features most other games haven't adopted yet. Some of those more obscure, less used DX12 Ultimate features don't have trivial or straightforward analogs in the current version of Vulkan, which makes the game challenging to support flawlessly with DXVK.
A new version of Vulkan with new features means that some of those DX12 features now do have straightforward Vulkan equivalents, which means that DXVK can better support them and games like Halo Infinite might work a little better. Dynamic rendering sounds like it's one of those features.
I see where you're coming from, but no, dynamic rendering is nothing to do with that. It relates more dynamic usage (hence the name) of the default framebuffer for rendering output. In essence is allows a lot of framebuffer and renderpass setup to be simplified when interacting with Vulkan, for certain use cases.
Actually it's probably more useful for handling things like DX9 or OpenGL over Vulkan.
It's more than for _certain_ use cases and GL emulation. The dynamic rendering extension dispenses with framebuffers and render pass objects altogether, which have been a constant source of pain for developers. In truth, render passes are still _the_ optimal way for tile-based renderers, but dynamic rendering makes things much simpler for apps targeted at desktop.
If you want to get picky, be my guest, but I'll feel obliged to point out simpler for apps targeted at desktop that don't use render sub-passes (for example, if an initial colour pass is also calculating normal values and feeding them along with depth values directly into a lighting pass, then that can be optimised greatly using a sub-pass even on desktop). Once any particular sub-pass is desired, then the benefits of the dynamic rendering extension are limited somewhat and may as well not be used.
Are you suggesting the driver merges the two subpasses' fragment shaders in one in that case? I guess that's doable, though I haven't heard of any driver doing that. Why would an app use two subpasses in that case when they can just do the whole thing in one pass?
Subpasses shine on TBR hardware because an app can do all sorts of stuff in one pass (blend, overdraw etc), then use the results in the second pass without the framebuffer data leaving tile memory. On IMR hardware the draw results end up reaching the memory during the first pass anyway (yes, there's some cache), there's really no benefit to one render pass with two subpasses compared with two render passes as far as I know.
If you know something about this I don't know, I'd be very keen to learn :)
See more from me