diff options
| author | 2019-10-17 19:20:14 -0300 | |
|---|---|---|
| committer | 2019-10-17 19:20:14 -0300 | |
| commit | 7cf091bb209466d3dcf14fc2eca74a81322e522d (patch) | |
| tree | 024a961a0421bdea20ea92c0b60bb6f51fd3fced /src | |
| parent | Merge pull request #2990 from lioncash/warn (diff) | |
| parent | apm/controller: Make SetPerformanceConfiguration() use an array of pairs over... (diff) | |
| download | yuzu-7cf091bb209466d3dcf14fc2eca74a81322e522d.tar.gz yuzu-7cf091bb209466d3dcf14fc2eca74a81322e522d.tar.xz yuzu-7cf091bb209466d3dcf14fc2eca74a81322e522d.zip | |
Merge pull request #2989 from lioncash/apm
service/apm/controller: Minor interface changes
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/apm/controller.cpp | 50 | ||||
| -rw-r--r-- | src/core/hle/service/apm/controller.h | 2 |
2 files changed, 36 insertions, 16 deletions
diff --git a/src/core/hle/service/apm/controller.cpp b/src/core/hle/service/apm/controller.cpp index 073d0f6fa..25a886238 100644 --- a/src/core/hle/service/apm/controller.cpp +++ b/src/core/hle/service/apm/controller.cpp | |||
| @@ -2,6 +2,10 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <algorithm> | ||
| 6 | #include <array> | ||
| 7 | #include <utility> | ||
| 8 | |||
| 5 | #include "common/logging/log.h" | 9 | #include "common/logging/log.h" |
| 6 | #include "core/core_timing.h" | 10 | #include "core/core_timing.h" |
| 7 | #include "core/hle/service/apm/controller.h" | 11 | #include "core/hle/service/apm/controller.h" |
| @@ -9,8 +13,7 @@ | |||
| 9 | 13 | ||
| 10 | namespace Service::APM { | 14 | namespace Service::APM { |
| 11 | 15 | ||
| 12 | constexpr PerformanceConfiguration DEFAULT_PERFORMANCE_CONFIGURATION = | 16 | constexpr auto DEFAULT_PERFORMANCE_CONFIGURATION = PerformanceConfiguration::Config7; |
| 13 | PerformanceConfiguration::Config7; | ||
| 14 | 17 | ||
| 15 | Controller::Controller(Core::Timing::CoreTiming& core_timing) | 18 | Controller::Controller(Core::Timing::CoreTiming& core_timing) |
| 16 | : core_timing{core_timing}, configs{ | 19 | : core_timing{core_timing}, configs{ |
| @@ -22,18 +25,35 @@ Controller::~Controller() = default; | |||
| 22 | 25 | ||
| 23 | void Controller::SetPerformanceConfiguration(PerformanceMode mode, | 26 | void Controller::SetPerformanceConfiguration(PerformanceMode mode, |
| 24 | PerformanceConfiguration config) { | 27 | PerformanceConfiguration config) { |
| 25 | static const std::map<PerformanceConfiguration, u32> PCONFIG_TO_SPEED_MAP{ | 28 | static constexpr std::array<std::pair<PerformanceConfiguration, u32>, 16> config_to_speed{{ |
| 26 | {PerformanceConfiguration::Config1, 1020}, {PerformanceConfiguration::Config2, 1020}, | 29 | {PerformanceConfiguration::Config1, 1020}, |
| 27 | {PerformanceConfiguration::Config3, 1224}, {PerformanceConfiguration::Config4, 1020}, | 30 | {PerformanceConfiguration::Config2, 1020}, |
| 28 | {PerformanceConfiguration::Config5, 1020}, {PerformanceConfiguration::Config6, 1224}, | 31 | {PerformanceConfiguration::Config3, 1224}, |
| 29 | {PerformanceConfiguration::Config7, 1020}, {PerformanceConfiguration::Config8, 1020}, | 32 | {PerformanceConfiguration::Config4, 1020}, |
| 30 | {PerformanceConfiguration::Config9, 1020}, {PerformanceConfiguration::Config10, 1020}, | 33 | {PerformanceConfiguration::Config5, 1020}, |
| 31 | {PerformanceConfiguration::Config11, 1020}, {PerformanceConfiguration::Config12, 1020}, | 34 | {PerformanceConfiguration::Config6, 1224}, |
| 32 | {PerformanceConfiguration::Config13, 1785}, {PerformanceConfiguration::Config14, 1785}, | 35 | {PerformanceConfiguration::Config7, 1020}, |
| 33 | {PerformanceConfiguration::Config15, 1020}, {PerformanceConfiguration::Config16, 1020}, | 36 | {PerformanceConfiguration::Config8, 1020}, |
| 34 | }; | 37 | {PerformanceConfiguration::Config9, 1020}, |
| 35 | 38 | {PerformanceConfiguration::Config10, 1020}, | |
| 36 | SetClockSpeed(PCONFIG_TO_SPEED_MAP.find(config)->second); | 39 | {PerformanceConfiguration::Config11, 1020}, |
| 40 | {PerformanceConfiguration::Config12, 1020}, | ||
| 41 | {PerformanceConfiguration::Config13, 1785}, | ||
| 42 | {PerformanceConfiguration::Config14, 1785}, | ||
| 43 | {PerformanceConfiguration::Config15, 1020}, | ||
| 44 | {PerformanceConfiguration::Config16, 1020}, | ||
| 45 | }}; | ||
| 46 | |||
| 47 | const auto iter = std::find_if(config_to_speed.cbegin(), config_to_speed.cend(), | ||
| 48 | [config](const auto& entry) { return entry.first == config; }); | ||
| 49 | |||
| 50 | if (iter == config_to_speed.cend()) { | ||
| 51 | LOG_ERROR(Service_APM, "Invalid performance configuration value provided: {}", | ||
| 52 | static_cast<u32>(config)); | ||
| 53 | return; | ||
| 54 | } | ||
| 55 | |||
| 56 | SetClockSpeed(iter->second); | ||
| 37 | configs.insert_or_assign(mode, config); | 57 | configs.insert_or_assign(mode, config); |
| 38 | } | 58 | } |
| 39 | 59 | ||
| @@ -48,7 +68,7 @@ void Controller::SetFromCpuBoostMode(CpuBoostMode mode) { | |||
| 48 | BOOST_MODE_TO_CONFIG_MAP.at(static_cast<u32>(mode))); | 68 | BOOST_MODE_TO_CONFIG_MAP.at(static_cast<u32>(mode))); |
| 49 | } | 69 | } |
| 50 | 70 | ||
| 51 | PerformanceMode Controller::GetCurrentPerformanceMode() { | 71 | PerformanceMode Controller::GetCurrentPerformanceMode() const { |
| 52 | return Settings::values.use_docked_mode ? PerformanceMode::Docked : PerformanceMode::Handheld; | 72 | return Settings::values.use_docked_mode ? PerformanceMode::Docked : PerformanceMode::Handheld; |
| 53 | } | 73 | } |
| 54 | 74 | ||
diff --git a/src/core/hle/service/apm/controller.h b/src/core/hle/service/apm/controller.h index 454caa6eb..af0c4cd34 100644 --- a/src/core/hle/service/apm/controller.h +++ b/src/core/hle/service/apm/controller.h | |||
| @@ -56,7 +56,7 @@ public: | |||
| 56 | void SetPerformanceConfiguration(PerformanceMode mode, PerformanceConfiguration config); | 56 | void SetPerformanceConfiguration(PerformanceMode mode, PerformanceConfiguration config); |
| 57 | void SetFromCpuBoostMode(CpuBoostMode mode); | 57 | void SetFromCpuBoostMode(CpuBoostMode mode); |
| 58 | 58 | ||
| 59 | PerformanceMode GetCurrentPerformanceMode(); | 59 | PerformanceMode GetCurrentPerformanceMode() const; |
| 60 | PerformanceConfiguration GetCurrentPerformanceConfiguration(PerformanceMode mode); | 60 | PerformanceConfiguration GetCurrentPerformanceConfiguration(PerformanceMode mode); |
| 61 | 61 | ||
| 62 | private: | 62 | private: |