Commit 6124e542 authored by Mitsuru Oshima's avatar Mitsuru Oshima Committed by Commit Bot

Increase compositor memory limit for display bigger than 3000px wide.

Bug: 923141
Test: manually tested on nocturne and desktotp. I'll add more tests in separate CL (which requires some changes to compositor side).
Change-Id: Ica7cb2a7431939ef978c77f289cfa6acf80e697a
Reviewed-on: https://chromium-review.googlesource.com/c/1434516Reviewed-by: default avatarMalay Keshav <malaykeshav@chromium.org>
Commit-Queue: Mitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625829}
parent e1e99584
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "ash/system/unified/unified_system_tray.h" #include "ash/system/unified/unified_system_tray.h"
#include "ash/wm/window_util.h" #include "ash/wm/window_util.h"
#include "ash/ws/window_service_owner.h" #include "ash/ws/window_service_owner.h"
#include "base/command_line.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
...@@ -42,6 +43,7 @@ ...@@ -42,6 +43,7 @@
#include "ui/base/ui_base_features.h" #include "ui/base/ui_base_features.h"
#include "ui/base/ui_base_switches_util.h" #include "ui/base/ui_base_switches_util.h"
#include "ui/compositor/compositor.h" #include "ui/compositor/compositor.h"
#include "ui/compositor/compositor_switches.h"
#include "ui/display/display.h" #include "ui/display/display.h"
#include "ui/display/display_layout.h" #include "ui/display/display_layout.h"
#include "ui/display/manager/display_layout_store.h" #include "ui/display/manager/display_layout_store.h"
...@@ -89,6 +91,27 @@ aura::Window* GetWindow(AshWindowTreeHost* ash_host) { ...@@ -89,6 +91,27 @@ aura::Window* GetWindow(AshWindowTreeHost* ash_host) {
return ash_host->AsWindowTreeHost()->window(); return ash_host->AsWindowTreeHost()->window();
} }
const char* GetUICompositorMemoryLimitMB() {
display::DisplayManager* display_manager =
ash::Shell::Get()->display_manager();
int width;
if (display::Display::HasInternalDisplay()) {
// If the device has an internal display, use it even if
// it's disabled (can happen when booted in docked mode.
const display::ManagedDisplayInfo& display_info =
display_manager->GetDisplayInfo(display::Display::InternalDisplayId());
width = display_info.size_in_pixel().width();
} else {
// Otherwise just use the primary.
width = display::Screen::GetScreen()
->GetPrimaryDisplay()
.GetSizeInPixel()
.width();
}
return width >= 3000 ? "1024" : "512";
}
} // namespace } // namespace
// A utility class to store/restore focused/active window // A utility class to store/restore focused/active window
...@@ -216,6 +239,14 @@ void WindowTreeHostManager::Shutdown() { ...@@ -216,6 +239,14 @@ void WindowTreeHostManager::Shutdown() {
void WindowTreeHostManager::CreatePrimaryHost( void WindowTreeHostManager::CreatePrimaryHost(
const AshWindowTreeHostInitParams& init_params) { const AshWindowTreeHostInitParams& init_params) {
auto* command_line = base::CommandLine::ForCurrentProcess();
if (!command_line->HasSwitch(
switches::kUiCompositorMemoryLimitWhenVisibleMB)) {
command_line->AppendSwitchASCII(
switches::kUiCompositorMemoryLimitWhenVisibleMB,
GetUICompositorMemoryLimitMB());
}
const display::Display& primary_candidate = const display::Display& primary_candidate =
GetDisplayManager()->GetPrimaryDisplayCandidate(); GetDisplayManager()->GetPrimaryDisplayCandidate();
primary_display_id = primary_candidate.id(); primary_display_id = primary_candidate.id();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment