mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[d3d9] Unbind buffers in EndScene & Reset
This commit is contained in:
parent
c9cea93b7b
commit
49b18f03fe
@ -481,6 +481,14 @@ namespace dxvk {
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Unbind all buffers that were still bound to the backend to avoid leaks.
|
||||
EmitCs([](DxvkContext* ctx) {
|
||||
ctx->bindIndexBuffer(DxvkBufferSlice(), VK_INDEX_TYPE_UINT32);
|
||||
for (uint32_t i = 0; i < DxvkLimits::MaxNumVertexBindings; i++) {
|
||||
ctx->bindVertexBuffer(i, DxvkBufferSlice(), 0);
|
||||
}
|
||||
});
|
||||
|
||||
Flush();
|
||||
SynchronizeCsThread(DxvkCsThread::SynchronizeAll);
|
||||
|
||||
@ -1603,6 +1611,16 @@ namespace dxvk {
|
||||
|
||||
m_flags.clr(D3D9DeviceFlag::InScene);
|
||||
|
||||
// D3D9 resets the internally bound vertex buffers and index buffer in EndScene.
|
||||
// We have to ignore unbinding those buffers because of Operation Flashpoint Red River,
|
||||
// so we should also clear the bindings here, to avoid leaks.
|
||||
EmitCs([](DxvkContext* ctx) {
|
||||
ctx->bindIndexBuffer(DxvkBufferSlice(), VK_INDEX_TYPE_UINT32);
|
||||
for (uint32_t i = 0; i < DxvkLimits::MaxNumVertexBindings; i++) {
|
||||
ctx->bindVertexBuffer(i, DxvkBufferSlice(), 0);
|
||||
}
|
||||
});
|
||||
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user