Index: content/browser/renderer_host/render_widget_host_view_android.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
index 76c7f8c46273d5920d8c96b2d08af6e3130457f4..7cee98666b3e7f0e6cff40cbe8bbe23570f0f376 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -89,7 +89,6 @@ |
#include "ui/events/blink/web_input_event_traits.h" |
#include "ui/events/gesture_detection/gesture_provider_config_helper.h" |
#include "ui/events/gesture_detection/motion_event.h" |
-#include "ui/gfx/android/device_display_info.h" |
#include "ui/gfx/android/java_bitmap.h" |
#include "ui/gfx/android/view_configuration.h" |
#include "ui/gfx/geometry/dip_util.h" |
@@ -189,11 +188,6 @@ void GLHelperHolder::Initialize() { |
attributes.sample_buffers = 0; |
attributes.bind_generates_resource = false; |
- constexpr size_t kBytesPerPixel = 4; |
- size_t full_screen_texture_size_in_bytes = |
- gfx::DeviceDisplayInfo().GetDisplayHeight() * |
- gfx::DeviceDisplayInfo().GetDisplayWidth() * kBytesPerPixel; |
- |
gpu::SharedMemoryLimits limits; |
// The GLHelper context doesn't do a lot of stuff, so we don't expect it to |
// need a lot of space for commands. |
@@ -202,10 +196,22 @@ void GLHelperHolder::Initialize() { |
// reasonable but small limit. |
limits.start_transfer_buffer_size = 4 * 1024; |
limits.min_transfer_buffer_size = 4 * 1024; |
- limits.max_transfer_buffer_size = full_screen_texture_size_in_bytes; |
+ |
+ // Use the largest available display size as the max texture size. |
+ constexpr size_t kBytesPerPixel = 4; |
+ size_t max_screen_texture_size_in_bytes = limits.min_transfer_buffer_size; |
+ for (auto& display : display::Screen::GetScreen()->GetAllDisplays()) { |
+ gfx::Size size = display.GetSizeInPixel(); |
+ size_t display_size_in_bytes = |
+ kBytesPerPixel * size.width() * size.height(); |
+ if (display_size_in_bytes > max_screen_texture_size_in_bytes) |
+ max_screen_texture_size_in_bytes = display_size_in_bytes; |
+ } |
+ |
+ limits.max_transfer_buffer_size = max_screen_texture_size_in_bytes; |
// This context is used for doing async readbacks, so allow at least a full |
// screen readback to be mapped. |
- limits.mapped_memory_reclaim_limit = full_screen_texture_size_in_bytes; |
+ limits.mapped_memory_reclaim_limit = max_screen_texture_size_in_bytes; |
constexpr bool automatic_flushes = false; |
constexpr bool support_locking = false; |