2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 15:44:56 +00:00

Merge remote-tracking branch 'darkszero/feature/lazy-commit-resources'

# Conflicts:
#	extern/boo
This commit is contained in:
2021-10-25 23:07:56 -04:00
6 changed files with 35 additions and 2 deletions

View File

@@ -415,6 +415,7 @@ public:
} }
OPTICK_FRAME("MainThread"); OPTICK_FRAME("MainThread");
CGraphics::SetCommitResourcesAsLazy(m_cvarCommons.m_lazyCommitResources->toBoolean());
boo::SWindowRect rect = m_windowCallback.m_lastRect; boo::SWindowRect rect = m_windowCallback.m_lastRect;
rect.location = {0, 0}; rect.location = {0, 0};
@@ -482,6 +483,11 @@ public:
m_imGuiConsole.ShowAboutWindow(false, m_errorString); m_imGuiConsole.ShowAboutWindow(false, m_errorString);
} }
{
OPTICK_EVENT("Flush");
CGraphics::SetCommitResourcesAsLazy(false);
}
{ {
OPTICK_EVENT("Draw"); OPTICK_EVENT("Draw");
gfxQ->setRenderTarget(m_renderTex); gfxQ->setRenderTarget(m_renderTex);

View File

@@ -37,6 +37,7 @@ u32 CGraphics::g_FrameCounter = 0;
u32 CGraphics::g_Framerate = 0; u32 CGraphics::g_Framerate = 0;
u32 CGraphics::g_FramesPast = 0; u32 CGraphics::g_FramesPast = 0;
frame_clock::time_point CGraphics::g_FrameStartTime = frame_clock::now(); frame_clock::time_point CGraphics::g_FrameStartTime = frame_clock::now();
bool CGraphics::g_commitAsLazy = false;
const std::array<zeus::CMatrix3f, 6> CGraphics::skCubeBasisMats{{ const std::array<zeus::CMatrix3f, 6> CGraphics::skCubeBasisMats{{
/* Right */ /* Right */

View File

@@ -346,9 +346,31 @@ public:
static const char* PlatformName() { return g_BooPlatformName; } static const char* PlatformName() { return g_BooPlatformName; }
static bool g_commitAsLazy;
static void SetCommitResourcesAsLazy(bool newStatus) {
if (newStatus != g_commitAsLazy) {
g_commitAsLazy = newStatus;
if (!newStatus && g_BooFactory) {
g_BooFactory->commitPendingTransaction();
}
}
}
static void CommitResources(const boo::FactoryCommitFunc& commitFunc __BooTraceArgs) { static void CommitResources(const boo::FactoryCommitFunc& commitFunc __BooTraceArgs) {
CommitResources(commitFunc __BooTraceArgsUse, g_commitAsLazy);
}
static void CommitResources(const boo::FactoryCommitFunc& commitFunc __BooTraceArgs, bool lazy) {
if (!g_BooFactory) {
return;
}
if (lazy) {
g_BooFactory->lazyCommitTransaction(commitFunc __BooTraceArgsUse);
} else {
g_BooFactory->commitTransaction(commitFunc __BooTraceArgsUse); g_BooFactory->commitTransaction(commitFunc __BooTraceArgsUse);
} }
}
static void SetShaderDataBinding(const boo::ObjToken<boo::IShaderDataBinding>& binding) { static void SetShaderDataBinding(const boo::ObjToken<boo::IShaderDataBinding>& binding) {
g_BooMainCommandQueue->setShaderDataBinding(binding); g_BooMainCommandQueue->setShaderDataBinding(binding);

2
extern/boo vendored

Submodule extern/boo updated: 07ded238b4...49cfab476f

View File

@@ -27,6 +27,7 @@ struct CVarCommons {
CVar* m_texAnisotropy = nullptr; CVar* m_texAnisotropy = nullptr;
CVar* m_deepColor = nullptr; CVar* m_deepColor = nullptr;
CVar* m_variableDt = nullptr; CVar* m_variableDt = nullptr;
CVar* m_lazyCommitResources = nullptr;
CVar* m_debugOverlayPlayerInfo = nullptr; CVar* m_debugOverlayPlayerInfo = nullptr;
CVar* m_debugOverlayWorldInfo = nullptr; CVar* m_debugOverlayWorldInfo = nullptr;

View File

@@ -24,6 +24,9 @@ CVarCommons::CVarCommons(CVarManager& manager) : m_mgr(manager) {
m_variableDt = m_mgr.findOrMakeCVar( m_variableDt = m_mgr.findOrMakeCVar(
"variableDt", "Enable variable delta time (experimental)", false, "variableDt", "Enable variable delta time (experimental)", false,
(hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive | hecl::CVar::EFlags::ModifyRestart)); (hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive | hecl::CVar::EFlags::ModifyRestart));
m_lazyCommitResources = m_mgr.findOrMakeCVar(
"lazyCommitResources"sv, "Enable lazy commiting resources to GPU", true,
(hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive));
m_debugOverlayPlayerInfo = m_mgr.findOrMakeCVar( m_debugOverlayPlayerInfo = m_mgr.findOrMakeCVar(
"debugOverlay.playerInfo"sv, "Displays information about the player, such as location and orientation"sv, false, "debugOverlay.playerInfo"sv, "Displays information about the player, such as location and orientation"sv, false,