From 1ea8d1602741d22f73d3b39c5c78eed86897da04 Mon Sep 17 00:00:00 2001 From: Christophe Date: Fri, 26 Apr 2024 12:49:12 +0200 Subject: [PATCH] vkconfig: Fix disabled mode display on start Change-Id: I2e7f43128691917eeb55b820385a7d91f7bce6a5 --- vkconfig/mainwindow.cpp | 8 +++---- vkconfig/vulkan_util.cpp | 32 +++++++++++++++---------- vkconfig_core/configuration_manager.cpp | 21 ++++++++++++---- 3 files changed, 38 insertions(+), 23 deletions(-) diff --git a/vkconfig/mainwindow.cpp b/vkconfig/mainwindow.cpp index 212ae7316d..f07930ec15 100644 --- a/vkconfig/mainwindow.cpp +++ b/vkconfig/mainwindow.cpp @@ -143,10 +143,7 @@ MainWindow::MainWindow(QWidget *parent) ui->log_browser->document()->setMaximumBlockCount(2048); ui->configuration_tree->scrollToItem(ui->configuration_tree->topLevelItem(0), QAbstractItemView::PositionAtTop); - const std::string configuration_name = environment.Get(ACTIVE_CONFIGURATION); - if (!configuration_name.empty()) { - configurator.configurations.SetActiveConfiguration(configurator.layers.available_layers, configuration_name); - } + configurator.configurations.RefreshConfiguration(configurator.layers.available_layers); this->InitTray(); this->UpdateTray(); @@ -508,7 +505,8 @@ void MainWindow::OnComboBoxModeChanged(int index) { configurator.environment.SetMode(static_cast(ui->combo_box_layers_controlled->currentIndex())); configurator.configurations.RefreshConfiguration(configurator.layers.available_layers); - UpdateUI(); + this->UpdateUI(); + this->UpdateStatus(); } // We want to apply to just the app list... hang on there. Doe we have the new loader? diff --git a/vkconfig/vulkan_util.cpp b/vkconfig/vulkan_util.cpp index b86be01edb..eda100cada 100644 --- a/vkconfig/vulkan_util.cpp +++ b/vkconfig/vulkan_util.cpp @@ -150,14 +150,22 @@ VkResult CreateInstance(QLibrary &library, VkInstance &instance, bool enumerate_ std::string GenerateVulkanStatus() { std::string log; - const Configurator &configurator = Configurator::Get(); + Configurator &configurator = Configurator::Get(); // Layers override configuration - if (configurator.configurations.HasActiveConfiguration(configurator.layers.available_layers)) { - log += - format("- Layers override: \"%s\" configuration\n", configurator.configurations.GetActiveConfiguration()->key.c_str()); - } else { - log += "- Layers override: None\n"; + switch (configurator.environment.GetMode()) { + default: + case LAYERS_MODE_BY_APPLICATIONS: + log += "- Vulkan Layers Controlled by Vulkan Applications\n"; + break; + case LAYERS_MODE_BY_CONFIGURATOR_RUNNING: + if (configurator.configurations.HasActiveConfiguration(configurator.layers.available_layers)) + log += format("- Vulkan Layers Controlled by Vulkan Configurator using \"%s\" configuration\n", + configurator.environment.Get(ACTIVE_CONFIGURATION).c_str()); + break; + case LAYERS_MODE_BY_CONFIGURATOR_ALL_DISABLED: + log += "- Vulkan Layers Disabled by Vulkan Configurator\n"; + break; } // Check Vulkan SDK path @@ -212,10 +220,9 @@ std::string GenerateVulkanStatus() { return log; } - Configuration *active_configuration = configurator.configurations.GetActiveConfiguration(); - if (configurator.configurations.HasActiveConfiguration(configurator.layers.available_layers)) { - SurrenderConfiguration(configurator.environment); - } + LayersMode saved_mode = configurator.environment.GetMode(); + configurator.environment.SetMode(LAYERS_MODE_BY_APPLICATIONS); + configurator.configurations.RefreshConfiguration(configurator.layers.available_layers); QLibrary library(GetVulkanLibrary()); PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = @@ -353,9 +360,8 @@ std::string GenerateVulkanStatus() { vkDestroyInstance(inst, NULL); - if (active_configuration != nullptr) { - OverrideConfiguration(configurator.environment, configurator.layers.available_layers, *active_configuration); - } + configurator.environment.SetMode(saved_mode); + configurator.configurations.RefreshConfiguration(configurator.layers.available_layers); return log; } diff --git a/vkconfig_core/configuration_manager.cpp b/vkconfig_core/configuration_manager.cpp index e83d68d3fe..acef32b399 100644 --- a/vkconfig_core/configuration_manager.cpp +++ b/vkconfig_core/configuration_manager.cpp @@ -277,11 +277,22 @@ void ConfigurationManager::RefreshConfiguration(const std::vector &availa } bool ConfigurationManager::HasActiveConfiguration(const std::vector &available_layers) const { - std::string missing_layer; - if (this->active_configuration != nullptr) - return !HasMissingLayer(this->active_configuration->parameters, available_layers, missing_layer); - else - return false; + switch (environment.GetMode()) { + case LAYERS_MODE_BY_APPLICATIONS: + return false; + case LAYERS_MODE_BY_CONFIGURATOR_RUNNING: { + if (this->active_configuration != nullptr) { + std::string missing_layer; + return !HasMissingLayer(this->active_configuration->parameters, available_layers, missing_layer); + } else { + return false; + } + } + case LAYERS_MODE_BY_CONFIGURATOR_ALL_DISABLED: + return true; + } + + return false; } void ConfigurationManager::ImportConfiguration(const std::vector &available_layers, const std::string &full_import_path) {