From a39b9cb131f453d34f8498090413157565377931 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 22 May 2018 21:10:39 +0200 Subject: [PATCH] [d3d11] Pre-clear buffers with D3D11_USAGE_DEFAULT Some games may expect buffers, like images, to be pre-initialized. --- src/d3d11/d3d11_device.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 9eb1ecae8..f58cc02cb 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1851,6 +1851,9 @@ namespace dxvk { const D3D11_SUBRESOURCE_DATA* pInitialData) { const DxvkBufferSlice bufferSlice = pBuffer->GetBufferSlice(); + D3D11_BUFFER_DESC desc; + pBuffer->GetDesc(&desc); + if (pInitialData != nullptr && pInitialData->pSysMem != nullptr) { LockResourceInitContext(); @@ -1860,6 +1863,16 @@ namespace dxvk { bufferSlice.length(), pInitialData->pSysMem); + UnlockResourceInitContext(1); + } else if (desc.Usage == D3D11_USAGE_DEFAULT) { + LockResourceInitContext(); + + m_resourceInitContext->clearBuffer( + bufferSlice.buffer(), + bufferSlice.offset(), + bufferSlice.length(), + 0u); + UnlockResourceInitContext(1); } }