History log of /external/skia/src/gpu/GrLayerCache.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d309e7aa0efa2d5dd7e7b1af97026fcd3a047e98 30-Apr-2015 bsalomon <bsalomon@google.com> This replaces the texture creation/caching functions on GrContext with a GrTextureProvider interface. The goal is to pass this narrowly focused object in places that currently take a GrContext but don't need and shouldn't use its other methods. It also has an extended private interface for interacting with non-texture resource types.

Review URL: https://codereview.chromium.org/1107973004
/external/skia/src/gpu/GrLayerCache.cpp
23e619cf462b2a8a500f3ca750e099f79601f508 06-Feb-2015 bsalomon <bsalomon@google.com> Reimplement gpu message bus for invalidated bitmap gen IDs

Review URL: https://codereview.chromium.org/902873002
/external/skia/src/gpu/GrLayerCache.cpp
57f192d4af03499e640509d95e752a9cc97c4463 08-Jan-2015 robertphillips <robertphillips@google.com> Allow non-atlasable layer to still be hoisted

The PlausiblyAtlasable check was preventing large layers from ever being hoisted in the FindLayersToHoist path.

Review URL: https://codereview.chromium.org/844613002
/external/skia/src/gpu/GrLayerCache.cpp
478dd723362fefc2023aee03e11216d913eeac03 16-Dec-2014 robertphillips <robertphillips@google.com> Fix layer hoisting image filter corner cases

This CL fixes 5 bugs related to hoisting image filters:

For image filters the src layer (the one prior to filtering) often needs to be
smaller then the final layer. This requires the saveLayer's optional bounds
to be stored (in SkLayerInfo.h and SkRecordDraw.cpp) and then used in
compute_source_rect and carried around in GrCachedLayer.

The image filters can add an extra offset to the final draw operation.
This is now computed in GrLayerHoister::FilterLayer and carried around in
GrCachedLayer.

Filtered layers must use exact matches. This is now done in GrLayerCache::lock.

The filter cache requires a valid matrix so it can compute the correct offset.
This is now done in GrLayerHoister::FilterLayer.

Filtered layers need to be drawn with drawSprite while unfiltered (and therefore
hopefully atlased) layers can be drawn with drawBitmap. This is now done in
draw_replacement_bitmap.

Committed: https://skia.googlesource.com/skia/+/702eb9622102599d94ab6798e6227cf29f48c2d3

