On Fri, 28 Jan 2022 at 16:10, Alexandre Julliard julliard@winehq.org wrote:
@@ -410,7 +410,7 @@ static void *vkd3d_fence_worker_main(void *arg) { vkd3d_wait_for_gpu_fences(worker);
if (!worker->fence_count || atomic_add_fetch(&worker->enqueued_fence_count, 0))
if (!worker->fence_count || InterlockedAdd(&worker->enqueued_fence_count, 0)) {
Unfortunately this introduces build warnings for the non-PE builds:
<vkd3d>/libs/vkd3d/command.c: In function ‘vkd3d_fence_worker_main’: <vkd3d>/libs/vkd3d/command.c:413:52: warning: pointer targets in passing argument 1 of ‘InterlockedAdd’ differ in signedness [-Wpointer-sign] if (!worker->fence_count || InterlockedAdd(&worker->enqueued_fence_count, 0))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from <vkd3d>/libs/vkd3d/vkd3d_private.h:26, from <vkd3d>/libs/vkd3d/command.c:21: <vkd3d>/include/private/vkd3d_common.h:204:20: note: expected ‘volatile LONG *’ {aka ‘volatile int ’} but argument is of type ‘size_t *’ {aka ‘unsigned int *’} static inline LONG InterlockedAdd(LONG volatile *x, LONG val) ^~~~~~~~~~~~~~