Merge pull request #14435 from Simonx22/fix/metal-early-stop-shutdown

Metal: Always run endEncoding on command encoders
This commit is contained in:
JMC47
2026-03-03 12:25:16 -05:00
committed by GitHub

View File

@@ -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) {