Vulkan: Use VideoCommon framedump helpers.
This commit is contained in:
parent
6b08830a95
commit
e82cf46436
|
@ -26,10 +26,7 @@
|
||||||
#include "VideoBackends/Vulkan/Util.h"
|
#include "VideoBackends/Vulkan/Util.h"
|
||||||
#include "VideoBackends/Vulkan/VulkanContext.h"
|
#include "VideoBackends/Vulkan/VulkanContext.h"
|
||||||
|
|
||||||
#if defined(HAVE_LIBAV) || defined(_WIN32)
|
|
||||||
#include "VideoCommon/AVIDump.h"
|
#include "VideoCommon/AVIDump.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "VideoCommon/BPFunctions.h"
|
#include "VideoCommon/BPFunctions.h"
|
||||||
#include "VideoCommon/BPMemory.h"
|
#include "VideoCommon/BPMemory.h"
|
||||||
#include "VideoCommon/ImageWrite.h"
|
#include "VideoCommon/ImageWrite.h"
|
||||||
|
@ -65,15 +62,6 @@ Renderer::Renderer(std::unique_ptr<SwapChain> swap_chain) : m_swap_chain(std::mo
|
||||||
|
|
||||||
Renderer::~Renderer()
|
Renderer::~Renderer()
|
||||||
{
|
{
|
||||||
#if defined(HAVE_LIBAV) || defined(_WIN32)
|
|
||||||
// Stop frame dumping if it was left enabled at shutdown time.
|
|
||||||
if (bAVIDumping)
|
|
||||||
{
|
|
||||||
AVIDump::Stop();
|
|
||||||
bAVIDumping = false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_Config.bRunning = false;
|
g_Config.bRunning = false;
|
||||||
UpdateActiveConfig();
|
UpdateActiveConfig();
|
||||||
DestroyScreenshotResources();
|
DestroyScreenshotResources();
|
||||||
|
@ -494,20 +482,22 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height
|
||||||
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||||
|
|
||||||
// Draw to the screenshot buffer if needed.
|
// Draw to the screenshot buffer if needed.
|
||||||
bool needs_screenshot = (s_bScreenshot || SConfig::GetInstance().m_DumpFrames);
|
bool needs_framedump = IsFrameDumping();
|
||||||
|
bool needs_screenshot = s_bScreenshot || needs_framedump;
|
||||||
if (needs_screenshot && DrawScreenshot(source_rc, efb_color_texture))
|
if (needs_screenshot && DrawScreenshot(source_rc, efb_color_texture))
|
||||||
{
|
{
|
||||||
if (s_bScreenshot)
|
if (s_bScreenshot)
|
||||||
WriteScreenshot();
|
|
||||||
|
|
||||||
if (SConfig::GetInstance().m_DumpFrames)
|
|
||||||
WriteFrameDump();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// Stop frame dump if requested.
|
WriteScreenshot();
|
||||||
if (bAVIDumping)
|
}
|
||||||
StopFrameDump();
|
|
||||||
|
if (needs_framedump)
|
||||||
|
{
|
||||||
|
DumpFrameData(reinterpret_cast<const u8*>(m_screenshot_readback_texture->GetMapPointer()),
|
||||||
|
static_cast<int>(m_screenshot_render_texture->GetWidth()),
|
||||||
|
static_cast<int>(m_screenshot_render_texture->GetHeight()),
|
||||||
|
AVIDump::DumpFormat::FORMAT_RGBA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore the EFB color texture to color attachment ready for rendering the next frame.
|
// Restore the EFB color texture to color attachment ready for rendering the next frame.
|
||||||
|
@ -785,56 +775,6 @@ void Renderer::WriteScreenshot()
|
||||||
s_screenshotCompleted.Set();
|
s_screenshotCompleted.Set();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::WriteFrameDump()
|
|
||||||
{
|
|
||||||
#if defined(HAVE_LIBAV) || defined(_WIN32)
|
|
||||||
if (!bLastFrameDumped)
|
|
||||||
{
|
|
||||||
bLastFrameDumped = true;
|
|
||||||
bAVIDumping = AVIDump::Start(static_cast<int>(m_screenshot_render_texture->GetWidth()),
|
|
||||||
static_cast<int>(m_screenshot_render_texture->GetHeight()),
|
|
||||||
AVIDump::DumpFormat::FORMAT_RGBA);
|
|
||||||
|
|
||||||
if (!bAVIDumping)
|
|
||||||
{
|
|
||||||
OSD::AddMessage("Failed to start frame dumping.", 2000);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
OSD::AddMessage(StringFromFormat("Frame dumping started (%ux%u RGBA8).",
|
|
||||||
m_screenshot_render_texture->GetWidth(),
|
|
||||||
m_screenshot_render_texture->GetHeight()),
|
|
||||||
2000);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bAVIDumping)
|
|
||||||
{
|
|
||||||
AVIDump::AddFrame(reinterpret_cast<const u8*>(m_screenshot_readback_texture->GetMapPointer()),
|
|
||||||
static_cast<int>(m_screenshot_render_texture->GetWidth()),
|
|
||||||
static_cast<int>(m_screenshot_render_texture->GetHeight()));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (!bLastFrameDumped)
|
|
||||||
{
|
|
||||||
OSD::AddMessage("Dumping frames not supported", 2000);
|
|
||||||
bLastFrameDumped = true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void Renderer::StopFrameDump()
|
|
||||||
{
|
|
||||||
#if defined(HAVE_LIBAV) || defined(_WIN32)
|
|
||||||
if (bAVIDumping)
|
|
||||||
{
|
|
||||||
OSD::AddMessage("Frame dumping stopped.", 2000);
|
|
||||||
bAVIDumping = false;
|
|
||||||
bLastFrameDumped = false;
|
|
||||||
AVIDump::Stop();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void Renderer::CheckForTargetResize(u32 fb_width, u32 fb_stride, u32 fb_height)
|
void Renderer::CheckForTargetResize(u32 fb_width, u32 fb_stride, u32 fb_height)
|
||||||
{
|
{
|
||||||
if (FramebufferManagerBase::LastXfbWidth() == fb_stride &&
|
if (FramebufferManagerBase::LastXfbWidth() == fb_stride &&
|
||||||
|
|
|
@ -100,9 +100,6 @@ private:
|
||||||
bool ResizeScreenshotBuffer(u32 new_width, u32 new_height);
|
bool ResizeScreenshotBuffer(u32 new_width, u32 new_height);
|
||||||
void DestroyScreenshotResources();
|
void DestroyScreenshotResources();
|
||||||
void WriteScreenshot();
|
void WriteScreenshot();
|
||||||
void WriteFrameDump();
|
|
||||||
void StopFrameDump();
|
|
||||||
|
|
||||||
FramebufferManager* m_framebuffer_mgr = nullptr;
|
FramebufferManager* m_framebuffer_mgr = nullptr;
|
||||||
|
|
||||||
VkSemaphore m_image_available_semaphore = VK_NULL_HANDLE;
|
VkSemaphore m_image_available_semaphore = VK_NULL_HANDLE;
|
||||||
|
|
Loading…
Reference in New Issue