Module: vkd3d
Branch: master
Commit: 06cc2e1aeed7f7c0d867d595bc7301a689ee5bcd
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/06cc2e1aeed7f7c0d867d595bc730…
Author: Conor McCarthy <cmccarthy(a)codeweavers.com>
Date: Thu Apr 13 11:22:44 2023 +1000
vkd3d: Collect multiple descriptor writes in a buffer and update in one call.
Reduces the cost of calling vkUpdateDescriptorSets() via winevulkan
and its thunks. The performance gain can be as high as 20%.
---
libs/vkd3d/resource.c | 201 ++++++++++++++++++++++++++++++--------------------
1 file changed, 121 insertions(+), 80 deletions(-)
Module: vkd3d
Branch: master
Commit: f50e53e7c9e3d7bcd1197eb71ae251f4b320a3bf
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/f50e53e7c9e3d7bcd1197eb71ae25…
Author: Conor McCarthy <cmccarthy(a)codeweavers.com>
Date: Thu Apr 13 15:32:22 2023 +1000
vkd3d: Use atomic exchange for descriptor writes.
The descriptor component of struct d3d12_desc is replaced with a union
containing a pointer which can be swapped out using
InterlockedExchangePointer(). To make it safe to increment the refcount
of such an object it is necessary to cache freed objects. Elimination
of the descriptor mutexes on games which use multithreaded descriptor
writes nearly doubles framerate on recent hardware.
---
libs/vkd3d/command.c | 77 +++++-----
libs/vkd3d/device.c | 31 ++--
libs/vkd3d/resource.c | 349 ++++++++++++++++++++++-----------------------
libs/vkd3d/vkd3d_private.h | 176 ++++++++++++++++-------
4 files changed, 358 insertions(+), 275 deletions(-)