aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkImageCacherator.h
Commit message (Collapse)AuthorAge
* Fold SkImageCacherator into SkImage_LazyGravatar Brian Osman2017-04-27
| | | | | | | | | | | | | | | SkImageCacherator still exists, but only as an interface implemented (solely) by SkImage_Lazy. The only external clients are GrImageTextureMaker and SkImage_Gpu::getDeferredTextureImageData. This is probably an improvement, but doesn't go as far as I'd hoped. Bug: skia: Change-Id: I6812badfabb6924b025621b21af00cbde9c16cac Reviewed-on: https://skia-review.googlesource.com/14371 Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Remove compressed texture support from cacheratorGravatar Brian Osman2017-04-25
| | | | | | | | | | | All variants of (on)?[rR]efEncoded(Data)? no longer need a GrContext parameter. Bug: skia:5485 skia:4971 Change-Id: If4f5e785718d5522eb3df8588318ccb8a02a5749 Reviewed-on: https://skia-review.googlesource.com/14269 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Name 'client' parameter so comment makes senseGravatar Brian Osman2017-04-25
| | | | | | | | | | Feedback from https://skia-review.googlesource.com/c/14192/ Bug: skia: Change-Id: I8f1f1b57aabb37c476d244414b3b2fa8693594bd Reviewed-on: https://skia-review.googlesource.com/14266 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Simplify SkImageCacherator slightlyGravatar Brian Osman2017-04-24
| | | | | | | | | | | | | | - lockAsBitmap supported reading back textures to a bitmap, but this was only used by one GM. Removed all of that code, and merged the two bitmap functions together. - To make the GM cleaner, don't use SkImageCacherator directly - construct actual images. Bug: skia: Change-Id: Iad17184a02a72f89ccc851fa158764d6c871befa Reviewed-on: https://skia-review.googlesource.com/14192 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Rename SkImage_Generator to SkImage_LazyGravatar Brian Osman2017-04-20
| | | | | | | | | | | | | | This removes a long-standing source of confusion: SkImage_Generator was an image that wrapped an SkImageGenerator (with an SkImageCacherator stuck in the middle). We could choose to rename either one, but SkImageGenerator is public, so take the easy road and rename the private image subclass. Given the existence of SkImage::isLazyGenerated, this name seems appropriate. Bug: skia: Change-Id: I061ece94f48538efb1dc5548010f6ca7d438a69b Reviewed-on: https://skia-review.googlesource.com/13979 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Change bitmapcache to not rely on lockpixels.Gravatar Mike Reed2017-04-11
| | | | | | | | | | | | | | | | | | | | The Rec in the cache is the owner of the pixel memory - discardable or - malloc Each external client has a pixelref that just points to those pixels, and whose destructor will notify the rec. This eliminates the dependency on lockPixels in pixelref, freeing us to remove that entirely from pixelref. Bug: skia: Change-Id: If45ed0ae202a1211336626364235215253e8aa7c Reviewed-on: https://skia-review.googlesource.com/10300 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
* Use SkTransferFunctionBehavior in SkImageGeneratorGravatar Matt Sarett2017-04-03
| | | | | | | | | | | | This fixes SkColorSpaceXformCanvas gms that expect non-linear premuls from the codec. BUG=skia: Change-Id: I5dc236d0cd760c23605a26e9c33ddb18955f9231 Reviewed-on: https://skia-review.googlesource.com/10164 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* Remove kAsIs_CachedFormatGravatar Brian Osman2017-04-03
| | | | | | | | | | | | This was confusing and unnecessary. Added an explicit sBGR format to handle one case. Now the CF always fully describes the color type and transfer function (or it's legacy). Bug: skia: Change-Id: I8f792e8aa18cd2391aa541a9368e345d92bba828 Reviewed-on: https://skia-review.googlesource.com/11013 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Make SkImageCacherator be deferred (take 2)Gravatar Robert Phillips2017-03-23
| | | | | | | | | | | Split out of: https://skia-review.googlesource.com/c/8823/ (Remove GrFragmentProcessor-derived class' GrTexture-based ctors) This is a second pass at: https://skia-review.googlesource.com/c/9945/ (Make SkImageCacherator be deferred) Change-Id: I3451383eed497d1235686e8961087859c7c7bd30 Reviewed-on: https://skia-review.googlesource.com/10034 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Revert "Make SkImageCacherator be deferred"Gravatar Robert Phillips2017-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 801f8b824fee6397422e47537f0f13034ac54ce6. Reason for revert: Failures on Tegra3-based Android devices (so, npot issues) Original change's description: > Make SkImageCacherator be deferred > > Split out of: https://skia-review.googlesource.com/c/8823/ (Remove GrFragmentProcessor-derived class' GrTexture-based ctors) > > Change-Id: I16cf0aea9d887e5ebe053e9b5c94a970dc254beb > Reviewed-on: https://skia-review.googlesource.com/9945 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Robert Phillips <robertphillips@google.com> > TBR=bsalomon@google.com,robertphillips@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Ib143ef86cfad4a221e25145679ba7e48f6f7f3ba Reviewed-on: https://skia-review.googlesource.com/9949 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Make SkImageCacherator be deferredGravatar Robert Phillips2017-03-22
| | | | | | | | | Split out of: https://skia-review.googlesource.com/c/8823/ (Remove GrFragmentProcessor-derived class' GrTexture-based ctors) Change-Id: I16cf0aea9d887e5ebe053e9b5c94a970dc254beb Reviewed-on: https://skia-review.googlesource.com/9945 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Switch SkImageGenerator over to generating GrTextureProxiesGravatar Robert Phillips2017-03-03
| | | | | | | | | | | It does not seem irrational for generateTexture to always receive a valid GrContext. lockAsBitmap can do as it pleases. This is split out of: https://skia-review.googlesource.com/c/8823/ (Remove GrFragmentProcessor-derived class' GrTexture-based ctors) Change-Id: I8aebc813a8a3a7d694b7369c2c9810e2164fe16e Reviewed-on: https://skia-review.googlesource.com/9191 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* return and take SkImageGenerator as unique_ptrGravatar Mike Reed2017-02-15
| | | | | | | | | | BUG=skia: Change-Id: I4bc11042dd1dbf1eabd40af206027bc65acc3186 Reviewed-on: https://skia-review.googlesource.com/8444 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* removed unused code around scaled generatorsGravatar Mike Reed2017-02-15
| | | | | | | | | | BUG=skia: Change-Id: I9e042cd9343e0f29032f84ee17b4b316214ec693 Reviewed-on: https://skia-review.googlesource.com/8403 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com>
* Continue making Ganesh use absolute texture coordinates - take 2Gravatar Robert Phillips2017-01-20
| | | | | | | | | | | | The idea here is that the GrCoordTransform will actually hold a GrTextureProxy (rather than a GrTexture) and then, in GrGLSLPrimitiveProcessor::GetTransformMatrix, use the instantiated width & height (when uploading the transform matrix) Relanding of: https://skia-review.googlesource.com/c/6977/ Change-Id: Ibc9b9e354f7fc23b1a6e6e4fe7c9fe3cef771c02 Reviewed-on: https://skia-review.googlesource.com/7265 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Plumb dst color space in many places, rather than "mode"Gravatar Brian Osman2016-12-09
| | | | | | | | | | | | | | | | | This is less to type in most cases, and gives us more information (for things like picture-backed images, where we need to know all about the destination surface). Additionally, strip out the plumbing entirely for bitmap sources, where we don't need to know anything. BUG=skia: Change-Id: I4deff6c7c345fcf62eb08b2aff0560adae4313da Reviewed-on: https://skia-review.googlesource.com/5748 Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Support decoding images to multiple formats, depending on usageGravatar Brian Osman2016-11-21
| | | | | | | | | | | | | | | | | | | | | | | | Our codec generator will now preserve any asked-for color space, and convert the encoded data to that representation. Cacherator now allows decoding an image to both legacy (nullptr color space), and color-correct formats. In color-correct mode, we choose the best decoded format, based on the original properties, and our backend's capabilities. Preference is given to the native format, when it's already texturable (sRGB 8888 or F16 linear). Otherwise, we prefer linear F16, and fall back to sRGB when that's not an option. Re-land (and fix) of: https://skia-review.googlesource.com/c/4438/ https://skia-review.googlesource.com/c/4796/ BUG=skia:5907 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4838 Change-Id: I20ff972ffe1c7e6535ddc501e2a8ab8c246e4061 Reviewed-on: https://skia-review.googlesource.com/4838 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
* Rename GrTextureParams to GrSamplerParamsGravatar Brian Salomon2016-11-17
| | | | | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4965 Change-Id: I7d52e81c670e92ca96117284f44b274ce3cc3671 Reviewed-on: https://skia-review.googlesource.com/4965 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* External SkImageGenerator APIGravatar Florin Malita2016-11-16
| | | | | | | | | | | | | | | Introduce an SkImageGenerator API to support the implementation of externally-managed image decode and scale caches. BUG=skia:5806 R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4720 Change-Id: Ibfe37af5471f78f28f88f9d5e80938882be1a344 Reviewed-on: https://skia-review.googlesource.com/4720 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
* Revert "Support decoding images to multiple formats, depending on usage"Gravatar Brian Osman2016-11-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit c73a1ecbed64652b3d7aa8dc6face9a2205ce830. Reason for revert: ANGLE and CommandBuffer failures Original change's description: > Support decoding images to multiple formats, depending on usage > > Our codec generator will now preserve any asked-for color space, and > convert the encoded data to that representation. Cacherator now > allows decoding an image to both legacy (nullptr color space), and > color-correct formats. In color-correct mode, we choose the best > decoded format, based on the original properties, and our backend's > capabilities. Preference is given to the native format, when it's > already texturable (sRGB 8888 or F16 linear). Otherwise, we prefer > linear F16, and fall back to sRGB when that's not an option. > > BUG=skia:5907 > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4438 > > Change-Id: I847c243dcfb72d8c0f1f6fc73c09547adea933f0 > Reviewed-on: https://skia-review.googlesource.com/4438 > Reviewed-by: Matt Sarett <msarett@google.com> > Commit-Queue: Brian Osman <brianosman@google.com> > TBR=mtklein@google.com,bsalomon@google.com,msarett@google.com,brianosman@google.com,reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I1818f937464573d601f64e5a1f1eb43f5a778f4e Reviewed-on: https://skia-review.googlesource.com/4832 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Revert "Fix NoGPU compilation"Gravatar Brian Osman2016-11-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d5a78805c5133bc55e07c5da21f8d72b91a3df4f. Reason for revert: This was a patch for an earlier change that's going to be reverted as well. Original change's description: > Fix NoGPU compilation > > All of these functions were written to work without GPU support, just > forgot to compile them in that situation. > > BUG=skia: > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4796 > > Change-Id: Ia23d304f07eb16714390b459dd448bc08402f479 > Reviewed-on: https://skia-review.googlesource.com/4796 > Reviewed-by: Brian Osman <brianosman@google.com> > Reviewed-by: Stan Iliev <stani@google.com> > Commit-Queue: Brian Osman <brianosman@google.com> > Commit-Queue: Stan Iliev <stani@google.com> > TBR=egdaniel@google.com,brianosman@google.com,stani@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Id0b9db355f416c118c0ef95501a6cfdeb083b54e Reviewed-on: https://skia-review.googlesource.com/4831 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Fix NoGPU compilationGravatar Brian Osman2016-11-15
| | | | | | | | | | | | | | | | All of these functions were written to work without GPU support, just forgot to compile them in that situation. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4796 Change-Id: Ia23d304f07eb16714390b459dd448bc08402f479 Reviewed-on: https://skia-review.googlesource.com/4796 Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Stan Iliev <stani@google.com> Commit-Queue: Brian Osman <brianosman@google.com> Commit-Queue: Stan Iliev <stani@google.com>
* Support decoding images to multiple formats, depending on usageGravatar Brian Osman2016-11-15
| | | | | | | | | | | | | | | | | | | | Our codec generator will now preserve any asked-for color space, and convert the encoded data to that representation. Cacherator now allows decoding an image to both legacy (nullptr color space), and color-correct formats. In color-correct mode, we choose the best decoded format, based on the original properties, and our backend's capabilities. Preference is given to the native format, when it's already texturable (sRGB 8888 or F16 linear). Otherwise, we prefer linear F16, and fall back to sRGB when that's not an option. BUG=skia:5907 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4438 Change-Id: I847c243dcfb72d8c0f1f6fc73c09547adea933f0 Reviewed-on: https://skia-review.googlesource.com/4438 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Rename SkSourceGammaTreatment to SkDestinationSurfaceColorModeGravatar Brian Osman2016-11-09
| | | | | | | | | | | | | | | This is much more explicit about what that type represents (are we in legacy mode or not), which also makes it suitable for other (upcoming) usage. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4529 Change-Id: Iacb397c34e7765f1ca86c0195bc622b2be4d9acf Reviewed-on: https://skia-review.googlesource.com/4529 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* Deferred image generator subsettingGravatar fmalita2016-11-04
| | | | | | | | | | Instead of invoking the generator at subset time, instantiate a new SkImage_Generator with its own cacherator but shared generator. R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2462013003 Review-Url: https://codereview.chromium.org/2462013003
* Shared image generatorGravatar fmalita2016-10-27
| | | | | | | | | | | | Introduce a new ref counted class (SharedGenerator), to facilitate SkImageGenerator sharing among multiple cacherators. Plumbing only for now, no actual sharing. R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2451273006 Review-Url: https://codereview.chromium.org/2451273006
* Avoid separate allocation of SkImageCacheratorGravatar fmalita2016-10-27
| | | | | | | | | | Embed directly in SkImage_Generator, and add a helper to handle param validation. R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2453473004 Review-Url: https://codereview.chromium.org/2453473004
* Add new SkSourceGammaTreatment enum, used in situations like mipmap ↵Gravatar brianosman2016-06-06
| | | | | | | | | construction, where we need to know if we should respect (vs. ignore) the gamma encoding of sRGB tagged images. Plumb that extensively. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2037413002 Review-Url: https://codereview.chromium.org/2037413002
* Creating functions for uploading a mipmapped texture.Gravatar cblume2016-02-26
| | | | | | | BUG=476416 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1249543003 Review URL: https://codereview.chromium.org/1249543003
* take gr-context parameter to refEncoded, indicating a desire for only ↵Gravatar reed2016-01-05
| | | | | | | | | | | | | | | gpu-specific formats Prime motivator: - we always call refEncoded on the generator when trying to upload - we call it *before* we ask for raster or YUV - for blink, this call can be very slow, as they have to cons-up their SkData the first time (and grab a mutex to do it) - this parameter will indicate to them that we're only interested in gpu formats, which they will know if they have. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1556333004 Review URL: https://codereview.chromium.org/1556333004
* Stop wrapping images backed by generators as bitmaps in SkGpuDevice (except ↵Gravatar bsalomon2015-12-08
| | | | | | when tiling) Review URL: https://codereview.chromium.org/1510903002
* optimize the disable-caching case for SkImage::readPixelsGravatar reed2015-11-24
| | | | | | | | | | If the client wants no caching, and we haven't already cached it, pass the caller's dst-buffer directly down to the generator, avoiding the (previous) extra memcpy. BUG=skia:4594 Review URL: https://codereview.chromium.org/1473373002
* scaling API on SkPixmapGravatar reed2015-11-23
| | | | | | BUG=skia:4481 Review URL: https://codereview.chromium.org/1463373002
* Pull texture-backed bitmap resampler out of GrTextureParamsAdjuster code ↵Gravatar bsalomon2015-10-29
| | | | | | into its own class. Review URL: https://codereview.chromium.org/1420963008
* Rewrite GrTextureMaker to disentangle bitmap case from base class and give ↵Gravatar bsalomon2015-10-20
| | | | | | | | | | GPU object a say in what copying needs to be done. Committed: https://skia.googlesource.com/skia/+/fcffaf22d697f06f903c3193308f9dc54a959f79 Committed: https://skia.googlesource.com/skia/+/1a197ea31e0aac7ea312e9a6c0d9f5df626b0350 Review URL: https://codereview.chromium.org/1409163002
* Revert recent CLs around GrTextureMaker/GrTextureParamsAdjusterGravatar Brian Salomon2015-10-19
| | | | Review URL: https://codereview.chromium.org/1411353002 .
* Rewrite GrTextureMaker to disentangle bitmap case from base class and give ↵Gravatar bsalomon2015-10-19
| | | | | | | | GPU object a say in what copying needs to be done. Committed: https://skia.googlesource.com/skia/+/fcffaf22d697f06f903c3193308f9dc54a959f79 Review URL: https://codereview.chromium.org/1409163002
* Revert of Rewrite GrTextureMaker to disentangle bitmap case from base class ↵Gravatar egdaniel2015-10-16
| | | | | | | | | | | | | | | | | | | and give GPU object a say in what… (patchset #4 id:60001 of https://codereview.chromium.org/1409163002/ ) Reason for revert: breaking nanobench Original issue's description: > Rewrite GrTextureMaker to disentangle bitmap case from base class and give GPU object a say in what copying needs to be done. > > Committed: https://skia.googlesource.com/skia/+/fcffaf22d697f06f903c3193308f9dc54a959f79 TBR=reed@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1409923003
* Rewrite GrTextureMaker to disentangle bitmap case from base class and give ↵Gravatar bsalomon2015-10-16
| | | | | | GPU object a say in what copying needs to be done. Review URL: https://codereview.chromium.org/1409163002
* Remove params from Cacherator_GrTextureMakerGravatar bsalomon2015-10-15
| | | | Review URL: https://codereview.chromium.org/1403313003
* Remove image usage type enum. Use GrTextureParams instead.Gravatar bsalomon2015-10-12
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1404433002
* Revert[4] of add ImageShader, sharing code with its Bitmap cousinGravatar reed2015-09-30
| | | | | | | | | | Now with GrTextureMaker subclasses to handle npot usage. This reverts commit 476506d070dbc59b158acc1a00c34bff95ab2968. BUG=skia: Review URL: https://codereview.chromium.org/1370223002
* Purge cached resources on SkImage destruction.Gravatar fmalita2015-09-18
| | | | | | | BUG=532981 R=reed@google.com,mtklein@google.com Review URL: https://codereview.chromium.org/1352883004
* Style Change: NULL->nullptrGravatar halcanary2015-08-27
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1316233002 Review URL: https://codereview.chromium.org/1316233002
* make cacherator thread-safeGravatar reed2015-08-26
| | | | | | | | | hoisted from https://codereview.chromium.org/1282363002 as that CL is going to take a while to finish BUG=skia: TBR= Review URL: https://codereview.chromium.org/1313423002
* Add subsets to SkImageGenerator and SkImageCacheratorGravatar reed2015-08-18
| | | | | | | | ... to support subsets in SkImage! BUG=skia: Review URL: https://codereview.chromium.org/1301633002
* some catchup CL revisionsGravatar reed2015-08-13
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1295593002
* Extend SkImageGenerator to support natively generated GrTextures. As part of ↵Gravatar reed2015-08-13
this, added uniqueID() to the generator, and made it be in the same namespace is bitmaps, pixelrefs, images. To do this, create SkImageCacherator, which wraps a generator and provides an interface to get a cached answer for either the raster or texture output of the generator. BUG=skia: Review URL: https://codereview.chromium.org/1291803002