[Chore] (MG_Backend/DirectVulkan): hard assert instead of silently fallback

This commit is contained in:
2026-02-22 12:08:31 +08:00
parent dae3dd9996
commit e9fee1358d
3 changed files with 23 additions and 27 deletions
@@ -480,8 +480,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
return false; return false;
} }
if (m_framebufferManager && if (m_framebufferManager->Transition(commandBuffer,
m_framebufferManager->Transition(commandBuffer,
VkFramebufferManager::TransitionResource::OffscreenColorTexture, VkFramebufferManager::TransitionResource::OffscreenColorTexture,
VkFramebufferManager::TransitionUsage::ShaderRead, VkFramebufferManager::TransitionUsage::ShaderRead,
texture->GetExternalIndex())) { texture->GetExternalIndex())) {
@@ -90,9 +90,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
Bool VkTextureSamplerManager::SyncTextureAndGetDescriptor(const MG_State::GLState::ITextureObject& texture, Bool VkTextureSamplerManager::SyncTextureAndGetDescriptor(const MG_State::GLState::ITextureObject& texture,
const MG_State::GLState::SamplerObject* samplerOverride, const MG_State::GLState::SamplerObject* samplerOverride,
VkDescriptorImageInfo& outImageInfo) { VkDescriptorImageInfo& outImageInfo) {
if (m_device == VK_NULL_HANDLE) { MOBILEGL_ASSERT(m_device != VK_NULL_HANDLE, "SyncTextureAndGetDescriptor: m_device == VK_NULL_HANDLE");
return GetFallbackDescriptor(outImageInfo);
}
auto it = m_textureResources.find(texture.GetExternalIndex()); auto it = m_textureResources.find(texture.GetExternalIndex());
if (it == m_textureResources.end()) { if (it == m_textureResources.end()) {
@@ -160,7 +160,6 @@ namespace MobileGL::MG_Backend::DirectVulkan {
payload.renderPass = (m_activeRenderPass != VK_NULL_HANDLE) ? m_activeRenderPass : GetDefaultLoadRenderPass(); payload.renderPass = (m_activeRenderPass != VK_NULL_HANDLE) ? m_activeRenderPass : GetDefaultLoadRenderPass();
payload.subpass = 0; payload.subpass = 0;
payload.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; payload.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
if (MG_State::pGLContext != nullptr) {
const Bool depthTestEnabled = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::DepthTest); const Bool depthTestEnabled = MG_State::pGLContext->IsCapabilityEnabled(CapabilityInput::DepthTest);
payload.depthTestEnable = depthTestEnabled; payload.depthTestEnable = depthTestEnabled;
payload.depthWriteEnable = depthTestEnabled && MG_State::pGLContext->GetDepthMask(); payload.depthWriteEnable = depthTestEnabled && MG_State::pGLContext->GetDepthMask();
@@ -183,7 +182,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
if (colorMask.y()) payload.colorWriteMask |= VK_COLOR_COMPONENT_G_BIT; if (colorMask.y()) payload.colorWriteMask |= VK_COLOR_COMPONENT_G_BIT;
if (colorMask.z()) payload.colorWriteMask |= VK_COLOR_COMPONENT_B_BIT; if (colorMask.z()) payload.colorWriteMask |= VK_COLOR_COMPONENT_B_BIT;
if (colorMask.w()) payload.colorWriteMask |= VK_COLOR_COMPONENT_A_BIT; if (colorMask.w()) payload.colorWriteMask |= VK_COLOR_COMPONENT_A_BIT;
}
payload.stages = &stages; payload.stages = &stages;
payload.vertexInputState = &vertexInputState; payload.vertexInputState = &vertexInputState;
return m_pipelineFactory->GetOrCreatePipeline(payload); return m_pipelineFactory->GetOrCreatePipeline(payload);