| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is partial cl from https://codereview.chromium.org/775143003/
for easy reviewing.
For now, authoritative vsync interval is handled by CompositorVsyncManager.
It will not be used when BeginFrame scheduling is enabled on aura.
Instead, it will be handled by scheduler.
In the next cl, BeginFrame sheduling on aura(and ash) will be turned on.
R=brianderson@chromium.org, mithro@mithis.com
BUG=372086
TEST=cc_unittests
Review URL: https://codereview.chromium.org/1005553004
Cr-Commit-Position: refs/heads/master@{#322125}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do this by using a ui::CompositorLock. For Mac, we don't care about making
sure that the compositor doesn't hang waiting for renderer frames (because
the browser compositor doesn't draw the UI), so disable the lock timeout.
Also, re-create the browser compositor immediately after the tab is made
visible. This way, if the DelegatedFrameHost has an un-evicted old frame,
then that frame will be displayed immediately (and if not, the compositor
will remain locked until a new frame is swapped in).
Background:
When we switched the ui::Compositor to use the scheduler (done
in https://codereview.chromium.org/638653003), we started hitting
issues where unexpected frames would flash on Mac during tab-switch.
The reason for this is that, prior to the change, calling
SetRootLayer(null) on the ui::Compositor would prevent it from drawing
any new frames.
The Mac was relying on this behavior to prevent transient frames from
appearing. The transient frames appear during tab-switch on Mac because
the compositor takes damage (as its root layer is changed) and also
because the compositor is resized (among potentially other things).
These frames do not actually appear on-screen (there are mechanisms
to prevent this), but they waste valuable time during tab-switch (the
browser allows only 50 msec for a new frame to appear on-screen before
it flashes white, and this extra unused frame causes us to miss the
deadline).
With this patch, the frequency of the white flash during tab-switch is
reduced substantially.
BUG=463988
Review URL: https://codereview.chromium.org/996453002
Cr-Commit-Position: refs/heads/master@{#320241}
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch removes some of the functionality that is not used. These
functions seem like they would be used in traces. However, other
functions in the same classes are used instead.
R=danakj, enne
Review URL: https://codereview.chromium.org/992353002
Cr-Commit-Position: refs/heads/master@{#320011}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Skip making a pending tree, we'll want to wait for it anyways before
we draw in single-thread mode. This should bring the single-thread
impl-side painting in line with the legacy compositing mode when
using a single thread (for the browser compositor).
R=enne@chromium.org, vmpstr
BUG=441012
Review URL: https://codereview.chromium.org/873473006
Cr-Commit-Position: refs/heads/master@{#316678}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the last stage of the trace_event directory restructuring.
This is part of a set of 3 CLs which is moving tracing clients to use
the new base::trace_debug namespace.
See crrev.com/837303004 and the related bug for motivations.
BUG=451032
TBR=nduca@chromium.org
Review URL: https://codereview.chromium.org/879913002
Cr-Commit-Position: refs/heads/master@{#315335}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Original CL: crrev.com/882673002
Reason for revert: Broke memory.fyi bot (crbug.com/455530)
Reason for reland: The CL was renaming the tracing namespace and missed
the rename of the tsan suppression (addressed here)
Original description:
After having transitioned all the tracing headers from base/debug/ to
base/trace_event, this CL addresses the namespace move.
In principle, this CL should only change the namespace of the
base/trace_event files but the namespace used by the tracing clients.
In order to achieve this, namespace aliases are appended to the
trace_event headers, to make it so that clients can still refer to
base::debug::TraceFoo, with that being aliased to
base::trace_event::TraceFoo.
The upcoming CLs will gradually migrate the clients to use the
base::trace_event namespace and will remove the ns aliases.
Unfortunately, this CL has also to update few tracing clients,
in particular the ones having forward declarations. Forward
declarations, in fact, cannot be aliased as the compiler sees them
before the alias itself.
See crrev.com/837303004 and the related bug for motivations and design doc.
BUG=451032,455530
TBR=skyostil@chromium.org,jam@chromium.org,dsinclair@chromium.org,ssid@chromium.org
Review URL: https://codereview.chromium.org/869043008
Cr-Commit-Position: refs/heads/master@{#314806}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(patchset #7 id:120001 of https://codereview.chromium.org/882673002/)
Reason for revert:
broken Memory.FYI TSan bot.
crbug.com/455530
Original issue's description:
> Move tracing namespace from base::debug to base::trace_event.
>
> After having transitioned all the tracing headers from base/debug/ to
> base/trace_event, this CL addresses the namespace move.
> In principle, this CL should only change the namespace of the
> base/trace_event files but the namespace used by the tracing clients.
> In order to achieve this, namespace aliases are appended to the
> trace_event headers, to make it so that clients can still refer to
> base::debug::TraceFoo, with that being aliased to
> base::trace_event::TraceFoo.
> The upcoming CLs will gradually migrate the clients to use the
> base::trace_event namespace and will remove the ns aliases.
> Unfortunately, this CL has also to update few tracing clients,
> in particular the ones having forward declarations. Forward
> declarations, in fact, cannot be aliased as the compiler sees them
> before the alias itself.
>
> See crrev.com/837303004 and the related bug for motivations and design doc.
>
> BUG=451032
> TBR=skyostil@chromium.org,jam@chromium.org
>
> Committed: https://crrev.com/97c5abba36f5ce473cd996fab74fbf5aa9bb5464
> Cr-Commit-Position: refs/heads/master@{#314657}
TBR=dsinclair@chromium.org,picksi@chromium.org,primiano@chromium.org,skyostil@chromium.org,ssid@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=451032
Review URL: https://codereview.chromium.org/904573002
Cr-Commit-Position: refs/heads/master@{#314740}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After having transitioned all the tracing headers from base/debug/ to
base/trace_event, this CL addresses the namespace move.
In principle, this CL should only change the namespace of the
base/trace_event files but the namespace used by the tracing clients.
In order to achieve this, namespace aliases are appended to the
trace_event headers, to make it so that clients can still refer to
base::debug::TraceFoo, with that being aliased to
base::trace_event::TraceFoo.
The upcoming CLs will gradually migrate the clients to use the
base::trace_event namespace and will remove the ns aliases.
Unfortunately, this CL has also to update few tracing clients,
in particular the ones having forward declarations. Forward
declarations, in fact, cannot be aliased as the compiler sees them
before the alias itself.
See crrev.com/837303004 and the related bug for motivations and design doc.
BUG=451032
TBR=skyostil@chromium.org,jam@chromium.org
Review URL: https://codereview.chromium.org/882673002
Cr-Commit-Position: refs/heads/master@{#314657}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This ensures that if the header is not included, and a DCHECK is guarded
by this check, that the file will fail to compile instead of silently
compiling the DCHECK out.
For example:
#if DCHECK_IS_ON
DCHECK(SomeThing());
#endif
This example would be compiled out if DCHECK_IS_ON was not defined due
to not including the logging.h header.
Instead, this will fail to compile:
#if DCHECK_IS_ON()
DCHECK(SomeThing());
#endif
R=thakis@chromium.org
Review URL: https://codereview.chromium.org/842523002
Cr-Commit-Position: refs/heads/master@{#310626}
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to allow Vsync to be toggled by dev tools we need to both set the swap
interval to 0 on systems that support it and prevent the scheduler from
throttling frames.
BUG=437172
Review URL: https://codereview.chromium.org/811523002
Cr-Commit-Position: refs/heads/master@{#310139}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This cl is preparation for unified BeginFrame in cc layer.
This implements handling of forwarding_begin_frames_to_children in cc.
And this forwarding is not yet propagated to content layer.
R=brianderson@chromium.org
BUG=372086
TEST=cc_unittests
Review URL: https://codereview.chromium.org/723713003
Cr-Commit-Position: refs/heads/master@{#305226}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As a part of making Android CompositorImpl use cc's scheduler and not
post its own composite calls manually, cc needs to be able to handle
asynchronous output surface creation.
This change modifies CreateOutputSurface to instead be
RequestNewOutputSurface, which the LayerTreeHostClient must respond to
and call SetOutputSurface on the host with the new output surface once
it is ready.
Because the LayerTreeHostClient must now talk to the host as a part of
output surface creation, a bunch of unit test code needed to be
refactored to handle this.
BUG=none
Review URL: https://codereview.chromium.org/348093004
Cr-Commit-Position: refs/heads/master@{#296780}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The compositor makes it possible to customize the message loop proxy
both on the main and impl threads. However BlockingTaskRunner just uses
base::MessageLoopProxy::current() directly and thus overrides this
choice. Using the correct message loop proxy is important because
clients of BlockingTaskRunner have an implicit dependency on the
ordering of tasks posted to BlockingTaskRunner vs. all other tasks
posted to the task runner for that same thread.
This patch fixes the problem by removing the thread-local
BlockingTaskRunner::current() instance in favor of an explicitly
constructed instance which is given a specific SingleThreadTaskRunner
to use. The resource provider is changed to pass a Proxy-owned
blocking task runner to the clients which need one.
BUG=391005
TEST=1. Apply https://codereview.chromium.org/363383002
2. out/Debug/chrome --disable-impl-side-painting --ignore-gpu-blacklist tools/perf/page_sets/tough_scheduling_cases/raf_canvas.html
Review URL: https://codereview.chromium.org/485043003
Cr-Commit-Position: refs/heads/master@{#293353}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This test failed with impl-side painting because PictureLayer did not
skip commits caused by invalidating the layer during Update.
Meanwhile, this CL has some changes that changed the flaky failures
into always-failures. The change is to make the
ThreadProxy::CommitPendingForTesting check not only if a main frame is
in progress, but also if one will happen in the future. The failure was
flaky because the commit would be requested but not happen immediately
when impl-side painting was on due to activation (if the machine was
suitably loaded at the time). I renamed CommitPendingForTesting to
MainFrameWillHappenForTesting because "CommitPending" is a specific
notion in the public API of the scheduler and I didn't want to confuse
these two.
R=ajuma, brianderson, enne
BUG=402449, 397120
Review URL: https://codereview.chromium.org/462803002
Cr-Commit-Position: refs/heads/master@{#289165}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289165 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new classes allow building JSON-like structural arguments. Current implementation uses base::Value as backing store but that can be replaced in the future with something more efficient without changing client code.
All clients of cc/debug/traced_value.h should eventually switch to use the new builders.
BUG=361045
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=286849
R=alph@chromium.org, dsinclair@chromium.org, nduca@chromium.org, willchan@chromium.org
Review URL: https://codereview.chromium.org/380763002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286984 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(https://codereview.chromium.org/380763002/)
Reason for revert:
linux ASAN errors.
http://build.chromium.org/p/chromium.memory/builders/Linux%20ASan%20LSan%20Tests%20%281%29/builds/4493/steps/base_unittests/logs/stdio
Original issue's description:
> Add builders for tracing event's structural arguments
>
> The new classes allow building JSON-like structural arguments. Current implementation uses base::Value as backing store but that can be replaced in the future with something more efficient without changing client code.
>
> All clients of cc/debug/traced_value.h should eventually switch to use the new builders.
>
> BUG=361045
>
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=286849
TBR=alph, caseq, dsinclair, nduca, willchan, yurys
NOTREECHECKS=true
NOTRY=true
BUG=361045
Review URL: https://codereview.chromium.org/421183003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286862 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new classes allow building JSON-like structural arguments. Current implementation uses base::Value as backing store but that can be replaced in the future with something more efficient without changing client code.
All clients of cc/debug/traced_value.h should eventually switch to use the new builders.
BUG=361045
Review URL: https://codereview.chromium.org/380763002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286849 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make it possible for clients pass in a custom task runner to be used for
posting compositor related work onto the main thread. This will be used
for prioritizing compositor tasks by the Blink scheduler.
Covered by existing tests.
BUG=391005
Review URL: https://codereview.chromium.org/400773002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284103 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SingleThreadProxy doesn't support directly changing scroll offsets on
the impl layer tree (since it doesn't send scroll deltas from the impl
side back to the main-thread side). This means that scroll offset
animations should be disallowed by cc when using SingleThreadProxy.
BUG=243871
Review URL: https://codereview.chromium.org/368883003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281140 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Support using single-threaded compositor with a single
DelegatedRendererLayer on a thread that does not have a MessageLoop.
First, Allow BlockingTaskRunner to be used on a thread that does not
have a MessageLoopProxy. For these threads, all PostTask calls must
be wrapped in CapturePostTasks. Use PlatformThreadId rather than
MessageLoopProxy::BelongsToCurrent thread to check for current.
Then fix DCHECK failures in Proxy to allow MessageLoopProxy to be
NULL.
Add tests to verify these code paths are indeed working.
BUG=344087
Review URL: https://codereview.chromium.org/292493006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272473 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move it to be non-virtual methods on SingleThreadProxy and ThreadProxy.
LayerTreeHost only needs to call it on the SingleThreadProxy, and make
it do that before calling Composite() instead of having Composite()
early out.
Merge LTH::InitializeOutputSurfaceIfNeeded into LTH::Composite.
NOTRY=true
R=enne
BUG=374287
Review URL: https://codereview.chromium.org/286293002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271769 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
R=brianderson, enne
BUG=251936
Review URL: https://codereview.chromium.org/279013002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270841 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Added ToValue() method on BeginFrameArgs.
* Added a ToTrace method inside cc/traced_value.h for easy conversion, just do a ToTrace(XXX) of anything which has a ToValue() method.
* Rename Scheduler::StateAsValue to AsValue so it works with above.
BUG=371223
Review URL: https://codereview.chromium.org/270703004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269487 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
This lets us also remove LayerTreeHost::AcquireLayerTextures and related
scheduler things.
BUG=337922
Review URL: https://codereview.chromium.org/227413011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262878 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
Request another commit after drawing layers if we're in continuous paint mode.
BUG=346886
Review URL: https://codereview.chromium.org/181393002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261340 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some places in cc enabled DCHECK code only when in a debug build since
they added member variables to classes in order to perform their
checks, and we could not check for DCHECK at compile time.
Since we can now, we can guard these DCHECKS with DCHECK_IS_ON. Yay!
DCHECK_IS_ON is always defined by base/logging.h. It is set to 1 when
DCHECKS are enabled, and 0 otherwise.
R=enne
BUG=350462
Review URL: https://codereview.chromium.org/201843005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257761 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Speculative. This may have caused flakiness on multiple bots. See bug 335582.
> Unifies LayerTreeHost::SetNeedsUpdateLayers and SetNeedsAnimate -- V2
>
> [2/2] Unifies LayerTreeHost::SetNeedsUpdateLayers and SetNeedsAnimate
>
> They basically do the same thing except that SetNeedsAnimate makes the next
> commit non-cancellable. However there is really no reason why SetNeedsAnimate
> need to enforce a commit even if no tiles are updated and no layer properties
> changed.
>
> SetNeedsAnimate is thus merged into SetNeedsUpdateLayers. The proper use of
> it is when there are potential layout/tile changes, we can use it to defer
> calculation until the next frame. A commit will be scheduled but can be
> cancelled if no updates are needed after calculation.
>
> This part of the patch changes code behavior slightly.
> SingleThreadProxy::SetNeedsUpdateLayers was originally implemented as
> RenderWidget::ScheduleComposite but now it is RenderWidget::ScheduleAnimation.
> ThreadProxy::SetNeedsAnimate was non-cancellable but is now cancellable.
>
> [1/2] Cleanup RenderWidget::scheduleComposite/scheduleAnimation
>
> scheduleComposite has been renamed to ScheduleComposite as it is no longer
> a part of WebWidgetClient API.
>
> scheduleAnimation has been renamed to ScheduleAnimation. The semantics is to
> schedule a composite and also (potentially) animating WebWidget.
>
> A new WebWidgetClient API scheduleUpdate has been added, to replace the old
> scheduleAnimation. The semantics is to notify the embedder that something in
> the WebWidget may change in 0 seconds. (i.e. it is allowed to be called
> during a redraw, in such case another redraw will be scheduled after frame
> delay.
>
> This part of the patch should not change code behavior.
>
> BUG=316929
> R=danakj,jamesr,jochen
>
> Review URL: https://codereview.chromium.org/133263004
TBR=trchen@chromium.org
BUG=335582
Review URL: https://codereview.chromium.org/141833002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245528 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[2/2] Unifies LayerTreeHost::SetNeedsUpdateLayers and SetNeedsAnimate
They basically do the same thing except that SetNeedsAnimate makes the next
commit non-cancellable. However there is really no reason why SetNeedsAnimate
need to enforce a commit even if no tiles are updated and no layer properties
changed.
SetNeedsAnimate is thus merged into SetNeedsUpdateLayers. The proper use of
it is when there are potential layout/tile changes, we can use it to defer
calculation until the next frame. A commit will be scheduled but can be
cancelled if no updates are needed after calculation.
This part of the patch changes code behavior slightly.
SingleThreadProxy::SetNeedsUpdateLayers was originally implemented as
RenderWidget::ScheduleComposite but now it is RenderWidget::ScheduleAnimation.
ThreadProxy::SetNeedsAnimate was non-cancellable but is now cancellable.
[1/2] Cleanup RenderWidget::scheduleComposite/scheduleAnimation
scheduleComposite has been renamed to ScheduleComposite as it is no longer
a part of WebWidgetClient API.
scheduleAnimation has been renamed to ScheduleAnimation. The semantics is to
schedule a composite and also (potentially) animating WebWidget.
A new WebWidgetClient API scheduleUpdate has been added, to replace the old
scheduleAnimation. The semantics is to notify the embedder that something in
the WebWidget may change in 0 seconds. (i.e. it is allowed to be called
during a redraw, in such case another redraw will be scheduled after frame
delay.
This part of the patch should not change code behavior.
BUG=316929
R=danakj,jamesr,jochen
Review URL: https://codereview.chromium.org/133263004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245445 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoid unneccessary copy of structures gfx::Rect & gfx::RectF
by passing them by const ref rather than value.
Any struct of size > 4 bytes should be passed by const ref.
Passing by ref for these structs is faster than passing
by value, especially when invoking function has multiple parameters.
Pass by value creates unneccessary overhead which should be avoided.
BUG=159273
Review URL: https://codereview.chromium.org/93663004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244224 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the |first_output_surface| which was not used before
the client signals ready.
This allows the client to wait before creating a graphics context
until the gpu thread and client channel are set up.
BUG=270179,329739
R=danakj@chromium.org, jamesr@chromium.org, jochen@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=238458
Review URL: https://codereview.chromium.org/85693007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@241897 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 807f55ecb7ece39b25866405125d7e58b4bad9f2.
It broke 33 layout tests.
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20Blink&tests=compositing/clip-change.html,compositing/geometry/foreground-offset-change.html,compositing/iframes/fixed-position-iframe.html,compositing/iframes/repaint-after-losing-scrollbars.html,compositing/iframes/scroll-grandchild-iframe.html,compositing/img-layer-grow.html,compositing/layer-creation/fixed-position-scroll.html,compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html,compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer.html,compositing/overflow/repaint-after-losing-scrollbars.html,compositing/repaint/newly-composited-on-scroll.html,compositing/repaint/newly-composited-repaint-rect.html,compositing/repaint/page-scale-repaint.html,compositing/repaint/requires-backing-repaint.html,compositing/repaint/shrink-layer.html,compositing/rtl/rtl-overflow-invalidation.html,compositing/video-frame-size-change.html,css3/filters/filter-change-repaint-composited.html,css3/filters/filter-change-repaint.html,css3/filters/filter-repaint-composited-fallback-crash.html,css3/filters/filter-repaint-composited-fallback.html,fast/canvas/webgl/webgl-composite-modes-repaint.html,fast/repaint/block-selection-gap-in-composited-layer.html,fast/sub-pixel/transformed-iframe-copy-on-scroll.html,virtual/gpu/compositedscrolling/overflow/do-not-paint-outline-into-composited-scrolling-contents.html,virtual/gpu/compositedscrolling/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer.html,virtual/gpu/compositedscrolling/overflow/repaint-after-losing-scrollbars.html,virtual/gpu/fast/canvas/canvas-composite-fill-repaint.html,virtual/gpu/fast/canvas/canvas-incremental-repaint-2.html,virtual/gpu/fast/canvas/canvas-incremental-repaint.html,virtual/gpu/fast/canvas/canvas-resize-after-paint-without-layout.html,virtual/gpu/fast/canvas/setWidthResetAfterForcedRender.html,virtual/gpu/fast/canvas/webgl/webgl-composite-modes-repaint.html
BUG=none
TBR=trchen@chromium.org
Review URL: https://codereview.chromium.org/111893011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240038 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[2/2] Unifies LayerTreeHost::SetNeedsUpdateLayers and SetNeedsAnimate
They basically do the same thing except that SetNeedsAnimate makes the next
commit non-cancellable. However there is really no reason why SetNeedsAnimate
need to enforce a commit even if no tiles are updated and no layer properties
changed.
SetNeedsAnimate is thus merged into SetNeedsUpdateLayers. The proper use of
it is when there are potential layout/tile changes, we can use it to defer
calculation until the next frame. A commit will be scheduled but can be
cancelled if no updates are needed after calculation.
This part of the patch changes code behavior slightly.
SingleThreadProxy::SetNeedsUpdateLayers was originally implemented as
RenderWidget::ScheduleComposite but now it is RenderWidget::ScheduleAnimation.
ThreadProxy::SetNeedsAnimate was non-cancellable but is now cancellable.
[1/2] Cleanup RenderWidget::scheduleComposite/scheduleAnimation
scheduleComposite has been renamed to ScheduleComposite as it is no longer
a part of WebWidgetClient API.
scheduleAnimation has been renamed to ScheduleAnimation. The semantics is to
schedule a composite and also (potentially) animating WebWidget.
A new WebWidgetClient API scheduleUpdate has been added, to replace the old
scheduleAnimation. The semantics is to notify the embedder that something in
the WebWidget may change in 0 seconds. (i.e. it is allowed to be called
during a redraw, in such case another redraw will be scheduled after frame
delay.
This part of the patch should not change code behavior.
BUG=316929
R=danakj,jamesr,piman
Review URL: https://codereview.chromium.org/68893031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240008 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reason: Candidate for Mac 10.6 and 10.7 Break - IOSurfaceReuse
> cc: Defer first OutputSurface creation until client is ready
>
> Remove the |first_output_surface| which was not used before
> the client signals ready.
> This allows the client to wait before creating a graphics context
> until the gpu thread and client channel are set up.
>
> BUG=270179
> R=danakj@chromium.org, jamesr@chromium.org, jochen@chromium.org
>
> Review URL: https://codereview.chromium.org/85693007
TBR=sievers@chromium.org
Review URL: https://codereview.chromium.org/103163003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238470 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the |first_output_surface| which was not used before
the client signals ready.
This allows the client to wait before creating a graphics context
until the gpu thread and client channel are set up.
BUG=270179
R=danakj@chromium.org, jamesr@chromium.org, jochen@chromium.org
Review URL: https://codereview.chromium.org/85693007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238458 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SetNeedsCommit is currently the only method that throttles
input events. When SetNeedsUpdate was added to support
abortable commits, it inadvertantly disabled input throttling
for abortabe commits. SetNeesdAnimate has never throttled
input events, but there is not reason to treat it differently.
This patch throttles input for SetNeedsAnimate, SetNeedsUpdate
and SetNeedsCommit now.
BUG=305210
Review URL: https://codereview.chromium.org/37313003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231190 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently the ThreadProxy recursively asks all layers in the tree if
they should block the commit. This is problematic as when you remove
a layer from a the tree, it may want to block the commit to get back
resources from its active-tree impl-layer.
Instead, have layers call SetNextCommitWaitsForActivation() when they
want the next commit to block on activate. This way we only block
commits that matter, not every commit when there's a texture layer
present. And we can allow a layer to block the commit when it is
leaving the tree.
Tests:
TextureLayerNoMailboxIsActivatedDuringCommit
TextureLayerMailboxIsActivatedDuringCommit
DelegatedFrameIsActivatedDuringCommit
R=enne, piman
BUG=277953
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=220418
Review URL: https://chromiumcodereview.appspot.com/23530003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220515 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
http://build.chromium.org/p/chromium.linux/builders/Android%20Tests%20%28dbg%29/builds/14025/steps/cc_unittests/logs/stdio#failure7
> cc: Block commit on activate by setting a flag on LayerTreeHost.
>
> Currently the ThreadProxy recursively asks all layers in the tree if
> they should block the commit. This is problematic as when you remove
> a layer from a the tree, it may want to block the commit to get back
> resources from its active-tree impl-layer.
>
> Instead, have layers call SetNextCommitWaitsForActivation() when they
> want the next commit to block on activate. This way we only block
> commits that matter, not every commit when there's a texture layer
> present. And we can allow a layer to block the commit when it is
> leaving the tree.
>
> Tests:
> TextureLayerNoMailboxIsActivatedDuringCommit
> TextureLayerMailboxIsActivatedDuringCommit
> DelegatedFrameIsActivatedDuringCommit
>
> R=enne, piman
> BUG=277953
>
> Review URL: https://chromiumcodereview.appspot.com/23530003
TBR=danakj@chromium.org
Review URL: https://codereview.chromium.org/23702010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220455 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently the ThreadProxy recursively asks all layers in the tree if
they should block the commit. This is problematic as when you remove
a layer from a the tree, it may want to block the commit to get back
resources from its active-tree impl-layer.
Instead, have layers call SetNextCommitWaitsForActivation() when they
want the next commit to block on activate. This way we only block
commits that matter, not every commit when there's a texture layer
present. And we can allow a layer to block the commit when it is
leaving the tree.
Tests:
TextureLayerNoMailboxIsActivatedDuringCommit
TextureLayerMailboxIsActivatedDuringCommit
DelegatedFrameIsActivatedDuringCommit
R=enne, piman
BUG=277953
Review URL: https://chromiumcodereview.appspot.com/23530003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220418 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With upcoming scheduler changes, it'll be easier to understand the
scheduler if there's a tracing option for the scheduler state.
Given how much state there is to trace, a new disabled-by-default
tracing category is used called "cc.debug.scheduler".
BUG=276637
Review URL: https://chromiumcodereview.appspot.com/22802018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218686 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If input is prevented from reaching the compositor thread, then the
compositor should switch immediately into "new content takes priority"
mode rather than waiting 250ms for smoothness to time out.
If in the future we ever throttle begin frame (or hold them off
indefinitely) when in prefer smoothness mode, this safety check will
help us from delays when need a commit before more input will be sent.
R=jamesr@chromium.org, nduca@chromium.org
BUG=none
Review URL: https://chromiumcodereview.appspot.com/19313003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214792 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new SetNeedsUpdateLayers that triggers the commit flow, but is
abortable if update layers doesn't actually make any changes. This
allows the main thread to abort a begin frame. This happens in the case
of scroll updates from the compositor thread or invalidations.
There was previously an abort begin frame call for when a visibility
message and a begin frame message were posted simultaneously, but it
incorrectly applied the scrolls and scales without informing the
compositor thread that these had already been consumed. To fix this,
the abort message passes back a boolean about whether or not the
commit was aborted (and needed to be sent again) or was handled
(and the scrolls and scales processed).
To avoid a deluge of begin frames (in the commit sense) from the
scheduler, the scheduler has been adjusted to wait until the next begin
frame (in the vsync signal sense) so that these calls can be throttled.
Otherwise, the scheduler will just keep trying to begin frame.
R=brianderson@chromium.org, danakj@chromium.org
BUG=256381
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=213338
Review URL: https://chromiumcodereview.appspot.com/19106007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214314 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Broke WebViewInteractiveTest.EditCommandsNoMenu on Mac
[1288:27139:0723/221703:FATAL:layer_impl.cc(286)] Check failed: TotalScrollOffset().y() <= max_scroll_offset_.y() (62 vs. 47)
> cc: Allow the main thread to cancel commits
>
> Add a new SetNeedsUpdateLayers that triggers the commit flow, but is
> abortable if update layers doesn't actually make any changes. This
> allows the main thread to abort a begin frame. This happens in the case
> of scroll updates from the compositor thread or invalidations.
>
> There was previously an abort begin frame call for when a visibility
> message and a begin frame message were posted simultaneously, but it
> incorrectly applied the scrolls and scales without informing the
> compositor thread that these had already been consumed. To fix this,
> the abort message passes back a boolean about whether or not the
> commit was aborted (and needed to be sent again) or was handled
> (and the scrolls and scales processed).
>
> To avoid a deluge of begin frames (in the commit sense) from the
> scheduler, the scheduler has been adjusted to wait until the next begin
> frame (in the vsync signal sense) so that these calls can be throttled.
> Otherwise, the scheduler will just keep trying to begin frame.
>
> R=brianderson@chromium.org, danakj@chromium.org
> BUG=256381
>
> Review URL: https://chromiumcodereview.appspot.com/19106007
TBR=enne@chromium.org
Review URL: https://codereview.chromium.org/19519019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213355 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new SetNeedsUpdateLayers that triggers the commit flow, but is
abortable if update layers doesn't actually make any changes. This
allows the main thread to abort a begin frame. This happens in the case
of scroll updates from the compositor thread or invalidations.
There was previously an abort begin frame call for when a visibility
message and a begin frame message were posted simultaneously, but it
incorrectly applied the scrolls and scales without informing the
compositor thread that these had already been consumed. To fix this,
the abort message passes back a boolean about whether or not the
commit was aborted (and needed to be sent again) or was handled
(and the scrolls and scales processed).
To avoid a deluge of begin frames (in the commit sense) from the
scheduler, the scheduler has been adjusted to wait until the next begin
frame (in the vsync signal sense) so that these calls can be throttled.
Otherwise, the scheduler will just keep trying to begin frame.
R=brianderson@chromium.org, danakj@chromium.org
BUG=256381
Review URL: https://chromiumcodereview.appspot.com/19106007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213338 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
Browser compositor path has long since been removed. This is just
removing dead code now.
BUG=
Review URL: https://chromiumcodereview.appspot.com/19115005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211711 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
BUG=254986
TEST=none
TBR=ben@chromium.org
Review URL: https://chromiumcodereview.appspot.com/18120002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209027 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These classes are replaced by using base::SingleThreadTaskRunner
directly.
R=piman,jamesr
BUG=251134
Depends on: https://codereview.chromium.org/17362002/
Review URL: https://chromiumcodereview.appspot.com/17114008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207491 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Relanding again. This time, the proactive SetNeedsBeginFrame is
broken out explicitly with logic to workaround crbug 249806 and
to avoid expensive redraws with the synchronous renderer.
This includes two small fixes for the original version of this
patch that broke software compositing and WebView.
This will allow us to avoid having two different code paths
in the Scheduler. It also allows us to more easily remove the
VSyncTimeSource and FrameRateController from the Scheduler.
This patch instantiates the FrameRateController inside of
OutputSurface for now, but the FrameRateController could be
removed in future patches.
BUG=245920
BUG=243497
BUG=249806
TBR=nduca@chromium.org,sievers@chromium.org,kbr@chromium.org
Review URL: https://chromiumcodereview.appspot.com/17353002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206955 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is causing pre-rendered pages to not load on android: crbug.com/249806
> cc: Emulate BeginFrame in OutputSurfaces that don't support it natively
>
> This includes two small fixes for the original version of this
> patch that broke software compositing and WebView.
>
> This will allow us to avoid having two different code paths
> in the Scheduler. It also allows us to more easily remove the
> VSyncTimeSource and FrameRateController from the Scheduler.
>
> This patch instantiates the FrameRateController inside of
> OutputSurface for now, but the FrameRateController could be
> removed in future patches.
>
> BUG=245920
> BUG=243497
> TBR=nduca@chromium.org,sievers@chromium.org,kbr@chromium.org
>
> Review URL: https://chromiumcodereview.appspot.com/16833003
TBR=brianderson@chromium.org
Review URL: https://codereview.chromium.org/17204002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206655 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This includes two small fixes for the original version of this
patch that broke software compositing and WebView.
This will allow us to avoid having two different code paths
in the Scheduler. It also allows us to more easily remove the
VSyncTimeSource and FrameRateController from the Scheduler.
This patch instantiates the FrameRateController inside of
OutputSurface for now, but the FrameRateController could be
removed in future patches.
BUG=245920
BUG=243497
TBR=nduca@chromium.org,sievers@chromium.org,kbr@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16833003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206020 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
> cc: Emulate BeginFrame in OutputSurfaces that don't support it natively
>
> This will allow us to avoid having two different code paths
> in the Scheduler. It also allows us to more easily remove the
> VSyncTimeSource and FrameRateController from the Scheduler.
>
> This patch instantiates the FrameRateController inside of
> OutputSurface for now, but the FrameRateController could be
> removed in future patches.
>
> BUG=245920
> BUG=243497
>
> Review URL: https://chromiumcodereview.appspot.com/15836005
TBR=brianderson@chromium.org
Review URL: https://codereview.chromium.org/16679010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205838 0039d316-1c4b-4281-b951-d872f2087c98
|