[PATCH] wined3d use SwitchToThread waits in wined3d_pause
Adeniyi Mayokun
adeniyimayokun17 at gmail.com
Wed Mar 14 00:37:06 CDT 2018
>From 275d93c9ab0f533fa70d698726afc8adaaefb664 Mon Sep 17 00:00:00 2001
From: Adeniyi Mayokun <adeniyimayokun17 at gmail.com>
Date: Wed, 14 Mar 2018 05:35:20 +0100
Subject: [PATCH] wined3d use SwitchToThread waits in wined3d_pause
---
dlls/wined3d/cs.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 480717c06a..ca8b40c0af 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -494,7 +494,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs,
struct wined3d_swapchain *sw
* IDXGIDevice1 allows tuning this. */
while (pending > 1)
{
- wined3d_pause();
+ wined3d_pause(i++);
pending = InterlockedCompareExchange(&cs->pending_presents, 0, 0);
}
}
@@ -2589,10 +2589,13 @@ static void *wined3d_cs_mt_require_space(struct
wined3d_cs *cs, size_t size, enu
return wined3d_cs_queue_require_space(&cs->queue[queue_id], size, cs);
}
-static void wined3d_cs_mt_finish(struct wined3d_cs *cs, enum
wined3d_cs_queue_id queue_id)
+static void wined3d_cs_mt_finish(struct wined3d_cs)
{
- if (cs->thread_id == GetCurrentThreadId())
- return wined3d_cs_st_finish(cs, queue_id);
+
+ int i = 0;
+
+ if (cs->thread_id == GetCurrentThreadId())
+ return wined3d_cs_st_finish(cs);
while (cs->queue[queue_id].head != *(volatile LONG
*)&cs->queue[queue_id].tail)
wined3d_pause();
--
2.14.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20180314/61c1389d/attachment.html>
More information about the wine-devel
mailing list