Review URL: https://codereview.chromium.org/803183003
/external/skia/src/gpu/GrLayerCache.cpp
86f032832fc3527ab561bcbd9d2a546f7f676f73 16-Dec-2014 robertphillips <robertphillips@google.com> Revert of Fix layer hoisting image filter corner cases (patchset #3 id:40001 of https://codereview.chromium.org/803183003/)

Reason for revert:
Breaking DM

Original issue's description:
> Fix layer hoisting image filter corner cases
>
> This CL fixes 5 bugs related to hoisting image filters:
>
> For image filters the src layer (the one prior to filtering) often needs to be
> smaller then the final layer. This requires the saveLayer's optional bounds
> to be stored (in SkLayerInfo.h and SkRecordDraw.cpp) and then used in
> compute_source_rect and carried around in GrCachedLayer.
>
> The image filters can add an extra offset to the final draw operation.
> This is now computed in GrLayerHoister::FilterLayer and carried around in
> GrCachedLayer.
>
> Filtered layers must use exact matches. This is now done in GrLayerCache::lock.
>
> The filter cache requires a valid matrix so it can compute the correct offset.
> This is now done in GrLayerHoister::FilterLayer.
>
> Filtered layers need to be drawn with drawSprite while unfiltered (and therefore
> hopefully atlased) layers can be drawn with drawBitmap. This is now done in
> draw_replacement_bitmap.
>
> Committed: https://skia.googlesource.com/skia/+/702eb9622102599d94ab6798e6227cf29f48c2d3

TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/790643009
/external/skia/src/gpu/GrLayerCache.cpp
702eb9622102599d94ab6798e6227cf29f48c2d3 16-Dec-2014 robertphillips <robertphillips@google.com> Fix layer hoisting image filter corner cases

This CL fixes 5 bugs related to hoisting image filters:

For image filters the src layer (the one prior to filtering) often needs to be
smaller then the final layer. This requires the saveLayer's optional bounds
to be stored (in SkLayerInfo.h and SkRecordDraw.cpp) and then used in
compute_source_rect and carried around in GrCachedLayer.

The image filters can add an extra offset to the final draw operation.
This is now computed in GrLayerHoister::FilterLayer and carried around in
GrCachedLayer.

Filtered layers must use exact matches. This is now done in GrLayerCache::lock.

The filter cache requires a valid matrix so it can compute the correct offset.
This is now done in GrLayerHoister::FilterLayer.

Filtered layers need to be drawn with drawSprite while unfiltered (and therefore
hopefully atlased) layers can be drawn with drawBitmap. This is now done in
draw_replacement_bitmap.

Review URL: https://codereview.chromium.org/803183003
/external/skia/src/gpu/GrLayerCache.cpp
e99d499caa7dbc80b58e0faf5ce137e7d30cc5d0 03-Dec-2014 robertphillips <robertphillips@google.com> Fuse GrReplacements and GrLayerCache

The conversion step from GrCachedLayer to ReplacementInfo isn't necessary.

Review URL: https://codereview.chromium.org/769533004
/external/skia/src/gpu/GrLayerCache.cpp
bc0c4bd9dff5c7be1a0845ef0d5cc3f4faaef5f3 01-Dec-2014 robertphillips <robertphillips@google.com> Add additional clean up code in MPD path

This addresses an edge case where a picture only has one layer which is atlasable but doesn't make it into the atlas. In this case asserts can fire since there is no atlased layer to clean up the tracking picture object.

Review URL: https://codereview.chromium.org/764393002
/external/skia/src/gpu/GrLayerCache.cpp
01d6e5f462d1d52203ee1a6660415877e4cf2dde 01-Dec-2014 robertphillips <robertphillips@google.com> Use variable length key (rather than accumulated matrix) as save layer hoisting key

Adding the rendering canvas' CTM to the layer hoisting key (i.e., Add support for hoisting layers in pictures drawn with a matrix - https://codereview.chromium.org/748853002/) has increased the cache miss rate due to accumulated floating point error. This CL fixes part of the issue by using the chain of operation indices leading to each saveLayer as the key. The canvas' CTM must still form part of the key but should be less subject to accumulated error.

BUG=skia:2315

Review URL: https://codereview.chromium.org/753253002
/external/skia/src/gpu/GrLayerCache.cpp
04c96950554b4e416755c5bc23022674518a6e8b 24-Nov-2014 mtklein <mtklein@chromium.org> Remove Picture deletion listeners.

Looks like we can just have ~SkPicture put the message on the bus directly.

BUG=skia:3144

Review URL: https://codereview.chromium.org/751663002
/external/skia/src/gpu/GrLayerCache.cpp
a63f32e879a67c84f820c32ac2b10ffd7b2940b8 10-Nov-2014 robertphillips <robertphillips@google.com> Address MSAA rendering in layer hoisting

This became relevant whilst attempting to rebaseline the multipicturedraw GMs after turning on layer hoisting inside Skia.

Review URL: https://codereview.chromium.org/709943003
/external/skia/src/gpu/GrLayerCache.cpp
b32f0ad89119625feedb4f0403bbbc94fae44668 04-Nov-2014 robertphillips <robertphillips@google.com> Fix layer cache memory leak

The issue was that, with caching disabled, the layer cache code was removing layers outside of a purge (i.e., in unlock) but not correctly cleaning up the GrPictureInfo objects (as is done in purgePlot).

Review URL: https://codereview.chromium.org/703643002
/external/skia/src/gpu/GrLayerCache.cpp
225a627ccb15f41efa40750f4244283ef7e8fbf0 30-Oct-2014 robertphillips <robertphillips@google.com> Fix bug in aggressive layer cache purging

A picture may possess many layers that get placed in one plot of the atlas. In this case we can only remove the plot from the plotUsage tracking structure when all the layers belonging to the picture in that plot have been removed.

Review URL: https://codereview.chromium.org/654463004
/external/skia/src/gpu/GrLayerCache.cpp
4ab5a9048cf327adfc9ef9757ea956d7003ba047 29-Oct-2014 robertphillips <robertphillips@google.com> Discard atlas after every MultiPictureDraw::draw

This is intended to prevent ghosting on tiled architectures.

This CL also defers creation of the atlas (and its texture) until it is actually needed.

Committed: https://skia.googlesource.com/skia/+/6d5b5455743414ddb11d2b8c1fe9d7959f2b853d

Review URL: https://codereview.chromium.org/678403002
/external/skia/src/gpu/GrLayerCache.cpp
9f36b8719b5fab2e3d7f25c5299438f954d06052 29-Oct-2014 robertphillips <robertphillips@google.com> Revert of Discard atlas after every MultiPictureDraw::draw (patchset #4 id:60001 of https://codereview.chromium.org/678403002/)

Reason for revert:
Breaking bots

Original issue's description:
> Discard atlas after every MultiPictureDraw::draw
>
> This is intended to prevent ghosting on tiled architectures.
>
> This CL also defers creation of the atlas (and its texture) until it is actually needed.
>
> Committed: https://skia.googlesource.com/skia/+/6d5b5455743414ddb11d2b8c1fe9d7959f2b853d

TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/687233002
/external/skia/src/gpu/GrLayerCache.cpp
6d5b5455743414ddb11d2b8c1fe9d7959f2b853d 29-Oct-2014 robertphillips <robertphillips@google.com> Discard atlas after every MultiPictureDraw::draw

This is intended to prevent ghosting on tiled architectures.

This CL also defers creation of the atlas (and its texture) until it is actually needed.

Review URL: https://codereview.chromium.org/678403002
/external/skia/src/gpu/GrLayerCache.cpp
f2703d83da3ab2ae18b45231fd4f11e16cce3184 28-Oct-2014 bsalomon <bsalomon@google.com> rename GrTextureDesc->GrSurfaceDesc, GrTextureFlags->GrSurfaceFlags

Review URL: https://codereview.chromium.org/682223002
/external/skia/src/gpu/GrLayerCache.cpp
fd61ed0d7929cf85e0b936f48c72035af4c0a4b3 28-Oct-2014 robertphillips <robertphillips@google.com> Alter layer hoisting to only hoist layers for one canvas at a time

This CL alters layer hoisting to defer creation of the free floating layers until they are actually needed (rather than creating _all_ the hoisted layers at the start).

It also fixes a pre vs. post Concat bug with how matrices were being accumulated.

BUG=skia:2315

Review URL: https://codereview.chromium.org/657383004
/external/skia/src/gpu/GrLayerCache.cpp
3aac6e0848010efe046bd86bcb341dad5a23e174 20-Oct-2014 robertphillips <robertphillips@google.com> Add clip to layer cache

This CL adds the clip region to the GPU layer hoisting image cache. It also switches back to the old caching behavior of using the entire CTM in the cache key rather then just the upper 2x2. This latter change is to focus more on hoisting rather then caching.

It also includes 2 smaller fixes:
a) layer's that have an image filter are no longer atlased (b.c. doing so complicates applying the image filter)

b) the result of clipping the layer's bounds to the current clip is used as the hoisted layer's size. This reduces the amount of pixels drawn to match a normal (non-hoisted) draw pass.

