summaryrefslogtreecommitdiffstats
path: root/cc/output
diff options
context:
space:
mode:
authorhush@chromium.org <hush@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-31 09:09:33 +0000
committerhush@chromium.org <hush@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-31 09:09:33 +0000
commitbd5324590122e686c34a66b1bbf7acbfc3fc73da (patch)
tree0f858d11bd9e26259206661e64be29be364e3caf /cc/output
parent81314fe02b07b543a360ed442ef0085583bf4397 (diff)
downloadchromium_src-bd5324590122e686c34a66b1bbf7acbfc3fc73da.zip
chromium_src-bd5324590122e686c34a66b1bbf7acbfc3fc73da.tar.gz
chromium_src-bd5324590122e686c34a66b1bbf7acbfc3fc73da.tar.bz2
Tiling priorities in Android Webview.
Use the parent compositor's clip and transform for tile priorities in child compositor. When the transform matrix changes in parent compositor (hardware_renderer.cc), it posts the matrix and the clip to the child compositor. (The parent clip is in screen space and the parent matrix transforms from webview space to screen space) Child compositor will use them for tile prioritization. In child compositor during updating tile priority, the clip from parent is transformed from screen space to view space, then from view space to content space. Then the result rect will intersect with content_bounds() and the intersection is used as tile priority input. BUG=372073 Review URL: https://codereview.chromium.org/394113002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286731 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/output')
-rw-r--r--cc/output/output_surface.cc10
-rw-r--r--cc/output/output_surface.h11
-rw-r--r--cc/output/output_surface_client.h11
3 files changed, 22 insertions, 10 deletions
diff --git a/cc/output/output_surface.cc b/cc/output/output_surface.cc
index 8283f06..a19a83e 100644
--- a/cc/output/output_surface.cc
+++ b/cc/output/output_surface.cc
@@ -93,9 +93,15 @@ void OutputSurface::SetExternalDrawConstraints(
const gfx::Transform& transform,
const gfx::Rect& viewport,
const gfx::Rect& clip,
+ const gfx::Rect& viewport_rect_for_tile_priority,
+ const gfx::Transform& transform_for_tile_priority,
bool resourceless_software_draw) {
- client_->SetExternalDrawConstraints(
- transform, viewport, clip, resourceless_software_draw);
+ client_->SetExternalDrawConstraints(transform,
+ viewport,
+ clip,
+ viewport_rect_for_tile_priority,
+ transform_for_tile_priority,
+ resourceless_software_draw);
}
OutputSurface::~OutputSurface() {
diff --git a/cc/output/output_surface.h b/cc/output/output_surface.h
index cec247d..f3a874a 100644
--- a/cc/output/output_surface.h
+++ b/cc/output/output_surface.h
@@ -161,10 +161,13 @@ class CC_EXPORT OutputSurface {
void ReclaimResources(const CompositorFrameAck* ack);
void DidLoseOutputSurface();
void SetExternalStencilTest(bool enabled);
- void SetExternalDrawConstraints(const gfx::Transform& transform,
- const gfx::Rect& viewport,
- const gfx::Rect& clip,
- bool resourceless_software_draw);
+ void SetExternalDrawConstraints(
+ const gfx::Transform& transform,
+ const gfx::Rect& viewport,
+ const gfx::Rect& clip,
+ const gfx::Rect& viewport_rect_for_tile_priority,
+ const gfx::Transform& transform_for_tile_priority,
+ bool resourceless_software_draw);
private:
void SetUpContext3d();
diff --git a/cc/output/output_surface_client.h b/cc/output/output_surface_client.h
index 2c6c128..bb37a91 100644
--- a/cc/output/output_surface_client.h
+++ b/cc/output/output_surface_client.h
@@ -38,10 +38,13 @@ class CC_EXPORT OutputSurfaceClient {
virtual void DidSwapBuffersComplete() = 0;
virtual void ReclaimResources(const CompositorFrameAck* ack) = 0;
virtual void DidLoseOutputSurface() = 0;
- virtual void SetExternalDrawConstraints(const gfx::Transform& transform,
- const gfx::Rect& viewport,
- const gfx::Rect& clip,
- bool resourceless_software_draw) = 0;
+ virtual void SetExternalDrawConstraints(
+ const gfx::Transform& transform,
+ const gfx::Rect& viewport,
+ const gfx::Rect& clip,
+ const gfx::Rect& viewport_rect_for_tile_priority,
+ const gfx::Transform& transform_for_tile_priority,
+ bool resourceless_software_draw) = 0;
virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) = 0;
// If set, |callback| will be called subsequent to each new tree activation,
// regardless of the compositor visibility or damage. |callback| must remain