diff --git a/src/d3d11/d3d11_context_imm.cpp b/src/d3d11/d3d11_context_imm.cpp index a44e3d04e..3315c6c88 100644 --- a/src/d3d11/d3d11_context_imm.cpp +++ b/src/d3d11/d3d11_context_imm.cpp @@ -345,7 +345,7 @@ namespace dxvk { UINT MapFlags) { // Some games (e.g. The Witcher 3) do not work correctly // when a map fails with D3D11_MAP_FLAG_DO_NOT_WAIT set - if (m_parent->TestOption(D3D11Option::IgnoreMapFlagNoWait)) + if (!m_parent->TestOption(D3D11Option::AllowMapFlagNoWait)) MapFlags &= ~D3D11_MAP_FLAG_DO_NOT_WAIT; // Wait for the any pending D3D11 command to be executed diff --git a/src/d3d11/d3d11_options.cpp b/src/d3d11/d3d11_options.cpp index d240714b2..0482e2e8e 100644 --- a/src/d3d11/d3d11_options.cpp +++ b/src/d3d11/d3d11_options.cpp @@ -5,7 +5,7 @@ namespace dxvk { const static std::unordered_map g_d3d11AppOptions = {{ - { "witcher3.exe", D3D11OptionSet(D3D11Option::IgnoreMapFlagNoWait) }, + { "Dishonored2.exe", D3D11OptionSet(D3D11Option::AllowMapFlagNoWait) }, }}; diff --git a/src/d3d11/d3d11_options.h b/src/d3d11/d3d11_options.h index 5ecece298..6d1c2c886 100644 --- a/src/d3d11/d3d11_options.h +++ b/src/d3d11/d3d11_options.h @@ -5,11 +5,20 @@ namespace dxvk { enum class D3D11Option : uint64_t { - IgnoreMapFlagNoWait = 0, + /** + * \brief Handle D3D11_MAP_FLAG_DO_NOT_WAIT properly + * + * This can offer substantial speedups, but some games + * (The Witcher 3, Elder Scrolls Online, possibly others) + * seem to make incorrect assumptions about when a map + * operation succeeds when that flag is set. + */ + AllowMapFlagNoWait = 0, }; using D3D11OptionSet = Flags; + /** * \brief Retrieves per-app options *