MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / Dispose

Method Dispose

Source/Engine/GraphicsDevice/DirectX/DX12/GPUDeviceDX12.cpp:1013–1064  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1011}
1012
1013void GPUDeviceDX12::Dispose()
1014{
1015 GPUDeviceLock lock(this);
1016 if (_state == DeviceState::Disposed)
1017 return;
1018
1019 // Set current state
1020 _state = DeviceState::Disposing;
1021
1022 // Wait for rendering end
1023 WaitForGPU();
1024
1025 // Pre dispose
1026 preDispose();
1027
1028 // Release all late dispose resources (if state is Disposing all are released)
1029 updateRes2Dispose();
1030
1031 // Clear pipeline objects
1032 SAFE_DELETE_GPU_RESOURCE(DummyVB);
1033 for (auto& srv : _nullSrv)
1034 srv.Release();
1035 _nullUav.Release();
1036 for (auto* heap : QueryHeaps)
1037 {
1038 heap->Destroy();
1039 Delete(heap);
1040 }
1041 QueryHeaps.Clear();
1042 DX_SAFE_RELEASE_CHECK(_rootSignature, 0);
1043 Heap_CBV_SRV_UAV.ReleaseGPU();
1044 Heap_RTV.ReleaseGPU();
1045 Heap_DSV.ReleaseGPU();
1046 Heap_Sampler.ReleaseGPU();
1047 RingHeap_CBV_SRV_UAV.ReleaseGPU();
1048 RingHeap_Sampler.ReleaseGPU();
1049 UploadBuffer.ReleaseGPU();
1050 SAFE_DELETE(DrawIndirectCommandSignature);
1051 SAFE_DELETE(_mainContext);
1052 SAFE_DELETE(_commandQueue);
1053
1054 // Clear DirectX stuff
1055 SAFE_DELETE(_adapter);
1056 SAFE_RELEASE(_device);
1057 SAFE_RELEASE(_factoryDXGI);
1058
1059 // Base
1060 GPUDeviceDX::Dispose();
1061
1062 // Set current state
1063 _state = DeviceState::Disposed;
1064}
1065
1066void GPUDeviceDX12::WaitForGPU()
1067{

Callers

nothing calls this directly

Calls 6

DeleteFunction · 0.85
DisposeFunction · 0.85
ReleaseMethod · 0.45
DestroyMethod · 0.45
ClearMethod · 0.45
ReleaseGPUMethod · 0.45

Tested by

no test coverage detected