[SOLVED] Why is it so hard for Stream Output to be added to Vulkan?

It was not included in the initial Vulkan 1.0 release and has been absent in 1.1 and even now at 1.1.82. Why is this so hard to implement? If it was a feature that was present in OpenGL, 1.0 SHOULD have released to have an on par feature set, not a regression.

Vulkan supports an entire GPGPU pipeline, which is more powerful than transform feedback. When reusing transformed vertices they can be computed once in the compute shader and then accessed by the vertex shader. I’m pretty sure vertex shaders can write to arbitrary memory as well so built-in support for transform feedback is no longer necessary.

One of OpenGL’s biggest issues is that it has to support too many old, unused features. This is part of what makes the drivers so large, slow and hard to maintain. Removing bloat is a good thing and necessary if Vulkan wants to be successful.

At least a compute based translation layer should have been implemented, but I guess the demand was not there because it only applies to GL to Vulkan or DX to Vulkan implementations.

DX to Vulkan will forever remain relevant to Wine devs. GL to Vulkan is gonna start becoming more important for Mac devs with Mojave only really supporting native Metal or MoltenVK.

According to the DXVK devs, they’re still under the belief a compatibility layer has to be added, cause they’re taking no effort to create a compute function to emulate Stream Output.

But as you said, Vulkan is about moving forward and removing the bloat, so it’s never going to happen. This will remain at a standstill forever. DXVK wants a compatibility layer, but Vulkan ideology is to use compute functions for everything and not provide niche compatibility layers. They’re gonna be stuck like this for decades.

Okay, now that Proton is a thing, graphics glitches because of a lack of Stream Output are becoming more prevalent because of the widespread testing of Proton with DXVK…

Yet, no progress is going to be made on it…

Literally, this is the one thing stalling DXVK and Proton from exiting beta in terms of the graphics features.

It’s being worked on. The latest change in the github discussion you posted is only six hours old:
image

(https://github.com/KhronosGroup/Vulkan-Ecosystem/issues/26#issuecomment-408793820)

Some members of the Vulkan working group are developing a multi-vendor EXT extension for transform feedback with the primary goal of satisfying the needs of the DXVK, vkd3d and ANGLE translation layers. The Vulkan working group does not plan to promote this functionality as a KHR extension or as core functionality because it believes there are better, more forward-looking ways of processing and capturing vertex data with the GPU. The multi-vendor EXT extension should be available soon and is likely to be implemented on those platforms where DXVK, vkd3d and ANGLE translation is required.

It won’t be strictly a KHR extension, but it’s getting a Multi-vendor EXT extension.

This is the Proton effect!

I was just thinking the same.

As soon as Valve needs it for InHome Streaming it will happen in one way or another.

Good news! Transform feedback was just added to Vulkan: https://www.phoronix.com/scan.php?page=news_item&px=Vulkan-1.1.88-Released

The extension is unofficial because it is deemed useless for actual game engines. There are better ways that achieve the same result, but it was added to help compatibility layers like DXVK.

https://www.phoronix.com/scan.php?page=news_item&px=DXVK-0.90-Released

So dxvk officially has stream output

There’s a catch. It requires a winevulkan patch to work. Vanilla Wine Staging doesn’t have this patch yet. Lutris if they’re fast will add this patch to the esync builds.

Proton Beta apparently already has the patch. The Lutris builds and Wine Staging just has to catch up.

winevulkan patched Lutris esync 3.18 build is out!

https://lutris.nyc3.digitaloceanspaces.com/runners/wine/wine-esync-staging-pba-3.18-x86_64.tar.gz

https://lutris.nyc3.digitaloceanspaces.com/runners/wine/wine-esync-staging-pba-nopulse-3.18-x86_64.tar.gz

1 Like

Hi,

I’m new on this forum and was hoping to get some help in relation to how to get the latest vulkan version/headers installed?

I’m on Ubuntu 18.04 Bionic (LTS) with padoka PPA and latest kernel using UKUU.

However vulkaninfo reveals API version only at 1.1.42. Any idea on how to update to 1.1.88+

Seems like wine caught up with vulkan 1.1.88…
https://www.winehq.org/announce/3.19

FYI Jason Ekstrand has an interesting article on the transform_feedback extension…