1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-27 04:54:15 +01:00

[d3d11] Remove d3d11.dcSingleUseMode option

This commit is contained in:
Philip Rebohle 2025-02-23 14:53:29 +01:00 committed by Philip Rebohle
parent 7208d06548
commit e3f047a96a
7 changed files with 2 additions and 71 deletions

View File

@ -228,17 +228,6 @@
# dxvk.tilerMode = Auto # dxvk.tilerMode = Auto
# Assume that command lists created from deferred contexts are only used
# once. This is extremely common and may improve performance while reducing
# the amount of memory wasted if games keep their command list objects alive
# for too long, but may also lead to rendering issues if command lists are
# submitted multiple times.
#
# Supported values: True, False
# d3d11.dcSingleUseMode = True
# Override the maximum feature level that a D3D11 device can be created # Override the maximum feature level that a D3D11 device can be created
# with. Setting this to a higher value may allow some applications to run # with. Setting this to a higher value may allow some applications to run
# that would otherwise fail to create a D3D11 device. # that would otherwise fail to create a D3D11 device.

View File

@ -74,8 +74,6 @@ namespace dxvk {
m_resources.push_back(std::move(entry)); m_resources.push_back(std::move(entry));
} }
pCommandList->MarkSubmitted();
// Return ID of the last chunk added. The command list // Return ID of the last chunk added. The command list
// added can never be empty, so do not handle zero. // added can never be empty, so do not handle zero.
return m_chunks.size() - 1; return m_chunks.size() - 1;
@ -102,8 +100,6 @@ namespace dxvk {
while (j < m_resources.size() && m_resources[j].chunkId == i) while (j < m_resources.size() && m_resources[j].chunkId == i)
TrackResourceSequenceNumber(m_resources[j++].ref, seq); TrackResourceSequenceNumber(m_resources[j++].ref, seq);
} }
MarkSubmitted();
} }
@ -150,15 +146,5 @@ namespace dxvk {
} break; } break;
} }
} }
void D3D11CommandList::MarkSubmitted() {
if (m_submitted.exchange(true) && !m_warned.exchange(true)
&& m_parent->GetOptions()->dcSingleUseMode) {
Logger::warn(
"D3D11: Command list submitted multiple times,\n"
" but d3d11.dcSingleUseMode is enabled");
}
}
} }

View File

@ -55,14 +55,9 @@ namespace dxvk {
std::vector<Com<D3D11Query, false>> m_queries; std::vector<Com<D3D11Query, false>> m_queries;
std::vector<TrackedResource> m_resources; std::vector<TrackedResource> m_resources;
std::atomic<bool> m_submitted = { false };
std::atomic<bool> m_warned = { false };
void TrackResourceSequenceNumber( void TrackResourceSequenceNumber(
const D3D11ResourceRef& Resource, const D3D11ResourceRef& Resource,
uint64_t Seq); uint64_t Seq);
void MarkSubmitted();
}; };

View File

@ -7,7 +7,7 @@ namespace dxvk {
D3D11Device* pParent, D3D11Device* pParent,
const Rc<DxvkDevice>& Device, const Rc<DxvkDevice>& Device,
UINT ContextFlags) UINT ContextFlags)
: D3D11CommonContext<D3D11DeferredContext>(pParent, Device, ContextFlags, GetCsChunkFlags(pParent)), : D3D11CommonContext<D3D11DeferredContext>(pParent, Device, ContextFlags, 0u),
m_commandList (CreateCommandList()) { m_commandList (CreateCommandList()) {
ResetContextState(); ResetContextState();
} }
@ -436,12 +436,4 @@ namespace dxvk {
m_mappedResources.push_back({ Cookie, MapInfo }); m_mappedResources.push_back({ Cookie, MapInfo });
} }
}
DxvkCsChunkFlags D3D11DeferredContext::GetCsChunkFlags(
D3D11Device* pDevice) {
return pDevice->GetOptions()->dcSingleUseMode
? DxvkCsChunkFlags(DxvkCsChunkFlag::SingleUse)
: DxvkCsChunkFlags();
}
}

View File

