diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 9eb1ecae..f58cc02c 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); } }