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(-)