aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrLayerCache.h
Commit message (Collapse)AuthorAge
* Fix bug in GrCachedLayer reuseGravatar robertphillips2014-10-10
| | | | | | | | | | | | 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
* Revert of Fix bug in plot locking system (patchset #3 id:80001 of ↵Gravatar robertphillips2014-10-09
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix bug in plot locking systemGravatar robertphillips2014-10-09
| | | | | | | | | | 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
* Move offset and CTM from LayerCache Key to per-hoisted-layer infoGravatar robertphillips2014-09-29
| | | | | | | | | | | | | | | | | | 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
* Copy layer-hoisting related SkPaintsGravatar robertphillips2014-09-18
| | | | | | | | | | | | This is intended to disconnect the lifetimes of the optimization data, cached layers and replacement objects. Note that the optimization data already makes a copy of the paint in the SkPicture. Additionally the replacement object will probably go away at some point. R=bsalomon@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/579843002
* Separate replacement creation from layer discoveryGravatar robertphillips2014-09-17
| | | | | | | | | | 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
* Fix bug in layer hoisting transition to SkRecord backendGravatar robertphillips2014-09-16
| | | | | | | | | | 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
* "NULL !=" = NULLGravatar bsalomon2014-09-05
| | | | | | | | R=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/544233002
* Refactor GrLayerCache for new APIGravatar robertphillips2014-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add CTM to the cached layers' key and reduce render target pingponging in ↵Gravatar robertphillips2014-07-31
| | | | | | | | | | | | | 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
* Fix ref counting of cached layer's textureGravatar robertphillips2014-07-30
| | | | | | | | R=bsalomon@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/431603002
* Now always use Atlas for layer cacheGravatar robertphillips2014-07-29
| | | | | | | | | | This is setup for running cluster telemetry tests R=bsalomon@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/429593002
* Add plot-based purging to GrLayerCacheGravatar robertphillips2014-07-29
| | | | | | | | | | 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
* Add auto purging for SkPicture-related Ganesh resources (esp. layers)Gravatar robertphillips2014-07-22
| | | | | | | | | | 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
* Replace GrTHash with SkTDynamicHashGravatar robertphillips2014-07-20
| | | | | | | | | | | | | 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
* Make GrLayerCache use multiple plots in its atlasGravatar robertphillips2014-07-17
| | | | | | | | | | | | 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
* Always have GrLayer's rect be validGravatar robertphillips2014-07-15
| | | | | | | | | | | | 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
* Begin atlasingGravatar robertphillips2014-06-30
| | | | | | | | | | | | | | | | | | | 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
* Revert of Begin atlasing (https://codereview.chromium.org/354533004/)Gravatar robertphillips2014-06-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Begin atlasingGravatar robertphillips2014-06-29
| | | | | | | | | | | | | | | | | 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
* Rename GrAtlasMgr to GrAtlas (and other cleanup)Gravatar robertphillips2014-06-24
| | | | | | | | | | 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
* Move allocation of texture from SkGpuDevice to GrLayerCacheGravatar robertphillips2014-06-24
| | | | | | | | | | 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
* Alter SkCanvas::drawPicture (devirtualize, take const SkPicture, take pointer)Gravatar robertphillips2014-06-04
| | | | | | | | R=reed@google.com, bsalomon@google.com, mtklein@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/313613004
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-04-12
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@14168 2bbb7eff-a529-9590-31e7-b0007b416f81
* Rename GrAtlasedLayer to GrCachedLayer (since not all cached layers are atlased)Gravatar commit-bot@chromium.org2014-04-11
| | | | | | | | | | | | 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
* Convert SkPicture's generation ID to a unique IDGravatar commit-bot@chromium.org2014-04-07
| | | | | | | | | | | | 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
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-04-03
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@14039 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add a GrLayerCache to GrContextGravatar robertphillips@google.com2014-04-03
https://codereview.chromium.org/217343006/ git-svn-id: http://skia.googlecode.com/svn/trunk@14038 2bbb7eff-a529-9590-31e7-b0007b416f81