From 8b8aa945f0b7a641fcec6f62213df3e60f58243e Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Mon, 15 Jun 2026 20:44:40 +0800 Subject: [PATCH] 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. --- app/render/rendermanager.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/render/rendermanager.cpp b/app/render/rendermanager.cpp index 89ea29f6c..1fd9826b2 100644 --- a/app/render/rendermanager.cpp +++ b/app/render/rendermanager.cpp @@ -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();