Review URL: https://codereview.chromium.org/640773004
/external/skia/src/gpu/GrLayerCache.cpp
e30597375c19dfb5197fd065a3d1768401eb00fa 14-Oct-2014 bsalomon <bsalomon@google.com> Remove uses of GrAutoScratchTexture.

Rename GrContext::lockAndRefScratchTexture to refScratchTexture.

GrSurface::writePixels returns bool instead of void.

BUG=skia:2889

Review URL: https://codereview.chromium.org/638403003
/external/skia/src/gpu/GrLayerCache.cpp
84ac082fd457dc49e22290662ad37249718279e6 14-Oct-2014 robertphillips <robertphillips@google.com> Add GrLayerCache::writeLayersToDisk

I'm tired of readding this capability whenever I need to debug.

Review URL: https://codereview.chromium.org/654653006
/external/skia/src/gpu/GrLayerCache.cpp
7bb9ed756e8663afe68e1a5fc680d57f83a31fea 10-Oct-2014 robertphillips <robertphillips@google.com> Fix bug in GrCachedLayer reuse

In the new MultiPictureDraw tests a single hoisted layer is reused multiple times. The previous plot locking scheme allowed GrCachedLayer objects to be aggressively deleted prematurely leaving the reusing GrHoistedLayer objects with dangling pointers.

