diff options
| author | JMC47 <JMC4789@gmail.com> | 2026-03-03 12:25:16 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-03 12:25:16 -0500 |
| commit | 43def54de2c67450333046d3bee8275d5acaa239 (patch) | |
| tree | 725be2208beb6bde80c9086c02f75a01dbcd6ded | |
| parent | 5c62c90d354817865268b0c3514d347999f6c407 (diff) | |
| parent | 03bcd564c5f185a86e20bccd7534d63b832b2203 (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.mm | 17 |
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) { |