@ -13,7 +13,6 @@ namespace dxvk {
} }
D3D11Options::D3D11Options(const Config& config) { D3D11Options::D3D11Options(const Config& config) {
this->dcSingleUseMode = config.getOption<bool>("d3d11.dcSingleUseMode", true);
this->zeroInitWorkgroupMemory = config.getOption<bool>("d3d11.zeroInitWorkgroupMemory", false); this->zeroInitWorkgroupMemory = config.getOption<bool>("d3d11.zeroInitWorkgroupMemory", false);
this->forceVolatileTgsmAccess = config.getOption<bool>("d3d11.forceVolatileTgsmAccess", false); this->forceVolatileTgsmAccess = config.getOption<bool>("d3d11.forceVolatileTgsmAccess", false);
this->relaxedBarriers = config.getOption<bool>("d3d11.relaxedBarriers", false); this->relaxedBarriers = config.getOption<bool>("d3d11.relaxedBarriers", false);

View File

@ -13,13 +13,6 @@ namespace dxvk {
struct D3D11Options { struct D3D11Options {
D3D11Options(const Config& config); D3D11Options(const Config& config);
/// Enables speed hack for mapping on deferred contexts
///
/// This can substantially speed up some games, but may
/// cause issues if the game submits command lists more
/// than once.
bool dcSingleUseMode = false;
/// Zero-initialize workgroup memory /// Zero-initialize workgroup memory
/// ///
/// Workargound for games that don't initialize /// Workargound for games that don't initialize

View File

@ -82,7 +82,6 @@ namespace dxvk {
/* The Evil Within: Submits command lists * /* The Evil Within: Submits command lists *
* multiple times */ * multiple times */
{ R"(\\EvilWithin(Demo)?\.exe$)", {{ { R"(\\EvilWithin(Demo)?\.exe$)", {{
{ "d3d11.dcSingleUseMode", "False" },
{ "d3d11.cachedDynamicResources", "vi" }, { "d3d11.cachedDynamicResources", "vi" },
}} }, }} },
/* Far Cry 3: Assumes clear(0.5) on an UNORM * /* Far Cry 3: Assumes clear(0.5) on an UNORM *
@ -161,10 +160,6 @@ namespace dxvk {
{ R"(\\NieR Replicant ver\.1\.22474487139\.exe)", {{ { R"(\\NieR Replicant ver\.1\.22474487139\.exe)", {{
{ "d3d11.cachedDynamicResources", "vi" }, { "d3d11.cachedDynamicResources", "vi" },
}} }, }} },
/* SteamVR performance test */
{ R"(\\vr\.exe$)", {{
{ "d3d11.dcSingleUseMode", "False" },
}} },
/* Hitman 2 - requires AGS library */ /* Hitman 2 - requires AGS library */
{ R"(\\HITMAN2\.exe$)", {{ { R"(\\HITMAN2\.exe$)", {{
{ "dxgi.customVendorId", "10de" }, { "dxgi.customVendorId", "10de" },
@ -350,11 +345,6 @@ namespace dxvk {
{ R"(\\MSFC\.exe$)", {{ { R"(\\MSFC\.exe$)", {{
{ "dxgi.maxFrameRate", "60" }, { "dxgi.maxFrameRate", "60" },
}} }, }} },
/* Cardfight!! Vanguard Dear Days: *
* Submits command lists multiple times */
{ R"(\\VG2\.exe$)", {{
{ "d3d11.dcSingleUseMode", "False" },
}} },
/* Battlefield: Bad Company 2 * /* Battlefield: Bad Company 2 *
* Gets rid of black flickering */ * Gets rid of black flickering */
{ R"(\\BFBC2Game\.exe$)", {{ { R"(\\BFBC2Game\.exe$)", {{
@ -383,10 +373,6 @@ namespace dxvk {
{ R"(\\CrashBandicootNSaneTrilogy\.exe$)", {{ { R"(\\CrashBandicootNSaneTrilogy\.exe$)", {{
{ "dxgi.syncInterval", "1" }, { "dxgi.syncInterval", "1" },
}} }, }} },
/* SnowRunner */
{ R"(\\SnowRunner\.exe$)", {{
{ "d3d11.dcSingleUseMode", "False" },
}} },
/* Fallout 76 /* Fallout 76
* Game tries to be too "smart" and changes sync * Game tries to be too "smart" and changes sync
* interval based on performance (in fullscreen) * interval based on performance (in fullscreen)
@ -408,10 +394,6 @@ namespace dxvk {
{ R"(\\BLADESTORM Nightmare\\Launch_(EA|JP)\.exe$)", {{ { R"(\\BLADESTORM Nightmare\\Launch_(EA|JP)\.exe$)", {{
{ "dxgi.maxFrameRate", "60" }, { "dxgi.maxFrameRate", "60" },
}} }, }} },
/* Ghost Recon Wildlands */
{ R"(\\GRW\.exe$)", {{
{ "d3d11.dcSingleUseMode", "False" },
}} },
/* Vindictus d3d11 CPU bound perf, and work * /* Vindictus d3d11 CPU bound perf, and work *
* around the game not properly initializing * * around the game not properly initializing *
* some of its constant buffers after discard */ * some of its constant buffers after discard */
@ -476,11 +458,6 @@ namespace dxvk {
{ R"(\\FarCry(5|NewDawn)\.exe$)", {{ { R"(\\FarCry(5|NewDawn)\.exe$)", {{
{ "d3d11.zeroInitWorkgroupMemory", "True" }, { "d3d11.zeroInitWorkgroupMemory", "True" },
}} }, }} },
/* Cardfight!! Vanguard Dear Days 2 - Broken *
* effects and Invisible cards in battles */
{ R"(\\VGDD2\.exe$)", {{
{ "d3d11.dcSingleUseMode", "False" },
}} },
/**********************************************/ /**********************************************/
/* D3D9 GAMES */ /* D3D9 GAMES */