This CL changes adds a new pseudo-ref to GrCachedLayer. (It can't be a real ref since the cached layers aren't deleted when it goes to 0).

NOTRY=true

Committed: https://skia.googlesource.com/skia/+/5c481666c9678f43e039ad605457be3854cf8de3

Review URL: https://codereview.chromium.org/640323002
/external/skia/src/gpu/GrLayerCache.cpp
a32c6bce1b726b6038b97bb64daf8b1fb1eb94e0 09-Oct-2014 robertphillips <robertphillips@google.com> Revert of Fix bug in plot locking system (patchset #3 id:80001 of https://codereview.chromium.org/640323002/)

Reason for revert:
Failing unit tests

Original issue's description:
> Fix bug in plot locking system
>
> In the new MultiPictureDraw tests a single hoisted layer is reused multiple times. The previous plot locking scheme allowed GrCachedLayer objects to be aggressively deleted prematurely leaving the reusing GrHoistedLayer objects with dangling pointers.
>
> This CL changes the plot locking system to add a pseudo-ref for each GrHoistedLayer.
>
> NOTRY=true
>
> Committed: https://skia.googlesource.com/skia/+/5c481666c9678f43e039ad605457be3854cf8de3

TBR=jvanverth@google.com
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/643673004
/external/skia/src/gpu/GrLayerCache.cpp
5c481666c9678f43e039ad605457be3854cf8de3 09-Oct-2014 robertphillips <robertphillips@google.com> Fix bug in plot locking system

In the new MultiPictureDraw tests a single hoisted layer is reused multiple times. The previous plot locking scheme allowed GrCachedLayer objects to be aggressively deleted prematurely leaving the reusing GrHoistedLayer objects with dangling pointers.

This CL changes the plot locking system to add a pseudo-ref for each GrHoistedLayer.

NOTRY=true

Review URL: https://codereview.chromium.org/640323002
/external/skia/src/gpu/GrLayerCache.cpp
bcf0a52d4f4221b158e68a06ba0c4cc4db011060 08-Oct-2014 bsalomon <bsalomon@google.com> GrResourceCache2 manages scratch texture.

BUG=skia:2889

Review URL: https://codereview.chromium.org/608883003
/external/skia/src/gpu/GrLayerCache.cpp
9323b8b8e16df4adcd63ee8496a6382e8df535c9 07-Oct-2014 Brian Salomon <bsalomon@google.com> Revert "GrResourceCache2 manages scratch texture."

This reverts commit d14e1a27643125bfef37fa0ed314b64c1fae22b7.
/external/skia/src/gpu/GrLayerCache.cpp
d14e1a27643125bfef37fa0ed314b64c1fae22b7 07-Oct-2014 bsalomon <bsalomon@google.com> GrResourceCache2 manages scratch texture.

BUG=skia:2889

Review URL: https://codereview.chromium.org/608883003
/external/skia/src/gpu/GrLayerCache.cpp
410dd051c3a05ed6f6ef1c501b95a849930cd353 06-Oct-2014 robertphillips <robertphillips@google.com> Fix some incorrect assumptions in GrLayerCache.cpp

Review URL: https://codereview.chromium.org/630173002
/external/skia/src/gpu/GrLayerCache.cpp
dbe6074a06efc5fb6883bb5e4f251ed67c8c0ab4 30-Sep-2014 robertphillips <robertphillips@google.com> Revert of GrResourceCache2 manages scratch texture. (patchset #14 id:260001 of https://codereview.chromium.org/608883003/)

Reason for revert:
Turning bots red:
Nanobench seems to be uniformly failing on Android
(http://108.170.220.21:10117/builders/Perf-Android-Venue8-PowerVR-x86-Release/builds/99/steps/RunNanobench/logs/stdio)

Ubuntu GTX660 32bit is failing in both Debug and Release on GM generation (it appears to be out of memory) (http://108.170.220.120:10117/builders/Test-Ubuntu12-ShuttleA-GTX660-x86-Debug/builds/2457/steps/GenerateGMs/logs/stdio)

Original issue's description:
> GrResourceCache2 manages scratch texture.
>
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/3d398c876440deaab39bbf2a9b881c337e6dc8d4

R=bsalomon@google.com
TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/611383003
/external/skia/src/gpu/GrLayerCache.cpp
3d398c876440deaab39bbf2a9b881c337e6dc8d4 30-Sep-2014 bsalomon <bsalomon@google.com> GrResourceCache2 manages scratch texture.

BUG=skia:
R=robertphillips@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/608883003
/external/skia/src/gpu/GrLayerCache.cpp
ed42059d2f97d4f8d247af3cbf5dc290c32785eb 29-Sep-2014 robertphillips <robertphillips@google.com> Move offset and CTM from LayerCache Key to per-hoisted-layer info

This CL reduces the amount of information used in the layer cache key:
- the stop value isn't needed since the start value uniquely identifies the layer in the picture.
- only the upper-left 2x2 portion of the CTM should be used as a key for looking up cached layers.
- individual layers can be redraw in different locations so the final offset cannot be a part of the key.

Since this data is no longer stored in the cached layer, but is still required to draw the cached layer, it is now stored in the per-layer information (i.e., HoistedLayer).

This is split out of (Fix sub-picture layer rendering bugs - https://codereview.chromium.org/597293002/).

BUG=skia:2315
R=egdaniel@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/609403003
/external/skia/src/gpu/GrLayerCache.cpp
4aa6dfc0b77af9ac298bb9d48991b72a2fec00b2 17-Sep-2014 robertphillips <robertphillips@google.com> Separate replacement creation from layer discovery

This is a simple refactoring that sets the stage for eliminating GrReplacements::ReplacementInfo and splitting up EXPERIMENTAL_drawPicture to support multi picture draw.

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/559603004
/external/skia/src/gpu/GrLayerCache.cpp
4815fe5a0a497b676677fb4e4a0f05c511855490 16-Sep-2014 robertphillips <robertphillips@google.com> Fix bug in layer hoisting transition to SkRecord backend

Care must be taken when setting up the initial CTM matrix for partial SkRecord playbacks b.c. all the setMatrix calls will concatenate with the initial matrix (which may be different then the CTM that is required to draw correctly).

R=mtklein@google.com, bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/549143003
/external/skia/src/gpu/GrLayerCache.cpp
49f085dddff10473b6ebf832a974288300224e60 05-Sep-2014 bsalomon <bsalomon@google.com> "NULL !=" = NULL

R=reed@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/544233002
/external/skia/src/gpu/GrLayerCache.cpp
c8dc1f74b6cdda9a43a638292a608c59c1d72d80 21-Aug-2014 bsalomon <bsalomon@google.com> Add GrResourceCache2.

Currently it just replaces GrGpu as the owner of the linked list of resources.

Committed: https://skia.googlesource.com/skia/+/94ce9ac8624dbb45656b8f5c992fad9c9ff3ee5f

R=mtklein@google.com, robertphillips@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/481443002
/external/skia/src/gpu/GrLayerCache.cpp
1d89ddc4a3aad153501cfdc93bc1d61eb49157f4 19-Aug-2014 bsalomon <bsalomon@google.com> Revert of Add GrResourceCache2. (patchset #4 of https://codereview.chromium.org/481443002/)

Reason for revert:
Likely caused a leak detected in Chromium after last Skia roll.

Original issue's description:
> Add GrResourceCache2.
>
> Currently it just replaces GrGpu as the owner of the linked list of resources.
>
> Committed: https://skia.googlesource.com/skia/+/94ce9ac8624dbb45656b8f5c992fad9c9ff3ee5f

R=mtklein@google.com, robertphillips@google.com
TBR=mtklein@google.com, robertphillips@google.com
NOTREECHECKS=true
NOTRY=true

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/477323006
/external/skia/src/gpu/GrLayerCache.cpp
94ce9ac8624dbb45656b8f5c992fad9c9ff3ee5f 19-Aug-2014 bsalomon <bsalomon@google.com> Add GrResourceCache2.

Currently it just replaces GrGpu as the owner of the linked list of resources.

R=robertphillips@google.com, mtklein@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/481443002
/external/skia/src/gpu/GrLayerCache.cpp
6f294af43bcd94ed9616a7e4f5892589813d0a01 18-Aug-2014 robertphillips <robertphillips@google.com> Refactor GrLayerCache for new API

The only substantive change in this CL is skipping atlasing
for any layers that are involved in nesting. Prior versions
have allowed nesting layers to be atlased.

--------------------------------------------------------

All times are on Windows with a repeat count of 200.
Format is: <time in ms> (<# of glBindframebuffer calls>)

How to interpret this:

For the boogie page:

both columns should be the same (since boogie has no
nested layers)
without the new API the tiled case doesn't show any real
benefit from hoisting

For the carsvg page:

The nesting change does increase the number of FBO
switches but doesn't kill performance
Because of the location & size of the layers the
tile case does show some improvement (even
without the new API)

boogie
-------

w/o nested change w/ nested change

simple 5.62 (811) N/A

tiled 7.72 (811) N/A

simple w/ hoisting 5.23 (409) 5.77 (409)
(but no caching)

tiled w/ hoisting 7.57 (809) 7.49 (809)
(but no caching)

carsvg
------

w/o nested change w/ nested change

simple 60.37 (141990) N/A

tiled 115.13 (256929) N/A

simple w/ hoisting 41.57 (64570) 42.82 (72279)
(but no caching)

tiled w/ hoisting 84.24 (154352) 84.71 (165630)
(but no caching)

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/476833004
/external/skia/src/gpu/GrLayerCache.cpp
0c4233285919c10df63c6cb207e580a7d1ff66b4 31-Jul-2014 robertphillips <robertphillips@google.com> Add CTM to the cached layers' key and reduce render target pingponging in layer pre-rendering

The CTM is required on the key so we will re-render when necessary.
The SkGpuDevice change ensures big layers in the midst of atlas-able layers don't cause a render target switch.

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/433553002
/external/skia/src/gpu/GrLayerCache.cpp
ed6f03e5edea3fb803ac937184796a5bef65cd9b 30-Jul-2014 robertphillips <robertphillips@google.com> Fix ref counting of cached layer's texture

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/431603002
/external/skia/src/gpu/GrLayerCache.cpp
09dde64628fcbf611891fa293c144835c7dfa644 29-Jul-2014 robertphillips <robertphillips@google.com> Now always use Atlas for layer cache

This is setup for running cluster telemetry tests

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/429593002
/external/skia/src/gpu/GrLayerCache.cpp
320c92380fe6a43dffbcd3f9e7c99897da44298d 29-Jul-2014 robertphillips <robertphillips@google.com> Add plot-based purging to GrLayerCache

This CL allows a GrPlot full of atlased layer to be purged from the atlas to make room for new layers.

R=jvanverth@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/411703003
/external/skia/src/gpu/GrLayerCache.cpp
d771f6bc273457bc7aa95938ac326dfbbf876e1a 22-Jul-2014 robertphillips <robertphillips@google.com> Add auto purging for SkPicture-related Ganesh resources (esp. layers)

This is intended to lower the bookkeeping burden for the Layer Caching feature. Cached layers are now automatically purged when a picture is deleted.

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/408923002
/external/skia/src/gpu/GrLayerCache.cpp
3d533ac917eaadf2fb3561f57d7266d8c0e665fd 20-Jul-2014 robertphillips <robertphillips@google.com> Replace GrTHash with SkTDynamicHash

Mike: SkTDynamicHash changes
Brian: Ganesh changes

This removes three instances of GrTHash leaving the ones in GrTextStrike.h

R=mtklein@google.com, bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/402693003
/external/skia/src/gpu/GrLayerCache.cpp
261b8a98dc7378989ba8fa9c06b728e89162862b 17-Jul-2014 robertphillips <robertphillips@google.com> Make GrLayerCache use multiple plots in its atlas

Until we have a recycling Rectanizer the atlas purging must occur at the GrPlot level. This CL breaks the atlas into four plots to give some room for purging (without trashing the entire atlas).

This is calved off of (Add atlased layer purging - https://codereview.chromium.org/367073002/)

R=jvanverth@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/397873004
/external/skia/src/gpu/GrLayerCache.cpp
21048b588faa6a1c84949603ba82d9d4ba2f0cdd 16-Jul-2014 robertphillips <robertphillips@google.com> Always have GrLayer's rect be valid

This CL just makes atlasing easier/clearer since there is a separate atlased query method. Not using the rect as a signal also simplifies the rendering of the layer in SkGpuDevice.cpp.

This is calved off from (Add atlased layer purging - https://codereview.chromium.org/367073002/)

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/384233002
/external/skia/src/gpu/GrLayerCache.cpp
952841bf41a81228c23d16c7204b458abe0d7136 30-Jun-2014 robertphillips <robertphillips@google.com> Begin atlasing

This CL makes it possible for pulled-forward-layers to be atlased. It currently has a couple glaring limitations (which is why it is disabled):

1) the atlased layers cannot be purged nor aged out
2) the texture backing the atlas is not pulled from (or returned to) the resource cache

#1 is on hold until we have a recycling rectanizer

A separate major limitation (the non-atlased layers aren't cached) is blocked until we can transmute entries in the resource cache from scratch to non-scratch while potentially preserving their contents.

Committed: https://skia.googlesource.com/skia/+/55e61f0ef4e5c8c34ac107deaadc9b4ffef3111b

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/354533004
/external/skia/src/gpu/GrLayerCache.cpp
e462f2bed33283862bb983c67776a47c5a6acb01 30-Jun-2014 robertphillips <robertphillips@google.com> Revert of Begin atlasing (https://codereview.chromium.org/354533004/)

Reason for revert:
Sigh

Original issue's description:
> Begin atlasing
>
> This CL makes it possible for pulled-forward-layers to be atlased. It currently has a couple glaring limitations (which is why it is disabled):
>
> 1) the atlased layers cannot be purged nor aged out
> 2) the texture backing the atlas is not pulled from (or returned to) the resource cache
>
> #1 is on hold until we have a recycling rectanizer
>
> A separate major limitation (the non-atlased layers aren't cached) is blocked until we can transmute entries in the resource cache from scratch to non-scratch while potentially preserving their contents.
>
> Committed: https://skia.googlesource.com/skia/+/55e61f0ef4e5c8c34ac107deaadc9b4ffef3111b

R=bsalomon@google.com
TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/359953002
/external/skia/src/gpu/GrLayerCache.cpp
d9cf38aeaf64a23c26f3927f97c33e14fbefad35 30-Jun-2014 robertphillips <robertphillips@google.com> Revert of Fix memory leak in "Begin atlasing" (https://codereview.chromium.org/361663002/)

Reason for revert:
Sigh

Original issue's description:
> Fix memory leak in (Begin atlasing https://codereview.chromium.org/354533004/)
>
> TBR=bsalomon@google.com
>
> Committed: https://skia.googlesource.com/skia/+/40d9c0e331fe2b76b4e13ca6cdf1ea50451ba6cc

R=bsalomon@google.com
TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/360663002
/external/skia/src/gpu/GrLayerCache.cpp
40d9c0e331fe2b76b4e13ca6cdf1ea50451ba6cc 30-Jun-2014 robertphillips <robertphillips@google.com> Fix memory leak in (Begin atlasing https://codereview.chromium.org/354533004/)

R=bsalomon@google.com
TBR=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/361663002
/external/skia/src/gpu/GrLayerCache.cpp
55e61f0ef4e5c8c34ac107deaadc9b4ffef3111b 30-Jun-2014 robertphillips <robertphillips@google.com> Begin atlasing

This CL makes it possible for pulled-forward-layers to be atlased. It currently has a couple glaring limitations (which is why it is disabled):

1) the atlased layers cannot be purged nor aged out
2) the texture backing the atlas is not pulled from (or returned to) the resource cache

#1 is on hold until we have a recycling rectanizer

A separate major limitation (the non-atlased layers aren't cached) is blocked until we can transmute entries in the resource cache from scratch to non-scratch while potentially preserving their contents.

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/354533004
/external/skia/src/gpu/GrLayerCache.cpp
1d86ee8363018d71245d23573619473ae7e7d1c9 25-Jun-2014 robertphillips <robertphillips@google.com> Rename GrAtlasMgr to GrAtlas (and other cleanup)

This CL also renames the old GrAtlas to ClientPlotUsage and moves it into the new GrAtlas.

R=jvanverth@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/355673002
/external/skia/src/gpu/GrLayerCache.cpp
4ec84da746d66e1bcb76ab2f8b94602b8e966589 24-Jun-2014 robertphillips <robertphillips@google.com> Move allocation of texture from SkGpuDevice to GrLayerCache

In order to atlas the layers the GrLayerCache needs to be given more control over where a given layer's texture is allocated (i.e., it could be a raw scratch texture or in the cache).

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/350183006
/external/skia/src/gpu/GrLayerCache.cpp
9b14f26d0f3a974f3dd626c8354e1db1cfcd322f 04-Jun-2014 robertphillips <robertphillips@google.com> Alter SkCanvas::drawPicture (devirtualize, take const SkPicture, take pointer)

R=reed@google.com, bsalomon@google.com, mtklein@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/313613004
/external/skia/src/gpu/GrLayerCache.cpp
7801faaab9bf7dd0ac67e859c4e284e74f7bd46f 14-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Add CPU backing store for GrAtlas to reduce texture uploads.

This change creates a temporary copy of each GrPlot on the CPU
side. As we add glyphs to a plot, a dirty rectangle is tracked,
and just before we render text we upload all of the dirty areas
to the atlas texture. Once a plot is nearly full, we assume that
we may only be adding one or two glyphs before rendering, so we
delete the CPU backing memory to save space, and upload directly.

BUG=366225
R=robertphillips@google.com

Author: jvanverth@google.com

Review URL: https://codereview.chromium.org/269423007

git-svn-id: http://skia.googlecode.com/svn/trunk@14729 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/gpu/GrLayerCache.cpp
365cd31a65f7dff9947693cd1eab790ada753ed5 11-Apr-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Rename GrAtlasedLayer to GrCachedLayer (since not all cached layers are atlased)

This is mainly a renaming CL but it does add a ref-counted ptr to the backing GrTexture for non-atlased layers (the only kind working right now)

R=jvanverth@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/233703003

git-svn-id: http://skia.googlecode.com/svn/trunk@14152 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/gpu/GrLayerCache.cpp
2b4e370a2fe00168838e43f5a78ccc3b371609f5 07-Apr-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Convert SkPicture's generation ID to a unique ID

This CL addresses linger code review comments on r14037 (Add generation ID to SkPicture https://codereview.chromium.org/222683002/)

R=reed@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/225283014

git-svn-id: http://skia.googlecode.com/svn/trunk@14079 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/gpu/GrLayerCache.cpp
a9157727f7ac11dffe5780a0cfdb6d2bbb179373 03-Apr-2014 skia.committer@gmail.com <skia.committer@gmail.com@2bbb7eff-a529-9590-31e7-b0007b416f81> Sanitizing source files in Housekeeper-Nightly

git-svn-id: http://skia.googlecode.com/svn/trunk@14039 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/gpu/GrLayerCache.cpp
e930a075625d3d90c023c2570a6a4cae1a4b484f 03-Apr-2014 robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> Add a GrLayerCache to GrContext

https://codereview.chromium.org/217343006/



git-svn-id: http://skia.googlecode.com/svn/trunk@14038 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/gpu/GrLayerCache.cpp