Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: android_webview/browser/browser_view_renderer.cc

Issue 394113002: Tiling priorities in Android Webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/browser/browser_view_renderer.h" 5 #include "android_webview/browser/browser_view_renderer.h"
6 6
7 #include "android_webview/browser/browser_view_renderer_client.h" 7 #include "android_webview/browser/browser_view_renderer_client.h"
8 #include "android_webview/browser/parent_compositor_draw_constraints.h"
8 #include "android_webview/browser/shared_renderer_state.h" 9 #include "android_webview/browser/shared_renderer_state.h"
9 #include "android_webview/common/aw_switches.h" 10 #include "android_webview/common/aw_switches.h"
10 #include "android_webview/public/browser/draw_gl.h" 11 #include "android_webview/public/browser/draw_gl.h"
11 #include "base/android/jni_android.h" 12 #include "base/android/jni_android.h"
12 #include "base/auto_reset.h" 13 #include "base/auto_reset.h"
13 #include "base/command_line.h" 14 #include "base/command_line.h"
14 #include "base/debug/trace_event.h" 15 #include "base/debug/trace_event.h"
15 #include "base/json/json_writer.h" 16 #include "base/json/json_writer.h"
16 #include "base/logging.h" 17 #include "base/logging.h"
17 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 ReturnResourceFromParent(); 252 ReturnResourceFromParent();
252 SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy(); 253 SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy();
253 RequestMemoryPolicy(new_policy); 254 RequestMemoryPolicy(new_policy);
254 compositor_->SetMemoryPolicy(memory_policy_); 255 compositor_->SetMemoryPolicy(memory_policy_);
255 256
256 scoped_ptr<DrawGLInput> draw_gl_input(new DrawGLInput); 257 scoped_ptr<DrawGLInput> draw_gl_input(new DrawGLInput);
257 draw_gl_input->scroll_offset = last_on_draw_scroll_offset_; 258 draw_gl_input->scroll_offset = last_on_draw_scroll_offset_;
258 draw_gl_input->width = width_; 259 draw_gl_input->width = width_;
259 draw_gl_input->height = height_; 260 draw_gl_input->height = height_;
260 261
261 gfx::Transform transform;
262 gfx::Size surface_size(width_, height_); 262 gfx::Size surface_size(width_, height_);
263 gfx::Rect viewport(surface_size); 263 gfx::Rect viewport(surface_size);
264 // TODO(boliu): Should really be |last_on_draw_global_visible_rect_|.
265 // See crbug.com/372073.
266 gfx::Rect clip = viewport; 264 gfx::Rect clip = viewport;
267 scoped_ptr<cc::CompositorFrame> frame = compositor_->DemandDrawHw( 265 gfx::Rect external_tiling_rect;
268 surface_size, transform, viewport, clip); 266 gfx::Transform external_tiling_transform = parent_draw_constraints_.transform;
267 ;
268
269 parent_draw_constraints_ = shared_renderer_state_->ParentDrawConstraints();
270
271 // If the WebView is on a layer, the parent transform is just an identity
272 // matrix and WebView does not know what transform is applied onto the layer.
273 // In this case, just use the surface rect for tiling.
274 if (parent_draw_constraints_.is_layer)
275 external_tiling_rect = parent_draw_constraints_.surface_rect;
276 else
277 external_tiling_rect = last_on_draw_global_visible_rect_;
278
279 scoped_ptr<cc::CompositorFrame> frame =
280 compositor_->DemandDrawHw(surface_size,
281 gfx::Transform(),
282 viewport,
283 clip,
284 external_tiling_rect,
285 external_tiling_transform);
269 if (!frame.get()) 286 if (!frame.get())
270 return false; 287 return false;
271 288
272 GlobalTileManager::GetInstance()->DidUse(tile_manager_key_); 289 GlobalTileManager::GetInstance()->DidUse(tile_manager_key_);
273 290
274 frame->AssignTo(&draw_gl_input->frame); 291 frame->AssignTo(&draw_gl_input->frame);
275 ReturnUnusedResource(shared_renderer_state_->PassDrawGLInput()); 292 ReturnUnusedResource(shared_renderer_state_->PassDrawGLInput());
276 shared_renderer_state_->SetDrawGLInput(draw_gl_input.Pass()); 293 shared_renderer_state_->SetDrawGLInput(draw_gl_input.Pass());
277 DidComposite(); 294 DidComposite();
278 return client_->RequestDrawGL(java_canvas, false); 295 return client_->RequestDrawGL(java_canvas, false);
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 base::StringAppendF(&str, 768 base::StringAppendF(&str,
752 "surface width height: [%d %d] ", 769 "surface width height: [%d %d] ",
753 draw_info->width, 770 draw_info->width,
754 draw_info->height); 771 draw_info->height);
755 base::StringAppendF(&str, "is_layer: %d ", draw_info->is_layer); 772 base::StringAppendF(&str, "is_layer: %d ", draw_info->is_layer);
756 } 773 }
757 return str; 774 return str;
758 } 775 }
759 776
760 } // namespace android_webview 777 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698