mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-26 15:58:41 +00:00
Fix SDL GPU D3D12 Descriptor Heap leak
When descriptor leaks overflow, the D3D12 SDL GPU renderer fetches more from the pool, but never returns them, which eventually causes an "out of memory" crash.
This commit is contained in:
parent
2a96997e90
commit
c74b406a4c
1 changed files with 7 additions and 0 deletions
|
|
@ -4885,7 +4885,14 @@ static void D3D12_INTERNAL_SetGPUDescriptorHeaps(D3D12CommandBuffer *commandBuff
|
|||
viewHeap = D3D12_INTERNAL_AcquireGPUDescriptorHeapFromPool(commandBuffer, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
||||
samplerHeap = D3D12_INTERNAL_AcquireGPUDescriptorHeapFromPool(commandBuffer, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
|
||||
|
||||
if (commandBuffer->gpuDescriptorHeaps[0] != NULL) {
|
||||
D3D12_INTERNAL_ReturnGPUDescriptorHeapToPool(commandBuffer->renderer, commandBuffer->gpuDescriptorHeaps[0]);
|
||||
}
|
||||
commandBuffer->gpuDescriptorHeaps[0] = viewHeap;
|
||||
|
||||
if (commandBuffer->gpuDescriptorHeaps[1] != NULL) {
|
||||
D3D12_INTERNAL_ReturnGPUDescriptorHeapToPool(commandBuffer->renderer, commandBuffer->gpuDescriptorHeaps[1]);
|
||||
}
|
||||
commandBuffer->gpuDescriptorHeaps[1] = samplerHeap;
|
||||
|
||||
heaps[0] = viewHeap->handle;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue