Framedumps: Add finish() function to limit memory lifetime.
This commit is contained in:
parent
ebc617882b
commit
b5a91e1dfa
|
@ -891,6 +891,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight,
|
||||||
formatBufferDump((u8*)map.pData, image.data(), source_width, source_height, map.RowPitch);
|
formatBufferDump((u8*)map.pData, image.data(), source_width, source_height, map.RowPitch);
|
||||||
|
|
||||||
DumpFrameData(image.data(), source_width, source_height, AVIDump::DumpFormat::FORMAT_BGR, true);
|
DumpFrameData(image.data(), source_width, source_height, AVIDump::DumpFormat::FORMAT_BGR, true);
|
||||||
|
FinishFrameData();
|
||||||
|
|
||||||
D3D::context->Unmap(s_screenshot_texture, 0);
|
D3D::context->Unmap(s_screenshot_texture, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -869,6 +869,7 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height
|
||||||
source_height, dst_location.PlacedFootprint.Footprint.RowPitch);
|
source_height, dst_location.PlacedFootprint.Footprint.RowPitch);
|
||||||
|
|
||||||
DumpFrameData(image.data(), source_width, source_height, AVIDump::DumpFormat::FORMAT_BGR, true);
|
DumpFrameData(image.data(), source_width, source_height, AVIDump::DumpFormat::FORMAT_BGR, true);
|
||||||
|
FinishFrameData();
|
||||||
|
|
||||||
D3D12_RANGE write_range = {};
|
D3D12_RANGE write_range = {};
|
||||||
s_screenshot_texture->Unmap(0, &write_range);
|
s_screenshot_texture->Unmap(0, &write_range);
|
||||||
|
|
|
@ -1470,6 +1470,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight,
|
||||||
|
|
||||||
DumpFrameData(image.data(), flipped_trc.GetWidth(), flipped_trc.GetHeight(),
|
DumpFrameData(image.data(), flipped_trc.GetWidth(), flipped_trc.GetHeight(),
|
||||||
AVIDump::DumpFormat::FORMAT_RGBA, true);
|
AVIDump::DumpFormat::FORMAT_RGBA, true);
|
||||||
|
FinishFrameData();
|
||||||
}
|
}
|
||||||
// Finish up the current frame, print some stats
|
// Finish up the current frame, print some stats
|
||||||
|
|
||||||
|
|
|
@ -497,6 +497,7 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height
|
||||||
static_cast<int>(m_screenshot_render_texture->GetWidth()),
|
static_cast<int>(m_screenshot_render_texture->GetWidth()),
|
||||||
static_cast<int>(m_screenshot_render_texture->GetHeight()),
|
static_cast<int>(m_screenshot_render_texture->GetHeight()),
|
||||||
AVIDump::DumpFormat::FORMAT_RGBA);
|
AVIDump::DumpFormat::FORMAT_RGBA);
|
||||||
|
FinishFrameData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -605,6 +605,10 @@ void Renderer::DumpFrameData(const u8* data, int w, int h, AVIDump::DumpFormat f
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::FinishFrameData()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Renderer::FlipImageData(u8* data, int w, int h, int pixel_width)
|
void Renderer::FlipImageData(u8* data, int w, int h, int pixel_width)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < h / 2; ++y)
|
for (int y = 0; y < h / 2; ++y)
|
||||||
|
|
|
@ -150,6 +150,7 @@ protected:
|
||||||
bool IsFrameDumping();
|
bool IsFrameDumping();
|
||||||
void DumpFrameData(const u8* data, int w, int h, AVIDump::DumpFormat format,
|
void DumpFrameData(const u8* data, int w, int h, AVIDump::DumpFormat format,
|
||||||
bool swap_upside_down = false);
|
bool swap_upside_down = false);
|
||||||
|
void FinishFrameData();
|
||||||
|
|
||||||
static volatile bool s_bScreenshot;
|
static volatile bool s_bScreenshot;
|
||||||
static std::mutex s_criticalScreenshot;
|
static std::mutex s_criticalScreenshot;
|
||||||
|
|
Loading…
Reference in New Issue