mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-31 14:52:11 +01:00
[d3d9] Revert Nekopara hacks
This commit is contained in:
parent
fa988be4aa
commit
86e8315416
@ -355,13 +355,6 @@ namespace dxvk {
|
|||||||
bool GetUploading(UINT Subresource) const { return m_uploading.get(Subresource); }
|
bool GetUploading(UINT Subresource) const { return m_uploading.get(Subresource); }
|
||||||
|
|
||||||
void SetNeedsUpload(UINT Subresource, bool upload) { m_needsUpload.set(Subresource, upload); }
|
void SetNeedsUpload(UINT Subresource, bool upload) { m_needsUpload.set(Subresource, upload); }
|
||||||
void MarkAllForUpload() {
|
|
||||||
uint32_t subresourceDwords = CountSubresources() / 32;
|
|
||||||
for (uint32_t i = 0; i < subresourceDwords; i++)
|
|
||||||
m_needsUpload.dword(i) = std::numeric_limits<uint32_t>::max();
|
|
||||||
|
|
||||||
m_needsUpload.dword(subresourceDwords) = CountSubresources() % 32;
|
|
||||||
}
|
|
||||||
bool NeedsAnyUpload() { return m_needsUpload.any(); }
|
bool NeedsAnyUpload() { return m_needsUpload.any(); }
|
||||||
void ClearNeedsUpload() { return m_needsUpload.clearAll(); }
|
void ClearNeedsUpload() { return m_needsUpload.clearAll(); }
|
||||||
|
|
||||||
|
@ -4120,7 +4120,7 @@ namespace dxvk {
|
|||||||
UINT Subresource = pResource->CalcSubresource(Face, MipLevel);
|
UINT Subresource = pResource->CalcSubresource(Face, MipLevel);
|
||||||
|
|
||||||
// We weren't locked anyway!
|
// We weren't locked anyway!
|
||||||
if (unlikely(!pResource->GetLocked(Subresource) && !m_d3d9Options.uploadAllManagedSubresources))
|
if (unlikely(!pResource->GetLocked(Subresource)))
|
||||||
return D3DERR_INVALIDCALL;
|
return D3DERR_INVALIDCALL;
|
||||||
|
|
||||||
pResource->SetLocked(Subresource, false);
|
pResource->SetLocked(Subresource, false);
|
||||||
@ -4129,10 +4129,7 @@ namespace dxvk {
|
|||||||
if (!pResource->GetReadOnlyLocked(Subresource)) {
|
if (!pResource->GetReadOnlyLocked(Subresource)) {
|
||||||
// Only flush buffer -> image if we actually have an image
|
// Only flush buffer -> image if we actually have an image
|
||||||
if (pResource->IsManaged() && !m_d3d9Options.evictManagedOnUnlock) {
|
if (pResource->IsManaged() && !m_d3d9Options.evictManagedOnUnlock) {
|
||||||
if (unlikely(m_d3d9Options.uploadAllManagedSubresources))
|
pResource->SetNeedsUpload(Subresource, true);
|
||||||
pResource->MarkAllForUpload();
|
|
||||||
else
|
|
||||||
pResource->SetNeedsUpload(Subresource, true);
|
|
||||||
|
|
||||||
for (uint32_t tex = m_activeTextures; tex; tex &= tex - 1) {
|
for (uint32_t tex = m_activeTextures; tex; tex &= tex - 1) {
|
||||||
// Guaranteed to not be nullptr...
|
// Guaranteed to not be nullptr...
|
||||||
@ -4170,9 +4167,6 @@ namespace dxvk {
|
|||||||
// we need to copy its contents into the image
|
// we need to copy its contents into the image
|
||||||
const Rc<DxvkBuffer> copyBuffer = pResource->GetBuffer(Subresource);
|
const Rc<DxvkBuffer> copyBuffer = pResource->GetBuffer(Subresource);
|
||||||
|
|
||||||
if (unlikely(copyBuffer == nullptr))
|
|
||||||
return D3D_OK;
|
|
||||||
|
|
||||||
auto formatInfo = imageFormatInfo(image->info().format);
|
auto formatInfo = imageFormatInfo(image->info().format);
|
||||||
auto subresource = pResource->GetSubresourceFromIndex(
|
auto subresource = pResource->GetSubresourceFromIndex(
|
||||||
formatInfo->aspectMask, Subresource);
|
formatInfo->aspectMask, Subresource);
|
||||||
|
@ -71,7 +71,6 @@ namespace dxvk {
|
|||||||
this->enumerateByDisplays = config.getOption<bool> ("d3d9.enumerateByDisplays", true);
|
this->enumerateByDisplays = config.getOption<bool> ("d3d9.enumerateByDisplays", true);
|
||||||
this->longMad = config.getOption<bool> ("d3d9.longMad", false);
|
this->longMad = config.getOption<bool> ("d3d9.longMad", false);
|
||||||
this->tearFree = config.getOption<Tristate> ("d3d9.tearFree", Tristate::Auto);
|
this->tearFree = config.getOption<Tristate> ("d3d9.tearFree", Tristate::Auto);
|
||||||
this->uploadAllManagedSubresources = config.getOption<bool>("d3d9.uploadAllManagedSubresources", false);
|
|
||||||
|
|
||||||
// If we are not Nvidia, enable general hazards.
|
// If we are not Nvidia, enable general hazards.
|
||||||
this->generalHazards = adapter == nullptr || !adapter->matchesDriver(DxvkGpuVendor::Nvidia, VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, 0, 0);
|
this->generalHazards = adapter == nullptr || !adapter->matchesDriver(DxvkGpuVendor::Nvidia, VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, 0, 0);
|
||||||
|
@ -147,10 +147,6 @@ namespace dxvk {
|
|||||||
/// Tear-free mode if vsync is disabled
|
/// Tear-free mode if vsync is disabled
|
||||||
/// Tearing mode if vsync is enabled
|
/// Tearing mode if vsync is enabled
|
||||||
Tristate tearFree;
|
Tristate tearFree;
|
||||||
|
|
||||||
/// Upload all subresources of managed resources when unlocked.
|
|
||||||
/// Workaround for a game bug in Nekopara.
|
|
||||||
bool uploadAllManagedSubresources;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
@ -352,10 +352,6 @@ namespace dxvk {
|
|||||||
{ R"(\\SpellForce2.*\.exe$)", {{
|
{ R"(\\SpellForce2.*\.exe$)", {{
|
||||||
{ "d3d9.forceSamplerTypeSpecConstants", "True" },
|
{ "d3d9.forceSamplerTypeSpecConstants", "True" },
|
||||||
}} },
|
}} },
|
||||||
/* Nekopara */
|
|
||||||
{ R"(\\nekopara.*\.exe$)", {{
|
|
||||||
{ "d3d9.uploadAllManagedSubresources", "True" },
|
|
||||||
}} },
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user