Further qualify low end graphics optimizations
These can result in visual artifacts, so we should only
apply them where the memory impact is worth the
tradeoff.
Bug: 974241
Change-Id: I771f0e919956eb3f677623989d7ac23bbb0ecc0e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1659940
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Eric Karl <[email protected]>
Commit-Queue: Ian Vollick <[email protected]>
Cr-Commit-Position: refs/heads/master@{#669338}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 73feffe..04575de 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -180,6 +180,18 @@
static const char* kOOPIF = "OOPIF";
static const char* kRenderer = "Renderer";
+#if defined(OS_ANDROID)
+// With 32 bit pixels, this would mean less than 400kb per buffer. Much less
+// than required for, say, nHD.
+static const int kSmallScreenPixelThreshold = 1e5;
+bool IsSmallScreen(const gfx::Size& size) {
+ int area = 0;
+ if (!size.GetCheckedArea().AssignIfValid(&area))
+ return false;
+ return area < kSmallScreenPixelThreshold;
+}
+#endif
+
class WebWidgetLockTarget : public content::MouseLockDispatcher::LockTarget {
public:
explicit WebWidgetLockTarget(blink::WebWidget* webwidget)
@@ -3019,7 +3031,8 @@
#if defined(OS_ANDROID)
bool using_synchronous_compositor =
compositor_deps->UsingSynchronousCompositing();
- bool using_low_memory_policy = base::SysInfo::IsLowEndDevice();
+ bool using_low_memory_policy =
+ base::SysInfo::IsLowEndDevice() && !IsSmallScreen(screen_size);
settings.use_stream_video_draw_quad = true;
settings.using_synchronous_renderer_compositor = using_synchronous_compositor;