aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpaceXformer.cpp
Commit message (Collapse)AuthorAge
* add explicit accessor for sRGB singleton colorspacesGravatar Mike Klein2018-07-25
| | | | | | | | | | | | | | SkColorSpace::MakeSRGB().get() is scary, and causes more ref/unref pairs than strictly necessary for these singletons. This time the implementation is still in SkColorSpace.cpp, so these should really work as singletons. Change-Id: I40f2942c8dcde3040663a04c4f5330aca90868ae Reviewed-on: https://skia-review.googlesource.com/143305 Auto-Submit: Mike Klein <mtklein@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Replace nearly all kRespect with kIgnoreGravatar Brian Osman2018-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | - Encoders and decoders always assume kIgnore. - They are less opinionated about F16 and color space, we just trust the color space that's passed in, and put that directly in the image (no sRGB encoding). - SkBitmap and SkPixmap read/write pixels functions were defaulting to kResepct, those are now always kIgnore. - Many other bits of plumbing are simplified, and I added a default of kIgnore to SkImage::makeColorSpace, so we can phase out that argument entirely. - Still need to add defaults to other public APIs that take SkTransferFunctionBehavior. - This makes gold think that we've dramatically changed the contents of all F16 images, but that's because it doesn't understand the (now linear) color space that's embedded. Once we triage them all once, they will work fine (and they'll look perfect in the browser). Bug: skia: Change-Id: I62fa090f96cae1b67d181ce14bd91f34ff2ed747 Reviewed-on: https://skia-review.googlesource.com/140570 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
* Reland "start cleaning up non-skcms SkColorSpaceXforms"Gravatar Mike Klein2018-05-23
| | | | | | | | | | | | | | | | | | | | | | | | This is a reland of 339133f82c30cd3080672db28e6f72c894cba05a Original change's description: > start cleaning up non-skcms SkColorSpaceXforms > > I think this gets rid of > - SkColorSpaceXform_Base > - SkColorSpaceXform_XYZ > - SkColorSpaceXform_A2B > and lots of support code. Might be more left to clean up? > > Change-Id: I560d974d1e879dfd6a63ee2244a3dd88bd495c8a > Reviewed-on: https://skia-review.googlesource.com/129512 > Commit-Queue: Brian Osman <brianosman@google.com> > Auto-Submit: Mike Klein <mtklein@chromium.org> > Reviewed-by: Brian Osman <brianosman@google.com> Change-Id: I33ee0d8bcfd72c401823a2e7d5168c9ecc9a5181 Reviewed-on: https://skia-review.googlesource.com/129624 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
* Revert "start cleaning up non-skcms SkColorSpaceXforms"Gravatar Mike Klein2018-05-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 339133f82c30cd3080672db28e6f72c894cba05a. Reason for revert: broke NinePatchDrawableTest.testGetPadding? stranger things have happened. Original change's description: > start cleaning up non-skcms SkColorSpaceXforms > > I think this gets rid of > - SkColorSpaceXform_Base > - SkColorSpaceXform_XYZ > - SkColorSpaceXform_A2B > and lots of support code. Might be more left to clean up? > > Change-Id: I560d974d1e879dfd6a63ee2244a3dd88bd495c8a > Reviewed-on: https://skia-review.googlesource.com/129512 > Commit-Queue: Brian Osman <brianosman@google.com> > Auto-Submit: Mike Klein <mtklein@chromium.org> > Reviewed-by: Brian Osman <brianosman@google.com> TBR=mtklein@chromium.org,brianosman@google.com Change-Id: I9e76195481b8658b34936aeece278d81c286c0fa No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/129680 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
* start cleaning up non-skcms SkColorSpaceXformsGravatar Mike Klein2018-05-22
| | | | | | | | | | | | | | I think this gets rid of - SkColorSpaceXform_Base - SkColorSpaceXform_XYZ - SkColorSpaceXform_A2B and lots of support code. Might be more left to clean up? Change-Id: I560d974d1e879dfd6a63ee2244a3dd88bd495c8a Reviewed-on: https://skia-review.googlesource.com/129512 Commit-Queue: Brian Osman <brianosman@google.com> Auto-Submit: Mike Klein <mtklein@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com>
* Apply color transform for Lattice fixed colorsGravatar Stan Iliev2017-12-18
| | | | | | | | | | | | This is fixing an issue with nine patch not drawing correctly if there is a color transformaton. Bug: b/69796044 Test: Ran lattice2 test for gbr-8888 Change-Id: Idadc2938222222750f0f8bfb12650569191b7ad9 Reviewed-on: https://skia-review.googlesource.com/83680 Commit-Queue: Stan Iliev <stani@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
* [Reland] More SkColorSpaceXformer cachingGravatar Florin Malita2017-07-10
| | | | | | | | | | | | * apply(SkColorFilter*) * apply(SkImage*) Also add purge logic to minimize caching scope. Change-Id: I295d20f760f8be0c3746858d6f9c73e351f10a36 Reviewed-on: https://skia-review.googlesource.com/22030 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
* Revert "More SkColorSpaceXformer caching"Gravatar Florin Malita2017-07-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 8d1fc16ba6161afc1174e29e30bae4fc9939264f. Reason for revert: looks like it broke a couple of Chrome unit tests - https://uberchromegw.corp.google.com/i/chromium.win/builders/Win%207%20Tests%20x64%20%281%29/builds/26292 Original change's description: > More SkColorSpaceXformer caching > > * apply(SkColorFilter*) > * apply(SkImage*) > > Change-Id: I9b55632edd73dbbc5edb8b5ca9bb5bead1131260 > Reviewed-on: https://skia-review.googlesource.com/21736 > Reviewed-by: Mike Reed <reed@google.com> > Commit-Queue: Florin Malita <fmalita@chromium.org> TBR=mtklein@google.com,herb@google.com,fmalita@chromium.org,reed@google.com Change-Id: I86bc61fca370796125b66419ad89bfe3610b996f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/21980 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* More SkColorSpaceXformer cachingGravatar Florin Malita2017-07-08
| | | | | | | | | | * apply(SkColorFilter*) * apply(SkImage*) Change-Id: I9b55632edd73dbbc5edb8b5ca9bb5bead1131260 Reviewed-on: https://skia-review.googlesource.com/21736 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Minor SkColorSpaceXformer cleanupGravatar Florin Malita2017-07-06
| | | | | | | | | Instead of plugging private fields from the factory, pass to ctor. Change-Id: Iea186e394182bddb6a569de1a05f2e40d6815c80 Reviewed-on: https://skia-review.googlesource.com/21734 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Add an SkColorSpaceXformer image filter cacheGravatar Florin Malita2017-07-06
| | | | | | | | | | | | The cache is scoped with the SkColorSpaceXformer object. This ensures we're not transforming nodes with a degree > 1 multiple times, and preserves the DAG topology. Change-Id: I0b072cdac95f9f1c34e0565ed4f258aba986e1ae Reviewed-on: https://skia-review.googlesource.com/21726 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
* only create new instance if needed for colorspacexformerGravatar Mike Reed2017-07-06
| | | | | | | | | | just an experiment to address performance when imagefilters are cached. Bug: skia: Change-Id: Ic1033c897d0a569b46a339fb3ae7f8f961882953 Reviewed-on: https://skia-review.googlesource.com/21395 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org>
* Reland of SkShaderBaseGravatar Florin Malita2017-05-25
| | | | | | | | | | Introduce a private base class (SkShaderBase), to hide implementation details from the public interface (SkShader). Change-Id: Ib1d76cde880bd51868b97408710f8bb38128e536 Reviewed-on: https://skia-review.googlesource.com/17925 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Revert "SkShaderBase"Gravatar Florin Malita2017-05-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 58a756435ca3700d9766a4580bb0771a9774f603. Reason for revert: g3, Android borkage. Original change's description: > SkShaderBase > > Introduce a private base class (SkShaderBase), to hide > implementation details from the public interface (SkShader). > > Change-Id: If3ec26ca6abc9da20e3f139c11fdc023bdd85176 > Reviewed-on: https://skia-review.googlesource.com/17241 > Commit-Queue: Florin Malita <fmalita@chromium.org> > Reviewed-by: Mike Reed <reed@google.com> > TBR=mtklein@google.com,fmalita@chromium.org,reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I32b012ee466dd006c074593f211f43ed602f1078 Reviewed-on: https://skia-review.googlesource.com/17845 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
* SkShaderBaseGravatar Florin Malita2017-05-24
| | | | | | | | | | Introduce a private base class (SkShaderBase), to hide implementation details from the public interface (SkShader). Change-Id: If3ec26ca6abc9da20e3f139c11fdc023bdd85176 Reviewed-on: https://skia-review.googlesource.com/17241 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
* clean up SkShader friendsGravatar Mike Klein2017-05-10
| | | | | | | | | | | | | | | Many SkShader subclasses are only friends to use makeColorSpace(). Our usual solution to this is to add a method on SkColorSpaceXformer that calls makeColorSpace() for us, so that only SkColorSpaceXformer needs to be a friend. Just a refactor. No image diffs. Change-Id: Icf952b739edf45f2fb8c0c35e353ef2866f4c5cc Reviewed-on: https://skia-review.googlesource.com/16370 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* SkColorFilter::makeColorSpace()Gravatar Mike Klein2017-04-26
| | | | | | | Change-Id: Idea4afac67ef348c2f4e64f4fe6a03704a86652f Reviewed-on: https://skia-review.googlesource.com/14375 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Make SkColorSpaceXformer::apply(SkPaint) safe to call recursivelyGravatar Matt Sarett2017-04-25
| | | | | | | | | | | | | Before, we would stomp on the original paint in the recursive call. This fixes 4 gbr-8888 gms. Currently, this only affects loopers and SkPaintImageFilter. Bug: skia:6516 Change-Id: Ic47d637a912370c0a1ae8ef3282ad7d15d9902e3 Reviewed-on: https://skia-review.googlesource.com/14182 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* xform saveLayer() backdropGravatar Mike Klein2017-04-25
| | | | | | | | | | | | | Just noticed this TODO is easy now. This doesn't seem to change any GMs, and definitely isn't used by Chrome or Android... this is just for completeness. It's also definitely correct to unfurl pictures. Change-Id: Ida6e43788d1de7a9452dad47aea8a5fbe41a1f46 Reviewed-on: https://skia-review.googlesource.com/14276 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com>
* SkColorSpaceXformer: Add SkShader::makeColorSpace()Gravatar Matt Sarett2017-04-19
| | | | | | | | | | | | | | | Just a refactor - reimplements the shader xforms with makeColorSpace(). 11 gms have diffs. Some are down to floating precision. The old implementation would go float->fixed->float in some cases. Others are due to improvements with gradient shaders inside local matrix shaders. Bug: skia:6516 Change-Id: I424406990c5c58a47833cf4c9ef146cd3ea6c37e Reviewed-on: https://skia-review.googlesource.com/13769 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* SkColorSpaceXformer: Handle compose color filtersGravatar Matt Sarett2017-04-17
| | | | | | | | | | | | | | | We could alternatively use the makeColorSpace() approach that we adoped for loopers and imagefilters, but this seems fine. This should finish xform canvas work on color filters. We have plenty of color filters that do math on colors, but only two that might actually hold colors. Bug: skia:6516 Change-Id: I1aee8c35d6886fdc149d4659d1bac2edc0d32b67 Reviewed-on: https://skia-review.googlesource.com/13649 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Revert "Revert "SkColorSpaceXformer: Preserve local matrix on shaders""Gravatar Matt Sarett2017-04-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a50a11c17ed9037d3e60d8319727583dba803cec. Reason for revert: <INSERT REASONING HERE> Original change's description: > Revert "SkColorSpaceXformer: Preserve local matrix on shaders" > > This reverts commit 5d884b562828ceb13ccacb71bc4581d2020e62bb. > > Reason for revert: Wrong thing to revert > > Original change's description: > > SkColorSpaceXformer: Preserve local matrix on shaders > > > > Also, do not drop unknown shaders. > > > > Fixes cts tests. > > > > b/37161109 > > b/37237678 > > > > Bug: skia: > > Change-Id: I0fd817a4d6461ede0ccdcb8f3cccb255b646b864 > > Reviewed-on: https://skia-review.googlesource.com/13246 > > Commit-Queue: Matt Sarett <msarett@google.com> > > Commit-Queue: Mike Klein <mtklein@chromium.org> > > Reviewed-by: Mike Klein <mtklein@chromium.org> > > > > TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,reviews@skia.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Change-Id: I34e02785ac43a04f8452c458680ea1d6518818a6 > Reviewed-on: https://skia-review.googlesource.com/13258 > Reviewed-by: Matt Sarett <msarett@google.com> > Commit-Queue: Matt Sarett <msarett@google.com> > TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I2dfac7d41caf0e32d3bb5f3f330fff4970c0545e Reviewed-on: https://skia-review.googlesource.com/13260 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* Revert "SkColorSpaceXformer: Preserve local matrix on shaders"Gravatar Matt Sarett2017-04-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5d884b562828ceb13ccacb71bc4581d2020e62bb. Reason for revert: <INSERT REASONING HERE> Original change's description: > SkColorSpaceXformer: Preserve local matrix on shaders > > Also, do not drop unknown shaders. > > Fixes cts tests. > > b/37161109 > b/37237678 > > Bug: skia: > Change-Id: I0fd817a4d6461ede0ccdcb8f3cccb255b646b864 > Reviewed-on: https://skia-review.googlesource.com/13246 > Commit-Queue: Matt Sarett <msarett@google.com> > Commit-Queue: Mike Klein <mtklein@chromium.org> > Reviewed-by: Mike Klein <mtklein@chromium.org> > TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I34e02785ac43a04f8452c458680ea1d6518818a6 Reviewed-on: https://skia-review.googlesource.com/13258 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* SkColorSpaceXformer: Preserve local matrix on shadersGravatar Matt Sarett2017-04-12
| | | | | | | | | | | | | | | | Also, do not drop unknown shaders. Fixes cts tests. b/37161109 b/37237678 Bug: skia: Change-Id: I0fd817a4d6461ede0ccdcb8f3cccb255b646b864 Reviewed-on: https://skia-review.googlesource.com/13246 Commit-Queue: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* SkImageFilter::onMakeColorSpace() - more overridesGravatar Matt Sarett2017-04-10
| | | | | | | | | | | Fills out most of the simple implementations. Improves 22 gms in gbr-8888. Bug: skia: Change-Id: I881ade140993568263de75be51aed240d2de8cc6 Reviewed-on: https://skia-review.googlesource.com/13126 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Add SkImageFilter::makeColorSpace(SkColorSpaceXformer*)Gravatar Matt Sarett2017-04-10
| | | | | | | | | | | Plus two sample implementations. Will fill out the rest if the model looks ok. Bug: skia: Change-Id: Ie24ecd0cbc36263220cb1e506f7812c582554e50 Reviewed-on: https://skia-review.googlesource.com/12100 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* Add SkImage::makeColorSpace() to public APIGravatar Matt Sarett2017-04-05
| | | | | | | | | | | | | Gives Chrome the flexibility to xform and cache SkImages before they reach the SkColorSpaceXformCanvas. Bug: skia: Change-Id: I1f188f385b953b5a958c15578ea66deffb4dc6c5 Reviewed-on: https://skia-review.googlesource.com/11290 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
* Avoid extra bitmap copies in SkColorSpaceXformCanvasGravatar Matt Sarett2017-04-03
| | | | | | | | | | | | | | | | | | Before: ColorCanvasDrawBitmap_sRGB_to_sRGB 5.09us ColorCanvasDrawBitmap_AdobeRGB_to_sRGB 50.7us After: ColorCanvasDrawBitmap_sRGB_to_sRGB 2.43us ColorCanvasDrawBitmap_AdobeRGB_to_sRGB 37.1us BUG=skia:6456 Change-Id: Ie382936c36fd347b59485882cf8f27f315a5d35f Change-Id: Ie382936c36fd347b59485882cf8f27f315a5d35f Reviewed-on: https://skia-review.googlesource.com/11040 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* Make xformer class for SkCSXCanvas, use for draw loopersGravatar Matt Sarett2017-03-30
Fixes draw looper gms in gbr-8888 config. Bug: skia: Change-Id: I0a9306cc0523c82f2ad9516752d79c1d86b1e295 Reviewed-on: https://skia-review.googlesource.com/10644 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>