From 96e993eecf8fbe503d09a7acee29a73cd6b697a8 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Sun, 22 Feb 2026 10:19:44 +0800 Subject: [PATCH] [Chore] (MG_Backend/DirectVulkan): get rid of redundant guardrails --- .../DirectVulkan/Renderer/VulkanRenderer.cpp | 60 +++++++------------ 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp index 4580b684..0e286c62 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp @@ -222,23 +222,20 @@ namespace MobileGL::MG_Backend::DirectVulkan { m_pipelineFactory = MakeUnique(m_device, m_config); m_programFactory = MakeUnique(m_device, m_config); m_textureSamplerManager = MakeUnique(); - if (!m_textureSamplerManager->Initialize({m_device, m_physicalDevice.handle, m_commandPool, m_graphicsQueue})) { - MGLOG_E("VkTextureSamplerManager initialization failed. Sampler/texture descriptors will fallback."); - m_textureSamplerManager.reset(); - } + auto succeeded = false; + succeeded = m_textureSamplerManager->Initialize({m_device, m_physicalDevice.handle, m_commandPool, m_graphicsQueue}); + MOBILEGL_ASSERT(succeeded, "VkTextureSamplerManager initialization failed."); + m_framebufferManager = MakeUnique(); - if (!m_framebufferManager->Initialize({m_device, m_physicalDevice.handle})) { - MGLOG_E("VkFramebufferManager initialization failed. Offscreen FBO clear path is disabled."); - m_framebufferManager.reset(); - } + succeeded = m_framebufferManager->Initialize({m_device, m_physicalDevice.handle}); + MOBILEGL_ASSERT(succeeded, "VkFramebufferManager initialization failed."); + m_uniformDescriptorBinder = MakeUnique(); - if (!m_uniformDescriptorBinder->Initialize(m_device, m_allocator, + succeeded = m_uniformDescriptorBinder->Initialize(m_device, m_allocator, m_physicalDevice.properties.limits.minUniformBufferOffsetAlignment, m_config.MaxFramesInFlight, 16, 64, 4 * 1024 * 1024, - m_textureSamplerManager.get(), m_framebufferManager.get())) { - MGLOG_E("UniformDescriptorBinder initialization failed. UBO sync on Vulkan backend is disabled."); - m_uniformDescriptorBinder.reset(); - } + m_textureSamplerManager.get(), m_framebufferManager.get()); + MOBILEGL_ASSERT(succeeded, "UniformDescriptorBinder initialization failed."); m_vertexInputStateFactory = MakeUnique(m_config); PrepareDemoPipeline(); @@ -482,7 +479,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { VkCommandBuffer& commandBuffer = *commandBufferPtr; if (!drawTargetsDefault) { - if (!m_framebufferManager || !m_renderPassManager || !drawFbo) { + if (!drawFbo) { MGLOG_D("EnsureFrameRecordingStarted skipped: offscreen draw target is unavailable"); return; } @@ -1242,14 +1239,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { m_activeDrawFboExternalIndex = 0; } - if (!m_framebufferManager && (!readIsDefaultFramebuffer || !drawIsDefaultFramebuffer)) { - MGLOG_W("BlitFramebuffer skipped: offscreen framebuffer manager not available"); - return false; - } - if (!m_renderPassManager) { - MGLOG_W("BlitFramebuffer skipped: render pass manager not available"); - return false; - } + MOBILEGL_ASSERT(m_framebufferManager != nullptr, "BlitFramebuffer: framebuffer manager not available"); + MOBILEGL_ASSERT(m_renderPassManager != nullptr, "BlitFramebuffer: renderpass manager is null"); auto consumePendingClearForTarget = [&](Bool targetIsDefault, Uint targetFboExternalIndex) { const Uint64 pendingKey = BuildPendingClearKey(targetFboExternalIndex, targetIsDefault); @@ -1275,7 +1266,6 @@ namespace MobileGL::MG_Backend::DirectVulkan { if (!GetDefaultRenderTargetForCurrentImage(renderPass, framebuffer, extent, depthStencilFormat)) { return; } - MOBILEGL_ASSERT(m_renderPassManager != nullptr, "BlitFramebuffer: manager is null"); m_renderPassManager->BeginRenderPass(commandBuffer, renderPass, framebuffer, extent); m_activeRenderExtent = extent; @@ -1589,20 +1579,16 @@ namespace MobileGL::MG_Backend::DirectVulkan { dstDepthExtent = m_swapchainObject.GetExtent(); dstDepthFormat = m_depthStencilFormat; } - } else if (m_framebufferManager) { - if (!MG_State::pGLContext) { - MGLOG_W("BlitFramebuffer: GL context unavailable for draw depth/stencil FBO"); - } else { - const auto drawFbo = MG_State::pGLContext->GetFramebufferObject(drawFboExternalIndex); - if (!drawFbo) { - MGLOG_W("BlitFramebuffer: draw FBO %u not found", drawFboExternalIndex); - } else if (!m_framebufferManager->EnsureOffscreenColorTarget(drawFboExternalIndex, *drawFbo)) { - MGLOG_W("BlitFramebuffer: failed to materialize draw FBO %u for depth/stencil", - drawFboExternalIndex); - } else if (!m_framebufferManager->GetOffscreenDepthStencilImage(drawFboExternalIndex, dstDepthImage, - dstDepthExtent, dstDepthFormat)) { - MGLOG_W("BlitFramebuffer: draw FBO %u has no depth/stencil image", drawFboExternalIndex); - } + } else { + const auto drawFbo = MG_State::pGLContext->GetFramebufferObject(drawFboExternalIndex); + if (!drawFbo) { + MGLOG_W("BlitFramebuffer: draw FBO %u not found", drawFboExternalIndex); + } else if (!m_framebufferManager->EnsureOffscreenColorTarget(drawFboExternalIndex, *drawFbo)) { + MGLOG_W("BlitFramebuffer: failed to materialize draw FBO %u for depth/stencil", + drawFboExternalIndex); + } else if (!m_framebufferManager->GetOffscreenDepthStencilImage(drawFboExternalIndex, dstDepthImage, + dstDepthExtent, dstDepthFormat)) { + MGLOG_W("BlitFramebuffer: draw FBO %u has no depth/stencil image", drawFboExternalIndex); } }