summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2026-03-03 12:25:16 -0500
committerGitHub <noreply@github.com>2026-03-03 12:25:16 -0500
commit43def54de2c67450333046d3bee8275d5acaa239 (patch)
tree725be2208beb6bde80c9086c02f75a01dbcd6ded
parent5c62c90d354817865268b0c3514d347999f6c407 (diff)
parent03bcd564c5f185a86e20bccd7534d63b832b2203 (diff)
Merge pull request #14435 from Simonx22/fix/metal-early-stop-shutdown
Metal: Always run endEncoding on command encoders
-rw-r--r--Source/Core/VideoBackends/Metal/MTLStateTracker.mm17
1 files changed, 12 insertions, 5 deletions
diff --git a/Source/Core/VideoBackends/Metal/MTLStateTracker.mm b/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
index f4d5634636..a9fb4e63fb 100644
--- a/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
+++ b/Source/Core/VideoBackends/Metal/MTLStateTracker.mm
@@ -383,11 +383,14 @@ void Metal::StateTracker::EndRenderPass()
void Metal::StateTracker::FlushEncoders()
{
- if (!m_current_render_cmdbuf)
- return;
- EndRenderPass();
- for (int i = 0; i <= static_cast<int>(UploadBuffer::Last); ++i)
- Sync(m_upload_buffers[i]);
+ const bool needs_submit = m_current_render_cmdbuf;
+ if (needs_submit)
+ {
+ EndRenderPass();
+ for (int i = 0; i <= static_cast<int>(UploadBuffer::Last); ++i)
+ Sync(m_upload_buffers[i]);
+ }
+
if (!m_manual_buffer_upload)
{
ASSERT(!m_upload_cmdbuf && "Should never be used!");
@@ -407,6 +410,10 @@ void Metal::StateTracker::FlushEncoders()
m_texture_upload_encoder = nullptr;
m_texture_upload_cmdbuf = nullptr;
}
+
+ if (!needs_submit)
+ return;
+
[m_current_render_cmdbuf
addCompletedHandler:[backref = m_backref, draw = m_current_draw,
q = std::move(m_current_perf_query)](id<MTLCommandBuffer> buf) {