mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-12-13 16:08:50 +01:00
[d3d9+util] Always ignore D3DLOCK_DONOTWAIT
We only ever stall when locking a texture that was previously used with GetRenderTargetData or GetFrontBufferData. Games are known to break if locking those textures doesn't succeed.
This commit is contained in:
parent
67614917c3
commit
46cb05ce45
@ -4200,7 +4200,8 @@ namespace dxvk {
|
||||
if (unlikely((Flags & (D3DLOCK_DISCARD | D3DLOCK_READONLY)) == (D3DLOCK_DISCARD | D3DLOCK_READONLY)))
|
||||
return D3DERR_INVALIDCALL;
|
||||
|
||||
if (unlikely(!m_d3d9Options.allowDoNotWait))
|
||||
// We only ever wait for textures that were used with GetRenderTargetData or GetFrontBufferData anyway.
|
||||
// Games like Beyond Good and Evil break if this doesn't succeed.
|
||||
Flags &= ~D3DLOCK_DONOTWAIT;
|
||||
|
||||
if (unlikely((Flags & (D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE)) == (D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE)))
|
||||
|
@ -63,7 +63,6 @@ namespace dxvk {
|
||||
this->forceSamplerTypeSpecConstants = config.getOption<bool> ("d3d9.forceSamplerTypeSpecConstants", false);
|
||||
this->forceSwapchainMSAA = config.getOption<int32_t> ("d3d9.forceSwapchainMSAA", -1);
|
||||
this->forceAspectRatio = config.getOption<std::string> ("d3d9.forceAspectRatio", "");
|
||||
this->allowDoNotWait = config.getOption<bool> ("d3d9.allowDoNotWait", true);
|
||||
this->allowDiscard = config.getOption<bool> ("d3d9.allowDiscard", true);
|
||||
this->enumerateByDisplays = config.getOption<bool> ("d3d9.enumerateByDisplays", true);
|
||||
this->longMad = config.getOption<bool> ("d3d9.longMad", false);
|
||||
|
@ -120,9 +120,6 @@ namespace dxvk {
|
||||
/// Forces an MSAA level on the swapchain
|
||||
int32_t forceSwapchainMSAA;
|
||||
|
||||
/// Allow D3DLOCK_DONOTWAIT
|
||||
bool allowDoNotWait;
|
||||
|
||||
/// Allow D3DLOCK_DISCARD
|
||||
bool allowDiscard;
|
||||
|
||||
|
@ -386,15 +386,6 @@ namespace dxvk {
|
||||
{ R"(\\TESV\.exe$)", {{
|
||||
{ "d3d9.customVendorId", "1002" },
|
||||
}} },
|
||||
/* RTHDRIBL Demo
|
||||
Uses DONOTWAIT after GetRenderTargetData
|
||||
then goes into an infinite loop if it gets
|
||||
D3DERR_WASSTILLDRAWING.
|
||||
This is a better solution than penalizing
|
||||
other apps that use this properly. */
|
||||
{ R"(\\rthdribl\.exe$)", {{
|
||||
{ "d3d9.allowDoNotWait", "False" },
|
||||
}} },
|
||||
/* Hyperdimension Neptunia U: Action Unleashed */
|
||||
{ R"(\\Neptunia\.exe$)", {{
|
||||
{ "d3d9.forceAspectRatio", "16:9" },
|
||||
@ -562,11 +553,6 @@ namespace dxvk {
|
||||
{ R"(\\eoa\.exe$)", {{
|
||||
{ "d3d9.customVendorId", "10de" },
|
||||
}} },
|
||||
/* Beyond Good And Evil *
|
||||
* Fixes missing sun and light shafts */
|
||||
{ R"(\\BGE\.exe$)", {{
|
||||
{ "d3d9.allowDoNotWait", "False" },
|
||||
}} },
|
||||
/* Supreme Commander & Forged Alliance Forever */
|
||||
{ R"(\\(SupremeCommander|ForgedAlliance)\.exe$)", {{
|
||||
{ "d3d9.floatEmulation", "Strict" },
|
||||
@ -580,11 +566,6 @@ namespace dxvk {
|
||||
{ R"(\\bionic_commando\.exe$)", {{
|
||||
{ "d3d9.maxFrameRate", "60" },
|
||||
}} },
|
||||
/* Port Royale 3 *
|
||||
* Fixes infinite loading screens */
|
||||
{ R"(\\PortRoyale3\.exe$)", {{
|
||||
{ "d3d9.allowDoNotWait", "False" },
|
||||
}} },
|
||||
/* Need For Speed 3 modern patch */
|
||||
{ R"(\\nfs3\.exe$)", {{
|
||||
{ "d3d9.enableDialogMode", "True" },
|
||||
|
Loading…
Reference in New Issue
Block a user