mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-06-05 22:55:04 -06:00
d3d12: fix memleak
This commit is contained in:
parent
7db3599648
commit
9e2dfcaba3
@ -85,6 +85,15 @@ void D3D12GSRender::ResourceStorage::Reset()
|
|||||||
m_currentScaleOffsetBufferIndex = 0;
|
m_currentScaleOffsetBufferIndex = 0;
|
||||||
m_currentTextureIndex = 0;
|
m_currentTextureIndex = 0;
|
||||||
|
|
||||||
|
for (auto tmp : m_inUseConstantsBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseVertexIndexBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTextureUploadBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTexture2D)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
|
||||||
m_commandAllocator->Reset();
|
m_commandAllocator->Reset();
|
||||||
m_textureUploadCommandAllocator->Reset();
|
m_textureUploadCommandAllocator->Reset();
|
||||||
m_downloadCommandAllocator->Reset();
|
m_downloadCommandAllocator->Reset();
|
||||||
@ -131,6 +140,14 @@ void D3D12GSRender::ResourceStorage::Init(ID3D12Device *device)
|
|||||||
void D3D12GSRender::ResourceStorage::Release()
|
void D3D12GSRender::ResourceStorage::Release()
|
||||||
{
|
{
|
||||||
// NOTE: Should be released only if no command are in flight !
|
// NOTE: Should be released only if no command are in flight !
|
||||||
|
for (auto tmp : m_inUseConstantsBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseVertexIndexBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTextureUploadBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTexture2D)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
|
||||||
m_constantsBufferDescriptorsHeap->Release();
|
m_constantsBufferDescriptorsHeap->Release();
|
||||||
m_scaleOffsetDescriptorHeap->Release();
|
m_scaleOffsetDescriptorHeap->Release();
|
||||||
@ -896,7 +913,6 @@ void D3D12GSRender::Flip()
|
|||||||
m_commandQueueGraphic->Signal(fence.Get(), 1);
|
m_commandQueueGraphic->Signal(fence.Get(), 1);
|
||||||
|
|
||||||
// Flush
|
// Flush
|
||||||
getCurrentResourceStorage().Reset();
|
|
||||||
m_texturesCache.clear();
|
m_texturesCache.clear();
|
||||||
m_texturesRTTs.clear();
|
m_texturesRTTs.clear();
|
||||||
|
|
||||||
@ -906,25 +922,14 @@ void D3D12GSRender::Flip()
|
|||||||
CloseHandle(getNonCurrentResourceStorage().m_frameFinished);
|
CloseHandle(getNonCurrentResourceStorage().m_frameFinished);
|
||||||
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseConstantsBuffers)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseConstantsBuffers)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_constantsData.m_getPos = std::get<0>(tmp);
|
m_constantsData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseVertexIndexBuffers)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseVertexIndexBuffers)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_vertexIndexData.m_getPos = std::get<0>(tmp);
|
m_vertexIndexData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseTextureUploadBuffers)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseTextureUploadBuffers)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_textureUploadData.m_getPos = std::get<0>(tmp);
|
m_textureUploadData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseTexture2D)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseTexture2D)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_textureData.m_getPos = std::get<0>(tmp);
|
m_textureData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
getNonCurrentResourceStorage().Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
getNonCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync;
|
getNonCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user