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.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.SetScissor(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) });
builder.SetViewport(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.BindVertexBuffer(0, *fullscreenVertexBuffer);
builder.Draw(3); builder.Draw(3);
} }
builder.EndRenderPass(); builder.EndDebugRegion();
} }
builder.EndDebugRegion(); builder.EndRenderPass();
}, Nz::QueueType::Graphics); }, Nz::QueueType::Graphics);
frame.Present(); 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.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()) if (!passData.name.empty())
builder.BeginDebugRegion(passData.name, Nz::Color::Green); builder.BeginDebugRegion(passData.name, Nz::Color::Green);
builder.BeginRenderPass(*passData.framebuffer, *passData.renderPass, passData.renderRect);
bool first = true; bool first = true;
for (auto& subpass : passData.subpasses) for (auto& subpass : passData.subpasses)
{ {
@ -78,10 +78,10 @@ namespace Nz
subpass.commandCallback(builder, passData.renderRect); subpass.commandCallback(builder, passData.renderRect);
} }
builder.EndRenderPass();
if (!passData.name.empty()) if (!passData.name.empty())
builder.EndDebugRegion(); builder.EndDebugRegion();
builder.EndRenderPass();
}); });
passData.forceCommandBufferRegeneration = false; passData.forceCommandBufferRegeneration = false;

View File

@ -348,9 +348,9 @@ namespace Nz
clearValues[1].depth = 1.f; clearValues[1].depth = 1.f;
clearValues[1].stencil = 0; 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.SetScissor(renderRegion);
builder.SetViewport(renderRegion); builder.SetViewport(renderRegion);
@ -361,9 +361,9 @@ namespace Nz
builder.Draw(3); builder.Draw(3);
} }
builder.EndRenderPass(); builder.EndDebugRegion();
} }
builder.EndDebugRegion(); builder.EndRenderPass();
}, QueueType::Graphics); }, QueueType::Graphics);
} }