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.
(cherry picked from commit c74b406a4c)
This commit is contained in:
1 parent
988714beb9
commit
dd791f6838
1 file changed
+7
@@ -4889,7 +4889,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;
|
||||
|
||||
Reference in new issue
Block a user