[Bug 40164] New: Add Vulkan support
https://bugs.winehq.org/show_bug.cgi?id=40164 Bug ID: 40164 Summary: Add Vulkan support Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: directx-d3d Assignee: wine-bugs(a)winehq.org Reporter: jj(a)stusta.net Distribution: --- Vulkan is now released: https://www.khronos.org/vulkan/ Wine may profit from this. The HLSL -> SPIR-V compiler can make it possible to translate direct3d shaders. I guess implementing that backend can make Wine much faster for 3D graphics. I'm unsure though if the translation interface is too complicated and slow if the application still does the OpenGL/Direct3D calls. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Jonas Jelten <jj(a)stusta.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jj(a)stusta.net -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Michael Müller <michael(a)fds-team.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |michael(a)fds-team.de -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish(a)gmail.com Version|unspecified |1.9.3 Severity|major |enhancement -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 3vi1 <winehq.org(a)eternaldusk.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |winehq.org(a)eternaldusk.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #1 from Bruno Jesus <00cpxxx(a)gmail.com> --- Can you or anyone else elaborate more on this for the 3D illiterate like me? I think it would be useful to describe more precisely what has to be done to avoid turning this into a meta bug. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Nguyen Thai Ngoc Duy <pclouds(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pclouds(a)gmail.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 mexahotabop(a)w1l.ru changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mexahotabop(a)w1l.ru -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #2 from Matteo Bruni <matteo.mystral(a)gmail.com> --- This bug as expressed in comment 0 doesn't mean anything specific so your objection is perfectly valid, Bruno. Given what I know about Vulkan (which is admittedly not much) I can think of two "steps" for "supporting" Vulkan in Wine. The first step would be to make a wrapper DLL to forward Vulkan API calls from Windows applications to the native (e.g. Linux) Vulkan lib, pretty much in the same way as we currently do for opengl32.dll. It's probably not entirely trivial to do but I guess much of the same infrastructure we have for OpenGL can be reused / reworked for Vulkan. Then we could ideally use Vulkan as another option for translating D3D APIs in addition to OpenGL. This is going to be hard work and I don't see it happening any time soon. I also think this is what the OP meant. I guess you can update this bug to target either of those two options specifically (or maybe some other kind of "support" we could add). As it is the bug doesn't seem useful. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 oscarbg <rtfss1(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rtfss1(a)gmail.com --- Comment #3 from oscarbg <rtfss1(a)gmail.com> --- I was going to create a bug for Vulkan support in Wine and found this bug.. I strongly believe that by title it should point to adding support for running Windows programs using Vulkan by a wrapper similar to OpenGL or even OpenCL in Wine and CUDA support in Wine-Staging.. Current shipping content are the Talos principle Beta or a simple Nvidia demo (http://developer.download.nvidia.com/mobile/shield/assets/ThreadedRenderingV...) Nvidia here provides a simple Vulkan demo making advanced usage of Vulkan features so could be a simple target to test that wrapper is working.. more it has 32bit and 64 bit Windows binaries so we could check 2 binaries works currently.. I'am willing to test once patches start appearing! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Johannes Brandstätter <jbrandst(a)2ds.eu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jbrandst(a)2ds.eu -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Fernando Otero <granamachine-wa(a)yahoo.com.ar> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |granamachine-wa(a)yahoo.com.a | |r --- Comment #4 from Fernando Otero <granamachine-wa(a)yahoo.com.ar> --- (In reply to Matteo Bruni from comment #2)
Then we could ideally use Vulkan as another option for translating D3D APIs in addition to OpenGL. Could be possible to actually IMPROVE native performance of DirectX 9/10/11 games, by taking advantage of Vulkan's new features? I assume this would require much more than the mere translation of calls. But, if doable, no doubt it would be revolutionary.
-- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Gabríel Arthúr Pétursson <gabriel(a)system.is> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gabriel(a)system.is --- Comment #5 from Gabríel Arthúr Pétursson <gabriel(a)system.is> --- Translating DirectX 9/10/11 or OpenGL to Vulkan commands is unlikely to bring any performance improvements over existing solutions. OpenGL and DirectX 9/10/11 drivers are already employing highly tuned heuristics and tricks to bring out the best possible performance given the limitations of these APIs. I'm currently working on implementing Vulkan support, to allow running Vulkan programs under Wine. Hopefully I should have patches available for you all to play with soon. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #6 from Nguyen Thai Ngoc Duy <pclouds(a)gmail.com> --- (In reply to Gabríel Arthúr Pétursson from comment #5)
Translating DirectX 9/10/11 or OpenGL to Vulkan commands is unlikely to bring any performance improvements over existing solutions. OpenGL and DirectX 9/10/11 drivers are already employing highly tuned heuristics and tricks to bring out the best possible performance given the limitations of these APIs.
I'm a complete ignorant. But given that Gallium Nine improves DX9 performance, can we possibly expect the same for Vulkan? G9 only works with open source AMD driver, but Vulkan will be supported by both nvidia and amd proprietary drivers. That's what made me think performance could be better. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 kaito.linux(a)gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kaito.linux(a)gmail.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #7 from Fernando Otero <granamachine-wa(a)yahoo.com.ar> --- (In reply to Gabríel Arthúr Pétursson from comment #5)
Translating DirectX 9/10/11 or OpenGL to Vulkan commands is unlikely to bring any performance improvements over existing solutions. Translating similar or equivalent commands would make no benefit, because of that, I clarified it would require more work, perhaps converting/adapting some calls to the new Vulkan features. I didn't mention it, but this would be beneficial not only to DX9/10/11 games, also to OpenGL ones.
Vulkan is based on Mantle, and shares the same feature set with DX12 (mainly low level, low CPU overhead). Performance improvements could be noticeable when using multiple cores. Of course, this could only happen when you have native apps for DX12/Vulkan. But for instance, Dolphin (Gamecube/Wii emulator) has already shown up to 60% improvements on AMD multi-core CPUs, only by using a DX12 plugin. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Sebastian Lackner <sebastian(a)fds-team.de> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |STAGED CC| |dmitry(a)baikal.ru, | |erich.e.hoover(a)wine-staging | |.com, sebastian(a)fds-team.de Ever confirmed|0 |1 Staged patchset| |https://github.com/wine-com | |pholio/wine-staging/tree/ma | |ster/patches/vulkan-Vulkan_ | |Implementation -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Sebastian Lackner <sebastian(a)fds-team.de> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|directx-d3d |-unknown Summary|Add Vulkan support |Implement vulkan-1.dll to | |provide Vulkan API for | |Windows applications --- Comment #8 from Sebastian Lackner <sebastian(a)fds-team.de> --- As Matteo pointed out, there are basically two different interpretations of this bug report. I would suggest we concentrate on the vulkan-1.dll implementation here, and move all discussions about how to speed up d3d* using Vulkan to a different bug report, to keep those two issues separated. In Wine Staging 1.9.6 we have added an initial version of a wrapper library to make Vulkan accessible to Windows applications (like The Talos Principle). Feel free to give it a try and report any issues you encounter. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Christopher Joseph Dean Schaefer <disks86(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |disks86(a)gmail.com --- Comment #9 from Christopher Joseph Dean Schaefer <disks86(a)gmail.com> --- Personally I think it would be better to have to D3d to Vulkan code separate from the main codebase. As long as Wine can pass calls through to the native vulkan library and translate the WSI extensions it should be sufficient. I've personally been working on wrapper library that implements the D3d9 interfaces using vulkan. Once I have a little more functionality in place I plan to test it under Wine. https://github.com/disks86/SchaeferGL -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Wylda <wylda(a)volny.cz> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wylda(a)volny.cz --- Comment #10 from Wylda <wylda(a)volny.cz> --- Created attachment 55849 --> https://bugs.winehq.org/attachment.cgi?id=55849 Output of 32bit's vulkaninfo (In reply to Sebastian Lackner from comment #8)
...Feel free to give it a try and report any issues you encounter.
Hi Sebastian, i tried vkquake-0.71.0_win32.zip under wine-staging-1.9.20. I have nVidia GTX970 v367.44. I'm able to run linux version of Dota 2 (64bit). The results: ... Vulkan Initialization ERROR-OUT BEGIN fixme:imm:NotifyIME NI_CLOSECANDIDATE QUAKE ERROR: Couldn't find VK_KHR_surface/VK_KHR_win32_surface extensions -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #11 from Michael Müller <michael(a)fds-team.de> --- There was a problem in vkEnumerateInstanceExtensionProperties. The patch implements VK_KHR_win32_surface using VK_KHR_xcb_surface and/or VK_KHR_xlib_surface. If both extensions are available on the host system, the wine implementation enumerated the VK_KHR_win32_surface twice. The game didn't like this behavior. The issue has been fixed in the staging commit 3fe8a52e3c794e1884c212d7585e9844876fe23c. The game should work now, can you retest it? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #12 from Wylda <wylda(a)volny.cz> --- Yes, it works and look awesome :c) Thank you Michael. I noticed some glitch at video setting. When i change resolution or switching to fullscreen mode, vkQuake quits with message like ...Wrong surface size... But that can be issue with vkQuake itself. Latest nVidia drivers also mention some fixes for vkQuakes/DOTA's Vulkan. In upcoming days i will test the native Linux and Win versions to see, if that is Wine-only issue or not. BTW: If this is a right approach to implement vulkan-1.dll, was is considered/discussed to push it upstream? I guess next stable version of Wine is imminent. Would be nice to have it in one place for the next year ;c) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Nathan <version2013(a)openmailbox.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |version2013(a)openmailbox.org -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #13 from Wylda <wylda(a)volny.cz> --- Created attachment 56890 --> https://bugs.winehq.org/attachment.cgi?id=56890 vkQuake 0.94 32bit crashes There is a new crash log in 32bit and only 32bit version of vkQuake. All the following results are from wine-staging-2.0-rc5: 32 bit vkQuake & wine 32bit only ================================ vkQuake v0.71 ... OK vkQuake v0.72 ... OK vkQuake v0.90 ... crash vkQuake v0.94 ... crash 64 bit vkQuake & wine WoW64 =========================== vkQuake v0.71 ... OK vkQuake v0.72 ... OK vkQuake v0.90 ... OK vkQuake v0.94 ... OK -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #14 from Michael Müller <michael(a)fds-team.de> --- (In reply to Wylda from comment #13)
There is a new crash log in 32bit and only 32bit version of vkQuake. All the following results are from wine-staging-2.0-rc5:
Should be fixed in the Wine Staging commit e0e48313dfa3cc42de2eda5df9d0108581027251. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #15 from Wylda <wylda(a)volny.cz> ---
Should be fixed in the Wine Staging commit
Yes, 32bit vkQuake works for me perfectly in wine-2.0-160-g152b240153 (Staging). Thank you. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 programmerjake(a)gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |programmerjake(a)gmail.com --- Comment #16 from programmerjake(a)gmail.com --- I think it would be better to implement a custom passthrough installable client driver (ICD) instead of a custom vulkan-1.dll, and use the standard vulkan loader instead. This way, you will be able to use other ICDs and vulkan layers. As an example, I'm developing a software-rendered vulkan implementation, and, from what I can tell, I would be able to use it on Windows, but not on this implementation of vulkan for win32. If we switch to using the standard vulkan loader and use a custom ICD, then I'd be able to use my vulkan implementation alongside this one as if wine was an ordinary version of windows. ICD interface reference: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #17 from Christopher Joseph Dean Schaefer <disks86(a)gmail.com> --- If we went the route of an ICD how would we handle multiple GPU scenarios where they are different drivers? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #18 from Gabríel Arthúr Pétursson <gabriel(a)system.is> --- (In reply to Christopher Joseph Dean Schaefer from comment #17)
If we went the route of an ICD how would we handle multiple GPU scenarios where they are different drivers?
A single ICD can expose multiple physical devices to the loader. There's little more to it than returning more than one device from a call to vkEnumeratePhysicalDevices. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 tokktokk <fdsfgs(a)krutt.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs(a)krutt.org -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |winevulkan -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Roderick Colenbrander <thunderbird2k(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |thunderbird2k(a)gmail.com Status|STAGED |RESOLVED Resolution|--- |FIXED --- Comment #19 from Roderick Colenbrander <thunderbird2k(a)gmail.com> --- We have a functional Vulkan implementation in Wine as of 3.4. While we haven't exactly implemented vulkan-1, we did it through an ICD. I would say we should consider this fixed as the ticket also went over different design options. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 --- Comment #20 from Roderick Colenbrander <thunderbird2k(a)gmail.com> --- We now have a vulkan-1 dll as well, so we can fully close this now. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Józef Kucia <joseph.kucia(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |3a6c724e904e4730adc365df03a | |b7a096532ed1e CC| |joseph.kucia(a)gmail.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=40164 Alexandre Julliard <julliard(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED --- Comment #21 from Alexandre Julliard <julliard(a)winehq.org> --- Closing bugs fixed in 3.5. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
wine-bugs@winehq.org