Fix resource leaks in AutoStagingTexture::EnsureSize and D3D11HostDisplay::DownloadTexture
This commit is contained in:
parent
fd0a009a7f
commit
89e0290d06
|
@ -84,8 +84,8 @@ bool AutoStagingTexture::EnsureSize(ID3D11DeviceContext* context, u32 width, u32
|
||||||
if (m_texture && m_width >= width && m_height >= height && m_format == format)
|
if (m_texture && m_width >= width && m_height >= height && m_format == format)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
ID3D11Device* device;
|
ComPtr<ID3D11Device> device;
|
||||||
context->GetDevice(&device);
|
context->GetDevice(device.GetAddressOf());
|
||||||
|
|
||||||
CD3D11_TEXTURE2D_DESC new_desc(format, width, height, 1, 1, 0,
|
CD3D11_TEXTURE2D_DESC new_desc(format, width, height, 1, 1, 0,
|
||||||
for_uploading ? D3D11_USAGE_DYNAMIC : D3D11_USAGE_STAGING,
|
for_uploading ? D3D11_USAGE_DYNAMIC : D3D11_USAGE_STAGING,
|
||||||
|
|
|
@ -156,15 +156,15 @@ bool D3D11HostDisplay::DownloadTexture(const void* texture_handle, u32 x, u32 y,
|
||||||
{
|
{
|
||||||
ID3D11ShaderResourceView* srv =
|
ID3D11ShaderResourceView* srv =
|
||||||
const_cast<ID3D11ShaderResourceView*>(static_cast<const ID3D11ShaderResourceView*>(texture_handle));
|
const_cast<ID3D11ShaderResourceView*>(static_cast<const ID3D11ShaderResourceView*>(texture_handle));
|
||||||
ID3D11Resource* srv_resource;
|
ComPtr<ID3D11Resource> srv_resource;
|
||||||
D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc;
|
D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc;
|
||||||
srv->GetResource(&srv_resource);
|
srv->GetResource(srv_resource.GetAddressOf());
|
||||||
srv->GetDesc(&srv_desc);
|
srv->GetDesc(&srv_desc);
|
||||||
|
|
||||||
if (!m_readback_staging_texture.EnsureSize(m_context.Get(), width, height, srv_desc.Format, false))
|
if (!m_readback_staging_texture.EnsureSize(m_context.Get(), width, height, srv_desc.Format, false))
|
||||||
return 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),
|
return m_readback_staging_texture.ReadPixels<u32>(m_context.Get(), 0, 0, width, height, out_data_stride / sizeof(u32),
|
||||||
static_cast<u32*>(out_data));
|
static_cast<u32*>(out_data));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue