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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user