Assorted fixes for memory leaks etc
This commit is contained in:
parent
7750ee9f7b
commit
f7717063a8
8 changed files with 21 additions and 22 deletions
|
@ -120,6 +120,9 @@ FramebufferManagerD3D11::FramebufferManagerD3D11(Draw::DrawContext *draw)
|
|||
|
||||
FramebufferManagerD3D11::~FramebufferManagerD3D11() {
|
||||
// Drawing cleanup
|
||||
if (vbFullScreenRect_) {
|
||||
vbFullScreenRect_->Release();
|
||||
}
|
||||
if (pFramebufferVertexShader_) {
|
||||
pFramebufferVertexShader_->Release();
|
||||
pFramebufferVertexShader_ = nullptr;
|
||||
|
@ -132,6 +135,9 @@ FramebufferManagerD3D11::~FramebufferManagerD3D11() {
|
|||
if (drawPixelsTex_) {
|
||||
drawPixelsTex_->Release();
|
||||
}
|
||||
if (drawPixelsTexView_) {
|
||||
drawPixelsTexView_->Release();
|
||||
}
|
||||
|
||||
// FBO cleanup
|
||||
for (auto it = tempFBOs_.begin(), end = tempFBOs_.end(); it != end; ++it) {
|
||||
|
|
|
@ -127,7 +127,7 @@ private:
|
|||
ShaderManagerD3D11 *shaderManager_;
|
||||
DrawEngineD3D11 *drawEngine_;
|
||||
|
||||
ID3D11Buffer *vbFullScreenRect_;
|
||||
ID3D11Buffer *vbFullScreenRect_ = nullptr;
|
||||
UINT vbFullScreenStride_ = 20;
|
||||
UINT vbFullScreenOffset_ = 0;
|
||||
|
||||
|
|
|
@ -479,9 +479,11 @@ GPU_D3D11::GPU_D3D11(GraphicsContext *gfxCtx, Draw::DrawContext *draw)
|
|||
GPU_D3D11::~GPU_D3D11() {
|
||||
delete depalShaderCache_;
|
||||
framebufferManagerD3D11_->DestroyAllFBOs(true);
|
||||
delete framebufferManagerD3D11_;
|
||||
shaderManagerD3D11_->ClearShaders();
|
||||
draw_->BindPipeline(nullptr);
|
||||
delete shaderManagerD3D11_;
|
||||
delete textureCacheD3D11_;
|
||||
draw_->BindPipeline(nullptr);
|
||||
stockD3D11.Destroy();
|
||||
}
|
||||
|
||||
|
|
|
@ -1110,8 +1110,9 @@ void TextureCacheD3D11::LoadTextureLevel(TexCacheEntry &entry, ReplacedTexture &
|
|||
tfmt = DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
}
|
||||
}
|
||||
|
||||
D3D11_TEXTURE2D_DESC desc{};
|
||||
// TODO: Make it immutable, will requires some code restructuring though.
|
||||
// TODO: Make it DEFAULT or immutable, required for multiple mip levels. Will require some code restructuring though.
|
||||
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
|
||||
desc.Usage = D3D11_USAGE_DYNAMIC;
|
||||
desc.ArraySize = 1;
|
||||
|
|
|
@ -513,6 +513,8 @@ void GPU_DX9::CheckGPUFeatures() {
|
|||
|
||||
GPU_DX9::~GPU_DX9() {
|
||||
framebufferManagerDX9_->DestroyAllFBOs(true);
|
||||
delete framebufferManagerDX9_;
|
||||
delete textureCache_;
|
||||
shaderManagerDX9_->ClearCache(true);
|
||||
delete shaderManagerDX9_;
|
||||
}
|
||||
|
|
|
@ -495,7 +495,8 @@ GPU_GLES::~GPU_GLES() {
|
|||
}
|
||||
delete shaderManagerGL_;
|
||||
shaderManagerGL_ = nullptr;
|
||||
|
||||
delete framebufferManagerGL_;
|
||||
delete textureCacheGL_;
|
||||
#ifdef _WIN32
|
||||
gfxCtx_->SwapInterval(0);
|
||||
#endif
|
||||
|
|
|
@ -54,7 +54,6 @@ GPUCommon::GPUCommon(GraphicsContext *gfxCtx, Draw::DrawContext *draw) :
|
|||
}
|
||||
|
||||
GPUCommon::~GPUCommon() {
|
||||
delete framebufferManager_;
|
||||
}
|
||||
|
||||
void GPUCommon::BeginHostFrame() {
|
||||
|
|
|
@ -111,6 +111,11 @@ void D3D11Context::Resize() {
|
|||
}
|
||||
|
||||
void D3D11Context::Shutdown() {
|
||||
delete draw_;
|
||||
draw_ = nullptr;
|
||||
context_->ClearState();
|
||||
context_->Flush();
|
||||
|
||||
#ifdef _DEBUG
|
||||
d3dInfoQueue_->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_CORRUPTION, false);
|
||||
d3dInfoQueue_->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, false);
|
||||
|
@ -121,27 +126,10 @@ void D3D11Context::Shutdown() {
|
|||
#endif
|
||||
d3dDebug_->Release();
|
||||
d3dInfoQueue_->Release();
|
||||
context_->ClearState();
|
||||
context_->Flush();
|
||||
|
||||
delete draw_;
|
||||
draw_ = nullptr;
|
||||
|
||||
context_->Release();
|
||||
context_ = nullptr;
|
||||
device_->Release();
|
||||
device_ = nullptr;
|
||||
/*
|
||||
DX9::DestroyShaders();
|
||||
device->EndScene();
|
||||
device->Release();
|
||||
d3d->Release();
|
||||
UnloadD3DXDynamic();
|
||||
DX9::pD3Ddevice = nullptr;
|
||||
DX9::pD3DdeviceEx = nullptr;
|
||||
DX9::pD3D = nullptr;
|
||||
*/
|
||||
hWnd_ = nullptr;
|
||||
// FreeLibrary(hD3D11);
|
||||
// hD3D11 = nullptr;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue