diff --git a/fml/cpu_affinity.cc b/fml/cpu_affinity.cc index ccb2e89686581..0342c85f0433e 100644 --- a/fml/cpu_affinity.cc +++ b/fml/cpu_affinity.cc @@ -58,6 +58,8 @@ CPUSpeedTracker::CPUSpeedTracker(std::vector data) } if (data.speed == min_speed_value) { efficiency_.push_back(data.index); + } else { + not_efficiency_.push_back(data.index); } } @@ -77,6 +79,8 @@ const std::vector& CPUSpeedTracker::GetIndices( return efficiency_; case CpuAffinity::kNotPerformance: return not_performance_; + case CpuAffinity::kNotEfficiency: + return not_efficiency_; } } diff --git a/fml/cpu_affinity.h b/fml/cpu_affinity.h index b4c54c7bbf187..c1d8498e6524a 100644 --- a/fml/cpu_affinity.h +++ b/fml/cpu_affinity.h @@ -26,6 +26,9 @@ enum class CpuAffinity { /// @brief Request affinity for all non-performance cores. kNotPerformance, + + /// @brief Request affinity for all non-efficiency cores. + kNotEfficiency, }; /// @brief Request count of efficiency cores. @@ -79,6 +82,7 @@ class CPUSpeedTracker { std::vector efficiency_; std::vector performance_; std::vector not_performance_; + std::vector not_efficiency_; }; /// @note Visible for testing. diff --git a/fml/cpu_affinity_unittests.cc b/fml/cpu_affinity_unittests.cc index 8a5c90687ed24..142fc84612c29 100644 --- a/fml/cpu_affinity_unittests.cc +++ b/fml/cpu_affinity_unittests.cc @@ -29,6 +29,9 @@ TEST(CpuAffinity, NormalSlowMedFastCores) { ASSERT_EQ(tracker.GetIndices(CpuAffinity::kNotPerformance).size(), 2u); ASSERT_EQ(tracker.GetIndices(CpuAffinity::kNotPerformance)[0], 0u); ASSERT_EQ(tracker.GetIndices(CpuAffinity::kNotPerformance)[1], 1u); + ASSERT_EQ(tracker.GetIndices(CpuAffinity::kNotEfficiency).size(), 2u); + ASSERT_EQ(tracker.GetIndices(CpuAffinity::kNotEfficiency)[0], 1u); + ASSERT_EQ(tracker.GetIndices(CpuAffinity::kNotEfficiency)[1], 2u); } TEST(CpuAffinity, NoCpuData) { diff --git a/shell/platform/android/android_shell_holder.cc b/shell/platform/android/android_shell_holder.cc index 3f425b73a62d5..1ac761e34702b 100644 --- a/shell/platform/android/android_shell_holder.cc +++ b/shell/platform/android/android_shell_holder.cc @@ -49,14 +49,14 @@ static void AndroidPlatformThreadConfigSetter( break; } case fml::Thread::ThreadPriority::kDisplay: { - fml::RequestAffinity(fml::CpuAffinity::kPerformance); + fml::RequestAffinity(fml::CpuAffinity::kNotEfficiency); if (::setpriority(PRIO_PROCESS, 0, -1) != 0) { FML_LOG(ERROR) << "Failed to set UI task runner priority"; } break; } case fml::Thread::ThreadPriority::kRaster: { - fml::RequestAffinity(fml::CpuAffinity::kPerformance); + fml::RequestAffinity(fml::CpuAffinity::kNotEfficiency); // Android describes -8 as "most important display threads, for // compositing the screen and retrieving input events". Conservatively // set the raster thread to slightly lower priority than it.