[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