mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-09 20:58:31 +09:00
[Chore] (MG_Backend/DirectVulkan): use vkCmdClearAttachments to implement clear semantics when there's one compatible render pass in flight (instead of interrupting it)
This commit is contained in:
@@ -514,11 +514,16 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
auto& renderPassEntry = m_renderPassManager->GetOrCreateRenderPass(*drawFbo, m_imageIndexAcquired);
|
||||
auto* activeRenderPass = VkRenderPassManager::GetActiveRenderPass();
|
||||
if (activeRenderPass != &renderPassEntry) {
|
||||
if (activeRenderPass) {
|
||||
VkRenderPassManager::EndRenderPass(frame.commandBuffer);
|
||||
if (activeRenderPass &&
|
||||
VkRenderPassManager::TryClearPendingAttachmentsOnActiveRenderPass(frame.commandBuffer, renderPassEntry)) {
|
||||
// Keep the current compatible render pass open and clear inside it.
|
||||
} else {
|
||||
if (activeRenderPass) {
|
||||
VkRenderPassManager::EndRenderPass(frame.commandBuffer);
|
||||
}
|
||||
Bool ok = VkRenderPassManager::BeginRenderPass(frame.commandBuffer, renderPassEntry);
|
||||
MOBILEGL_ASSERT(ok, "%s: BeginRenderPass failed", __func__);
|
||||
}
|
||||
Bool ok = VkRenderPassManager::BeginRenderPass(frame.commandBuffer, renderPassEntry);
|
||||
MOBILEGL_ASSERT(ok, "%s: BeginRenderPass failed", __func__);
|
||||
} else {
|
||||
// We probably already have one compatible render pass running. Keep going.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user