SF: fix a bug when render frame rate range is lower then supported

Ideally DisplayManager should know what is the min supported frame rate
that SF allows, and send the policy accordingly. This is a more elaborate
fix that will be coming as part of b/292105422. For now we fix it in SF
by just ignoring the render frame rate when we can't find any frame rate
that is allowed by the policy.

Bug: 292047939
Bug: 291172084
Test: atest android.graphics.cts.FrameRateOverrideTest
Change-Id: Id053a07eec2525ecbe1156ad46f649956a06a03b
Merged-In: Id053a07eec2525ecbe1156ad46f649956a06a03b
(cherry picked from commit 41bf7c63078d8fce42ff2484359e859c89b56d6d)
diff --git a/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp b/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp
index f136e9f..b531972 100644
--- a/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp
+++ b/services/surfaceflinger/Scheduler/RefreshRateSelector.cpp
@@ -1221,10 +1221,19 @@
                     (supportsFrameRateOverride() || ranges.render.includes(mode.getFps()));
         };
 
-        const auto frameRateModes = createFrameRateModes(filterModes, ranges.render);
+        auto frameRateModes = createFrameRateModes(filterModes, ranges.render);
+        if (frameRateModes.empty()) {
+            ALOGW("No matching frame rate modes for %s range. policy: %s", rangeName,
+                  policy->toString().c_str());
+            // TODO(b/292105422): Ideally DisplayManager should not send render ranges smaller than
+            // the min supported. See b/292047939.
+            //  For not we just ignore the render ranges.
+            frameRateModes = createFrameRateModes(filterModes, {});
+        }
         LOG_ALWAYS_FATAL_IF(frameRateModes.empty(),
-                            "No matching frame rate modes for %s range. policy: %s", rangeName,
-                            policy->toString().c_str());
+                            "No matching frame rate modes for %s range even after ignoring the "
+                            "render range. policy: %s",
+                            rangeName, policy->toString().c_str());
 
         const auto stringifyModes = [&] {
             std::string str;