Sync RenderManager::backend_ after DynamicRenderer fallback

DynamicRenderer::Load() can internally fall back from Vulkan to
OpenGL when the Vulkan library is missing or is_available() fails.
Previously RenderManager::backend_ stayed at kVulkan, so callers
asking RenderManager::backend() got the wrong answer. After a
successful dynamic load, sync backend_ from
DynamicRenderer::backend_name() and log any fallback.

ctest still passes 4/4 in build-default-on.
This commit is contained in:
2026-07-13 10:19:29 +08:00
parent b4e39e5bcd
commit 8b8aa945f0
+9
View File
@@ -102,6 +102,15 @@ RenderManager::RenderManager(QObject *parent)
context_ = new OpenGLRenderer();
} else {
context_ = dynamic_renderer;
// DynamicRenderer may internally fall back (e.g. Vulkan -> OpenGL).
// Synchronize RenderManager's view of the actual runtime backend.
Backend actual_backend = BackendFromString(dynamic_renderer->backend_name());
if (actual_backend != backend_) {
qWarning() << "Dynamic render backend fell back from"
<< BackendToString(backend_) << "to"
<< BackendToString(actual_backend);
backend_ = actual_backend;
}
}
#else
context_ = new OpenGLRenderer();