From e549c9303b72794bd75fb01b4d4d9cb0d33e53e1 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 12 Oct 2018 18:36:02 +0200 Subject: [PATCH] [d3d10] Respect D3D10_CREATE_DEVICE_SINGLETHREADED flag May improve performance in games which do not need the locking behaviour. --- src/d3d10/d3d10_device.cpp | 4 +++- src/d3d10/d3d10_device.h | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/d3d10/d3d10_device.cpp b/src/d3d10/d3d10_device.cpp index 3b0eda31..dfd0bdd0 100644 --- a/src/d3d10/d3d10_device.cpp +++ b/src/d3d10/d3d10_device.cpp @@ -9,7 +9,9 @@ namespace dxvk { D3D11Device* pDevice, D3D11ImmediateContext* pContext) : m_device(pDevice), m_context(pContext) { - + // Respecting the single-threaded flag may improve performance + UINT flags = pDevice->GetCreationFlags(); + m_threadSafe = !(flags & D3D10_CREATE_DEVICE_SINGLETHREADED); } diff --git a/src/d3d10/d3d10_device.h b/src/d3d10/d3d10_device.h index 5f49ca19..df9d50fd 100644 --- a/src/d3d10/d3d10_device.h +++ b/src/d3d10/d3d10_device.h @@ -474,7 +474,9 @@ namespace dxvk { UINT* pHeight); D3D10DeviceLock LockDevice() { - return D3D10DeviceLock(m_mutex); + return m_threadSafe + ? D3D10DeviceLock(m_mutex) + : D3D10DeviceLock(); } private: @@ -483,6 +485,8 @@ namespace dxvk { D3D11Device* m_device; D3D11ImmediateContext* m_context; + bool m_threadSafe = true; + }; } \ No newline at end of file