Fix resource leaks in AutoStagingTexture::EnsureSize and D3D11HostDisplay::DownloadTexture

This commit is contained in:
Silent 2020-09-04 23:44:19 +02:00
parent fd0a009a7f
commit 89e0290d06
No known key found for this signature in database
GPG Key ID: AE53149BB0C45AF1
2 changed files with 5 additions and 5 deletions

View File

@ -84,8 +84,8 @@ bool AutoStagingTexture::EnsureSize(ID3D11DeviceContext* context, u32 width, u32
if (m_texture && m_width >= width && m_height >= height && m_format == format)
return true;
ID3D11Device* device;
context->GetDevice(&device);
ComPtr<ID3D11Device> device;
context->GetDevice(device.GetAddressOf());
CD3D11_TEXTURE2D_DESC new_desc(format, width, height, 1, 1, 0,
for_uploading ? D3D11_USAGE_DYNAMIC : D3D11_USAGE_STAGING,

View File

@ -156,15 +156,15 @@ bool D3D11HostDisplay::DownloadTexture(const void* texture_handle, u32 x, u32 y,
{
ID3D11ShaderResourceView* srv =
const_cast<ID3D11ShaderResourceView*>(static_cast<const ID3D11ShaderResourceView*>(texture_handle));
ID3D11Resource* srv_resource;
ComPtr<ID3D11Resource> srv_resource;
D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc;
srv->GetResource(&srv_resource);
srv->GetResource(srv_resource.GetAddressOf());
srv->GetDesc(&srv_desc);
if (!m_readback_staging_texture.EnsureSize(m_context.Get(), width, height, srv_desc.Format, false))
return false;
m_readback_staging_texture.CopyFromTexture(m_context.Get(), srv_resource, 0, x, y, 0, 0, width, height);
m_readback_staging_texture.CopyFromTexture(m_context.Get(), srv_resource.Get(), 0, x, y, 0, 0, width, height);
return m_readback_staging_texture.ReadPixels<u32>(m_context.Get(), 0, 0, width, height, out_data_stride / sizeof(u32),
static_cast<u32*>(out_data));
}