This patchset eliminates heap allocations in many of the Vulkan commands, which were happening thousands of times per frame.
It does this by replacing the heap_allocs previously used with alloca, which will allocate these structures and arrays of structures on the stack. They are all very small, and the size of the arrays will also be small, so this is safe for us to do.
There aren't really any x86 Vulkan apps in the wild, so this change primarily only affects usage with DXVK + D3D9 (and some D3D10/11 apps).
Joshua Ashton (4): winevulkan: Define alloca and forceinline winevulkan: Replace temp heap_allocs with alloca winevulkan: Remove unnecessary checks in wine_vkCmdExecuteCommands winevulkan: Regenerate thunks
dlls/winevulkan/make_vulkan | 142 +--------- dlls/winevulkan/vulkan.c | 16 +- dlls/winevulkan/vulkan_private.h | 12 + dlls/winevulkan/vulkan_thunks.c | 436 +++++++------------------------ 4 files changed, 115 insertions(+), 491 deletions(-)
On 3/5/20 20:02, Joshua Ashton wrote:
There aren't really any x86 Vulkan apps in the wild, so this change primarily only affects usage with DXVK + D3D9 (and some D3D10/11 apps).
I can name Detroit Become Human (requires some Staging patches to run). Demo version requires just [1] on top of upstream Wine to run normally. This game is already reported by some users to run faster under Wine than on Windows though.
1. https://github.com/wine-staging/wine-staging/tree/master/patches/ntdll-unali...
I'll have to try this at some point. Not too happy about having to make an Epic account for this tho! :P 🐸
- Josh 🐸
---- On Thu, 05 Mar 2020 17:13:56 +0000 Paul Gofman mailto:gofmanp@gmail.com wrote ----
On 3/5/20 20:02, Joshua Ashton wrote:
There aren't really any x86 Vulkan apps in the wild, so this change primarily only affects usage with DXVK + D3D9 (and some D3D10/11 apps).
I can name Detroit Become Human (requires some Staging patches to run). Demo version requires just [1] on top of upstream Wine to run normally. This game is already reported by some users to run faster under Wine than on Windows though.
1. https://github.com/wine-staging/wine-staging/tree/master/patches/ntdll-unali...
Detroit isn't an x86 executable, it's x86_64. Here's the output of file(1) from my local binary:
DetroitBecomeHuman.exe: sticky PE32+ executable (GUI) x86-64, for MS Windows
Thanks,
Liam Middlebrook
On 3/5/20 10:39 AM, Joshua Ashton wrote:
I'll have to try this at some point. Not too happy about having to make an Epic account for this tho! :P 🐸
- Josh 🐸
---- On Thu, 05 Mar 2020 17:13:56 +0000 *Paul Gofman <gofmanp@gmail.com mailto:gofmanp@gmail.com>* wrote ----
On 3/5/20 20:02, Joshua Ashton wrote: > > There aren't really any x86 Vulkan apps in the wild, so this change > primarily only affects usage with DXVK + D3D9 (and some D3D10/11 apps). > I can name Detroit Become Human (requires some Staging patches to run). Demo version requires just [1] on top of upstream Wine to run normally. This game is already reported by some users to run faster under Wine than on Windows though. 1. https://github.com/wine-staging/wine-staging/tree/master/patches/ntdll-unaligned-futex
----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. -----------------------------------------------------------------------------------
Am 05.03.20 um 20:02 schrieb Joshua Ashton:
There aren't really any x86 Vulkan apps in the wild, so this change primarily only affects usage with DXVK + D3D9 (and some D3D10/11 apps).
Can you provide some performance test results?