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.
This commit is contained in:
Conor McCarthy
2023-04-13 15:32:22 +10:00
committed by Alexandre Julliard
parent e63201a7a3
commit f50e53e7c9
Notes: Alexandre Julliard 2023-04-25 22:39:27 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/156
4 changed files with 361 additions and 278 deletions

File diff suppressed because it is too large Load Diff