Graphics: Use debug regions inside render pass to fix an issue with OpenGL context switch

This commit is contained in:
Jérôme Leclercq 2021-09-23 17:49:15 +02:00
parent aa2021dc49
commit 3ad05614f9
3 changed files with 12 additions and 12 deletions

View File

@ -1114,9 +1114,9 @@ int main()
builder.TextureBarrier(Nz::PipelineStage::ColorOutput, Nz::PipelineStage::FragmentShader, Nz::MemoryAccess::ColorWrite, Nz::MemoryAccess::ShaderRead, Nz::TextureLayout::ColorOutput, Nz::TextureLayout::ColorInput, *bakedGraph.GetAttachmentTexture(backbuffer));
builder.BeginDebugRegion("Main window rendering", Nz::Color::Green);
builder.BeginRenderPass(windowRT->GetFramebuffer(frame.GetFramebufferIndex()), windowRT->GetRenderPass(), windowRenderRect);
{
builder.BeginRenderPass(windowRT->GetFramebuffer(frame.GetFramebufferIndex()), windowRT->GetRenderPass(), windowRenderRect);
builder.BeginDebugRegion("Main window rendering", Nz::Color::Green);
{
builder.SetScissor(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) });
builder.SetViewport(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) });
@ -1126,9 +1126,9 @@ int main()
builder.BindVertexBuffer(0, *fullscreenVertexBuffer);
builder.Draw(3);
}
builder.EndRenderPass();
builder.EndDebugRegion();
}
builder.EndDebugRegion();
builder.EndRenderPass();
}, Nz::QueueType::Graphics);
frame.Present();

View File

@ -62,11 +62,11 @@ namespace Nz
builder.TextureBarrier(textureTransition.srcStageMask, textureTransition.dstStageMask, textureTransition.srcAccessMask, textureTransition.dstAccessMask, textureTransition.oldLayout, textureTransition.newLayout, *texture);
}
builder.BeginRenderPass(*passData.framebuffer, *passData.renderPass, passData.renderRect);
if (!passData.name.empty())
builder.BeginDebugRegion(passData.name, Nz::Color::Green);
builder.BeginRenderPass(*passData.framebuffer, *passData.renderPass, passData.renderRect);
bool first = true;
for (auto& subpass : passData.subpasses)
{
@ -78,10 +78,10 @@ namespace Nz
subpass.commandCallback(builder, passData.renderRect);
}
builder.EndRenderPass();
if (!passData.name.empty())
builder.EndDebugRegion();
builder.EndRenderPass();
});
passData.forceCommandBufferRegeneration = false;

View File

@ -348,9 +348,9 @@ namespace Nz
clearValues[1].depth = 1.f;
clearValues[1].stencil = 0;
builder.BeginDebugRegion("Main window rendering", Color::Green);
builder.BeginRenderPass(renderTarget.GetFramebuffer(renderFrame.GetFramebufferIndex()), renderTarget.GetRenderPass(), renderRegion, { clearValues[0], clearValues[1] });
{
builder.BeginRenderPass(renderTarget.GetFramebuffer(renderFrame.GetFramebufferIndex()), renderTarget.GetRenderPass(), renderRegion, { clearValues[0], clearValues[1] });
builder.BeginDebugRegion("Main window rendering", Color::Green);
{
builder.SetScissor(renderRegion);
builder.SetViewport(renderRegion);
@ -361,9 +361,9 @@ namespace Nz
builder.Draw(3);
}
builder.EndRenderPass();
builder.EndDebugRegion();
}
builder.EndDebugRegion();
builder.EndRenderPass();
}, QueueType::Graphics);
}