summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Rodrigo Locatti2019-10-17 19:20:14 -0300
committerGravatar GitHub2019-10-17 19:20:14 -0300
commit7cf091bb209466d3dcf14fc2eca74a81322e522d (patch)
tree024a961a0421bdea20ea92c0b60bb6f51fd3fced /src
parentMerge pull request #2990 from lioncash/warn (diff)
parentapm/controller: Make SetPerformanceConfiguration() use an array of pairs over... (diff)
downloadyuzu-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.cpp50
-rw-r--r--src/core/hle/service/apm/controller.h2
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
10namespace Service::APM { 14namespace Service::APM {
11 15
12constexpr PerformanceConfiguration DEFAULT_PERFORMANCE_CONFIGURATION = 16constexpr auto DEFAULT_PERFORMANCE_CONFIGURATION = PerformanceConfiguration::Config7;
13 PerformanceConfiguration::Config7;
14 17
15Controller::Controller(Core::Timing::CoreTiming& core_timing) 18Controller::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
23void Controller::SetPerformanceConfiguration(PerformanceMode mode, 26void 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
51PerformanceMode Controller::GetCurrentPerformanceMode() { 71PerformanceMode 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
62private: 62private: