diff options
author | 2024-02-23 11:04:33 -0800 | |
---|---|---|
committer | 2024-02-26 13:35:34 -0800 | |
commit | ef9fb68e4c42f98b845d655a524aa7b815589b03 (patch) | |
tree | d344a2003f332f1a1f0a4542e6d10a892387fe92 | |
parent | 5ecb69f50945f7becf6469c691bf55ba77d9ac38 (diff) |
GTE frame rate compatibility needs validation
Validate the GTE frame rate compatibility value, otherwise it does not
reach SF.
Bug: 327013543
Test: atest FrameRateUtilsTest
Test: atest CtsSurfaceControlTestsStaging
Change-Id: I3cb7fc7c9cbd32eb8db8e07718a89c3918b72a9f
-rw-r--r-- | libs/gui/FrameRateUtils.cpp | 1 | ||||
-rw-r--r-- | libs/gui/tests/FrameRateUtilsTest.cpp | 2 | ||||
-rw-r--r-- | services/surfaceflinger/Scheduler/RefreshRateSelector.cpp | 1 |
3 files changed, 4 insertions, 0 deletions
diff --git a/libs/gui/FrameRateUtils.cpp b/libs/gui/FrameRateUtils.cpp index 11524e2b51..01aa7ed43c 100644 --- a/libs/gui/FrameRateUtils.cpp +++ b/libs/gui/FrameRateUtils.cpp @@ -42,6 +42,7 @@ bool ValidateFrameRate(float frameRate, int8_t compatibility, int8_t changeFrame if (compatibility != ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT && compatibility != ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_FIXED_SOURCE && + compatibility != ANATIVEWINDOW_FRAME_RATE_GTE && (!privileged || (compatibility != ANATIVEWINDOW_FRAME_RATE_EXACT && compatibility != ANATIVEWINDOW_FRAME_RATE_NO_VOTE))) { diff --git a/libs/gui/tests/FrameRateUtilsTest.cpp b/libs/gui/tests/FrameRateUtilsTest.cpp index 5fe22b05f9..04bfb28f65 100644 --- a/libs/gui/tests/FrameRateUtilsTest.cpp +++ b/libs/gui/tests/FrameRateUtilsTest.cpp @@ -34,6 +34,8 @@ TEST(FrameRateUtilsTest, ValidateFrameRate) { ANATIVEWINDOW_CHANGE_FRAME_RATE_ALWAYS, "")); EXPECT_TRUE(ValidateFrameRate(60.0f, ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_FIXED_SOURCE, ANATIVEWINDOW_CHANGE_FRAME_RATE_ONLY_IF_SEAMLESS, "")); + EXPECT_TRUE(ValidateFrameRate(60.0f, ANATIVEWINDOW_FRAME_RATE_GTE, + ANATIVEWINDOW_CHANGE_FRAME_RATE_ONLY_IF_SEAMLESS, "")); // Privileged APIs. EXPECT_FALSE(ValidateFrameRate(60.0f, ANATIVEWINDOW_FRAME_RATE_EXACT, diff --git a/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp b/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp index e696e8c358..93350b5798 100644 --- a/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp +++ b/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp @@ -972,6 +972,7 @@ auto RefreshRateSelector::getFrameRateOverrides(const std::vector<LayerRequireme LOG_ALWAYS_FATAL_IF(layer->vote != LayerVoteType::ExplicitDefault && layer->vote != LayerVoteType::ExplicitExactOrMultiple && layer->vote != LayerVoteType::ExplicitExact && + layer->vote != LayerVoteType::ExplicitGte && layer->vote != LayerVoteType::ExplicitCategory, "Invalid layer vote type for frame rate overrides"); for (auto& [fps, score] : scoredFrameRates) { |