[Chore] (MG_Backend/DirectVulkan): get rid of redundant guardrails

This commit is contained in:
2026-02-22 10:19:44 +08:00
parent fb3e2123cc
commit 96e993eecf
@@ -222,23 +222,20 @@ namespace MobileGL::MG_Backend::DirectVulkan {
m_pipelineFactory = MakeUnique<PipelineFactory>(m_device, m_config); m_pipelineFactory = MakeUnique<PipelineFactory>(m_device, m_config);
m_programFactory = MakeUnique<ProgramFactory>(m_device, m_config); m_programFactory = MakeUnique<ProgramFactory>(m_device, m_config);
m_textureSamplerManager = MakeUnique<VkTextureSamplerManager>(); m_textureSamplerManager = MakeUnique<VkTextureSamplerManager>();
if (!m_textureSamplerManager->Initialize({m_device, m_physicalDevice.handle, m_commandPool, m_graphicsQueue})) { auto succeeded = false;
MGLOG_E("VkTextureSamplerManager initialization failed. Sampler/texture descriptors will fallback."); succeeded = m_textureSamplerManager->Initialize({m_device, m_physicalDevice.handle, m_commandPool, m_graphicsQueue});
m_textureSamplerManager.reset(); MOBILEGL_ASSERT(succeeded, "VkTextureSamplerManager initialization failed.");
}
m_framebufferManager = MakeUnique<VkFramebufferManager>(); m_framebufferManager = MakeUnique<VkFramebufferManager>();
if (!m_framebufferManager->Initialize({m_device, m_physicalDevice.handle})) { succeeded = m_framebufferManager->Initialize({m_device, m_physicalDevice.handle});
MGLOG_E("VkFramebufferManager initialization failed. Offscreen FBO clear path is disabled."); MOBILEGL_ASSERT(succeeded, "VkFramebufferManager initialization failed.");
m_framebufferManager.reset();
}
m_uniformDescriptorBinder = MakeUnique<UniformDescriptorBinder>(); m_uniformDescriptorBinder = MakeUnique<UniformDescriptorBinder>();
if (!m_uniformDescriptorBinder->Initialize(m_device, m_allocator, succeeded = m_uniformDescriptorBinder->Initialize(m_device, m_allocator,
m_physicalDevice.properties.limits.minUniformBufferOffsetAlignment, m_physicalDevice.properties.limits.minUniformBufferOffsetAlignment,
m_config.MaxFramesInFlight, 16, 64, 4 * 1024 * 1024, m_config.MaxFramesInFlight, 16, 64, 4 * 1024 * 1024,
m_textureSamplerManager.get(), m_framebufferManager.get())) { m_textureSamplerManager.get(), m_framebufferManager.get());
MGLOG_E("UniformDescriptorBinder initialization failed. UBO sync on Vulkan backend is disabled."); MOBILEGL_ASSERT(succeeded, "UniformDescriptorBinder initialization failed.");
m_uniformDescriptorBinder.reset();
}
m_vertexInputStateFactory = MakeUnique<VertexInputStateFactory>(m_config); m_vertexInputStateFactory = MakeUnique<VertexInputStateFactory>(m_config);
PrepareDemoPipeline(); PrepareDemoPipeline();
@@ -482,7 +479,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
VkCommandBuffer& commandBuffer = *commandBufferPtr; VkCommandBuffer& commandBuffer = *commandBufferPtr;
if (!drawTargetsDefault) { if (!drawTargetsDefault) {
if (!m_framebufferManager || !m_renderPassManager || !drawFbo) { if (!drawFbo) {
MGLOG_D("EnsureFrameRecordingStarted skipped: offscreen draw target is unavailable"); MGLOG_D("EnsureFrameRecordingStarted skipped: offscreen draw target is unavailable");
return; return;
} }
@@ -1242,14 +1239,8 @@ namespace MobileGL::MG_Backend::DirectVulkan {
m_activeDrawFboExternalIndex = 0; m_activeDrawFboExternalIndex = 0;
} }
if (!m_framebufferManager && (!readIsDefaultFramebuffer || !drawIsDefaultFramebuffer)) { MOBILEGL_ASSERT(m_framebufferManager != nullptr, "BlitFramebuffer: framebuffer manager not available");
MGLOG_W("BlitFramebuffer skipped: offscreen framebuffer manager not available"); MOBILEGL_ASSERT(m_renderPassManager != nullptr, "BlitFramebuffer: renderpass manager is null");
return false;
}
if (!m_renderPassManager) {
MGLOG_W("BlitFramebuffer skipped: render pass manager not available");
return false;
}
auto consumePendingClearForTarget = [&](Bool targetIsDefault, Uint targetFboExternalIndex) { auto consumePendingClearForTarget = [&](Bool targetIsDefault, Uint targetFboExternalIndex) {
const Uint64 pendingKey = BuildPendingClearKey(targetFboExternalIndex, targetIsDefault); const Uint64 pendingKey = BuildPendingClearKey(targetFboExternalIndex, targetIsDefault);
@@ -1275,7 +1266,6 @@ namespace MobileGL::MG_Backend::DirectVulkan {
if (!GetDefaultRenderTargetForCurrentImage(renderPass, framebuffer, extent, depthStencilFormat)) { if (!GetDefaultRenderTargetForCurrentImage(renderPass, framebuffer, extent, depthStencilFormat)) {
return; return;
} }
MOBILEGL_ASSERT(m_renderPassManager != nullptr, "BlitFramebuffer: manager is null");
m_renderPassManager->BeginRenderPass(commandBuffer, renderPass, framebuffer, extent); m_renderPassManager->BeginRenderPass(commandBuffer, renderPass, framebuffer, extent);
m_activeRenderExtent = extent; m_activeRenderExtent = extent;
@@ -1589,9 +1579,6 @@ namespace MobileGL::MG_Backend::DirectVulkan {
dstDepthExtent = m_swapchainObject.GetExtent(); dstDepthExtent = m_swapchainObject.GetExtent();
dstDepthFormat = m_depthStencilFormat; dstDepthFormat = m_depthStencilFormat;
} }
} else if (m_framebufferManager) {
if (!MG_State::pGLContext) {
MGLOG_W("BlitFramebuffer: GL context unavailable for draw depth/stencil FBO");
} else { } else {
const auto drawFbo = MG_State::pGLContext->GetFramebufferObject(drawFboExternalIndex); const auto drawFbo = MG_State::pGLContext->GetFramebufferObject(drawFboExternalIndex);
if (!drawFbo) { if (!drawFbo) {
@@ -1604,7 +1591,6 @@ namespace MobileGL::MG_Backend::DirectVulkan {
MGLOG_W("BlitFramebuffer: draw FBO %u has no depth/stencil image", drawFboExternalIndex); MGLOG_W("BlitFramebuffer: draw FBO %u has no depth/stencil image", drawFboExternalIndex);
} }
} }
}
if (srcDepthImage != VK_NULL_HANDLE && dstDepthImage != VK_NULL_HANDLE) { if (srcDepthImage != VK_NULL_HANDLE && dstDepthImage != VK_NULL_HANDLE) {
if (srcDepthFormat != dstDepthFormat) { if (srcDepthFormat != dstDepthFormat) {