make a workaround for streamout with no fbo

This commit is contained in:
Samuliak 2024-09-14 22:06:30 +02:00
parent 2961151f25
commit 358567ad4a
4 changed files with 29 additions and 9 deletions

View file

@ -863,7 +863,6 @@ void MetalRenderer::draw_beginSequence()
return; // no render target
}
// TODO: not checking for !streamoutEnable fixes Super Smash Bros. for Wii U, investigate why
if (!hasValidFramebufferAttached && !streamoutEnable)
{
debug_printf("Drawcall with no color buffer or depth buffer attached\n");
@ -1476,10 +1475,6 @@ MTL::RenderCommandEncoder* MetalRenderer::GetRenderCommandEncoder(bool forceRecr
auto commandBuffer = GetCommandBuffer();
// Update state
m_state.m_lastUsedFBO = m_state.m_activeFBO;
m_state.m_isFirstDrawInRenderPass = true;
auto renderCommandEncoder = commandBuffer->renderCommandEncoder(m_state.m_activeFBO->GetRenderPassDescriptor());
#ifdef CEMU_DEBUG_ASSERT
renderCommandEncoder->setLabel(GetLabel("Render command encoder", renderCommandEncoder));
@ -1487,6 +1482,10 @@ MTL::RenderCommandEncoder* MetalRenderer::GetRenderCommandEncoder(bool forceRecr
m_commandEncoder = renderCommandEncoder;
m_encoderType = MetalEncoderType::Render;
// Update state
m_state.m_lastUsedFBO = m_state.m_activeFBO;
m_state.m_isFirstDrawInRenderPass = true;
ResetEncoderState();
// Debug