aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* Fix SDF generation for pixel-aligned pathsGravatar Jim Van Verth2016-12-07
| | | | | | | | | BUG=668550 Change-Id: Ib496db82c7391aca61b31afaeb5445260170cc49 Reviewed-on: https://skia-review.googlesource.com/5549 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Tighten up when a line requires aa in SkGpuDevice.Gravatar Brian Salomon2016-12-07
| | | | | | | | | For some reason this was dropping AA on horizontal/vertical lines at integers rather than half-integers. Change-Id: I291652778d9dfc46072edcb2a557b8aea332afff Reviewed-on: https://skia-review.googlesource.com/5633 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Rewrite GrRenderTargetContext::drawRegion antialias logic.Gravatar Brian Salomon2016-12-06
| | | | | | | | | This will hopefully make a later change that refactors how aa is passed to GrRenderTargetContext a little easier to review. Change-Id: Ie750d237714a0407ec1e5604c0daa080da32519b Reviewed-on: https://skia-review.googlesource.com/5630 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Add comment explaining the derivation of our Mitchell coefficientsGravatar Brian Osman2016-12-06
| | | | | | | | | BUG=skia: Change-Id: I8866df425ee9837e75f0b2f76777f7e5d68fb21d Reviewed-on: https://skia-review.googlesource.com/5624 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Refactor bilerp a little.Gravatar Mike Klein2016-12-06
| | | | | | | | | | | | | | | | | | | 1) rename to bilerp_xy, for x,y in {n[egative], p[ositive}; 2) pull out a save_xy stage to save off the original x,y; 3) also calculate the fractional x,y fx,fy once instead of 4 times. 1) is a pure refactor; 2) adds a stage but otherwise is nothing different; 3) changes images a little bit (fractional parts can vary a bit around powers of two). This extends naturally to naive bicubic using 16 bicubic_xy stages. CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I666de5c21e978abb4feb6e3225e5b5920ba6c5b9 Reviewed-on: https://skia-review.googlesource.com/5550 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* Apply linear gradient premul in 4fGravatar fmalita2016-12-06
| | | | | | | | | | | | | | | | | | | | | | | | (spotted by reed@) Instead of converting to SkPMColor first, apply the premul in 4f and then just store. A modified bench shows a significant speedup: 17/17 MB 1 690µs 695µs 695µs 700µs 0% █▅▁▄▆▅▁▅▆▃ 8888 gradient_linear_clamp_3color 17/17 MB 1 832µs 837µs 839µs 870µs 1% █▁▁▂▂▂▂▂▂▂ 8888 gradient_linear_clamp_hicolor 17/17 MB 1 651µs 659µs 665µs 701µs 3% ▆█▅▁▂▂▁▁▂▂ 8888 gradient_linear_clamp vs. 17/17 MB 1 1.03ms 1.03ms 1.04ms 1.08ms 2% ██▇▁▁▁▁▁▁▁ 8888 gradient_linear_clamp_3color 17/17 MB 1 1.17ms 1.18ms 1.18ms 1.22ms 1% █▄▂▁▁▁▁▁▁▁ 8888 gradient_linear_clamp_hicolor 17/17 MB 1 1.1ms 1.15ms 1.14ms 1.16ms 2% ▇▇▇▇▇▇██▁▁ 8888 gradient_linear_clamp R=reed@google.com,brianosman@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2409583003 Review-Url: https://codereview.chromium.org/2409583003
* Remove dest surface color mode from bitmap controllerGravatar Brian Osman2016-12-06
| | | | | | | | | | | This is already on the bitmap provider - no need to plumb it here. BUG=skia: Change-Id: Ie8c5aef8ea443c58d59598aa66e357ad4c212b25 Reviewed-on: https://skia-review.googlesource.com/5621 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* fStages.data() should always be defined, but UBSAN says NOGravatar Mike Klein2016-12-06
| | | | | | | | | | CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I6aef3ec2bcb85d6ad4830c759a1234ef2e31f32d Reviewed-on: https://skia-review.googlesource.com/5552 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* remove upper limit on number of pipeline stagesGravatar Mike Klein2016-12-06
| | | | | | | | | | | Bicubic is going to blow right past 48. At this point the fixed preallocation strategy is starting to look naive... at 64 we'd allocate just over 1K for every pipeline (and every compiled pipeline). CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Ib2944ead1217123aba2b6347fd9d5315217540c9 Reviewed-on: https://skia-review.googlesource.com/5551 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Use FT_LOAD_BITMAP_METRICS_ONLY flagGravatar Seigo Nonaka2016-12-05
| | | | | | | | | | | | FT_LOAD_BITMAP_METRICS_ONLY flag was introduced for retrieving font metrics without decoding or allocating bitmaps. BUG=skia: Change-Id: I901531501111f24d8b670305379e04c0bc688e6f Reviewed-on: https://skia-review.googlesource.com/5580 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
* Add destination color space to shader ContextRecGravatar Brian Osman2016-12-05
| | | | | | | | | BUG=skia: Change-Id: Ib1920fffd5735ad54a5b785bbc2676ea240bdbfa Reviewed-on: https://skia-review.googlesource.com/5611 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com>
* Make flag values in GrResourceProvider and GrTextureProvider consistentGravatar Brian Salomon2016-12-05
| | | | | | | | | | | BUG=chromium:665673 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5602 Change-Id: I41522aa24cd4b4a7e085132dd9bcbfdd66bd9617 Reviewed-on: https://skia-review.googlesource.com/5602 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Color-correct Gray JPEG image decoding via ICC profiles.Gravatar raftias2016-12-05
| | | | | | | | | | | | | | | | | | SkColorSpace::MakeICC now parses Gray ICC profiles and SkColorSpaceXform_A2B can now render color spaces from Gray ICC profiles. This is not enabled for SkPngCodec as of right now as we don't have any Gray PNG test images currently. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5214 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Iea7136d1c163cd17cf0818af57f93efdbcb577e7 Reviewed-on: https://skia-review.googlesource.com/5214 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Robert Aftias <raftias@google.com>
* Manual byte -> float conversion.Gravatar Mike Klein2016-12-05
| | | | | | | | | | | | | | | | | | | This is a follow-up to reviews.skia.org/5540, which did float -> byte. We use the same trick here exploiting 32768.0f / 0x47000000. The benefit here is smaller than the other CL, but still measurable. The exchange here is: before: int->float, multiply after: OR, FMA The cost of an FMA is the same as a multiply, so we're basically just replacing int->float conversion with a bitwise OR. CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Ieac2247664afa3ff415aec2b48c21505905bee23 Reviewed-on: https://skia-review.googlesource.com/5542 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Revert "Remove use of makeDeferredRenderTargetContextWithFallback"Gravatar Robert Phillips2016-12-05
| | | | | | | | | | | | | This reverts commit 155b29224d64b5c12bf7fc789edb5c257b6281c8. Reason for revert: https://skia-review.googlesource.com/c/5541/ (Second part of piecemeal revert) seems to have zeroed in on the change that caused the perf regression. Let's see if the changes reverted in this CL are acceptable. Change-Id: I477fe23d84a9c14f87a431ec2b495f617ff410be Reviewed-on: https://skia-review.googlesource.com/5573 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* Fix max/min errorGravatar Matt Sarett2016-12-04
| | | | | | | | | BUG=skia: Change-Id: I6a690e843476e31077a90a8312f6335d8ef230f4 Reviewed-on: https://skia-review.googlesource.com/5544 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* Do not create an SkRawCodec with zero dimensionsGravatar Leon Scroggins III2016-12-02
| | | | | | | | | | | | Add a test BUG=skia:3534 BUG=b/33300701 Change-Id: Ifb3a824a36998c5e626c4ad58466845f49d18ebf Reviewed-on: https://skia-review.googlesource.com/5568 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
* Second part of piecemeal revertGravatar Robert Phillips2016-12-02
| | | | | | | | | | | | | This is a partial revert of https://codereview.chromium.org/2514543002 (Defer more renderTargetContexts in the GPU image filter paths - take 2) I have been unable to reproduce the performance regression in crbug.com/668179 locally so intend to revert the above CL piecemeal. BUG=668179 Change-Id: Iee9d0164f85ae33ff8dfa9b3eb01c07fd825f017 Reviewed-on: https://skia-review.googlesource.com/5541 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Tricky float -> byte conversion in store_8888.Gravatar Mike Klein2016-12-02
| | | | | | | | | | | | | | | | | | | | | In IEEE, for each byte BB, the float 0x470000BB equals 32768.0f + BB*(1/256.0f). So to turn a [0,1] float into a byte, we can - multiply by (255/256.0f) to get into [0,255/256.0f] range, - add 32768.0f to get into [32768.0f, 32768.0f + 255/256.0f] range, - look at the low byte. Those first two of course are an FMA. Using this trick here makes store_8888 measurably faster. Instead of a FMA then float->int trunc, we do an FMA then a bitwise AND. Overall the math goes from 4 FMA + 4 trunc + 3 shift to 4 FMA + 3 AND + 3 shift (we can skip the shift for red and the AND for alpha). As you might guess, AND is cheaper than trunc, so this is a net win. I should be able to follow up with the same trick in reverse in from_8888(). CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I42c8f4a6ea0b6c22160517cf5f9c048f01c9a330 Reviewed-on: https://skia-review.googlesource.com/5540 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Refine constant sRGB and Adobe RGB to D50 matricesGravatar Matt Sarett2016-12-02
| | | | | | | | | | | | | | | | | | The new values are calculated starting with the "true" values, adapted to D50 using the Bradford transform. I don't remember where the old values came from, they've been around forever. It's possible that I just typed in the values that came out of ICC profiles (these would have been imperfect, given that there's a fixed-point -> float conversion happening there). BUG=skia: Change-Id: I8e870266bc8ab5372c3ccf6a5ee6691b2915af43 Reviewed-on: https://skia-review.googlesource.com/5450 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Rebase non-drawing SkCanvas subclasses to SkNoDrawCanvasGravatar Florin Malita2016-12-02
| | | | | | | | | R=reed@google.com,mtklein@google.com Change-Id: I7df84587821db561e262a915afa23108a4a78834 Reviewed-on: https://skia-review.googlesource.com/5508 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Remove SK_ANALYTIC_AA_GUARD flagGravatar Yuqian Li2016-12-02
| | | | | | | | | BUG=skia: Change-Id: I4e10ba7afc76ed41c6c41275f9b6a5dde3a2a4be Reviewed-on: https://skia-review.googlesource.com/5502 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Fix Chrome Linux - temporarily turn off xform pipelineGravatar Matt Sarett2016-12-02
| | | | | | | | | | BUG:670620 Change-Id: Ic481d09a7112ef05f53fa1f94a7c155870c43408 Reviewed-on: https://skia-review.googlesource.com/5501 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Jeremy Roman <jbroman@chromium.org>
* Two (related) changes here:Gravatar brianosman2016-12-02
| | | | | | | | | | | | | | | | | | | | 1) Our older iOS devices failed our sRGB tests, due to precision issues with alpha. At this point, we only test on iPadMini 4, and that appears not to have any problems. 2) iOS devices still don't have the sRGB texture decode extension. But, some clients have no interest in mixing legacy/color-correct rendering, and would like to use sRGB on these devices. This GrContextOptions flag enables sRGB support in those cases. Adjust the test code to produce sRGB capable contexts on these devices, but only for configs that have a color space. (See comment). BUG=skia:4148 Committed: https://skia.googlesource.com/skia/+/9db12d2341f3f8722c8b90b11dd4cce138a8a64e Committed: https://skia.googlesource.com/skia/+/1aeb78c5d978b35b256525b711edd942bce01444 Review-Url: https://codereview.chromium.org/2539993002
* Clamp colors after gamut xform in GaneshGravatar Brian Osman2016-12-02
| | | | | | | | | | | Fixes many blatant errors with glnarrow config BUG=skia: Change-Id: I729cda350ebce126bdac4eb41c91f30294e1c61e Reviewed-on: https://skia-review.googlesource.com/5469 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com>
* SkNf_round, use it in store_565 and store_tables.Gravatar Mike Klein2016-12-02
| | | | | | | | | This gives us a place to bottleneck this sort of conversion. Every time I try to use the rounding float -> int instructions, they're just a little slower than working the 1/2 into the scale with FMA. Weird. Change-Id: I7718112b234b4b38ba6af8fef59a47642021839a Reviewed-on: https://skia-review.googlesource.com/5483 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com>
* use fma in store_8888Gravatar Mike Klein2016-12-02
| | | | | | | | | | | | | I think we just happened not to here. This improves Adobe -> sRGB pipeline conversion by about 3-4%. While at it, unify all the fma() lambdas into SkNf_fma(). I'd have called it fma(), but IIRC there was some sort of name conflict there with type-generic fma() functions from the C math.h or something silly like that. CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Id176671fec27c984efa4703c5be2fb63b7f0b11f Reviewed-on: https://skia-review.googlesource.com/5474 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Rename GrVertexBatch->GrMeshDrawOpGravatar Brian Salomon2016-12-01
| | | | | | | Change-Id: I3ebe5a471477ce1b71c150b0bde4982d113fd8a7 Reviewed-on: https://skia-review.googlesource.com/5468 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* SkColorSpaceXform bug fixes attempt 2Gravatar Matt Sarett2016-12-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (1) Clamping If we're going to clamp (8888 outputs), we need to clamp properly to alpha (not 1) when we premultiply. This fix is made in SkColorSpaceXform_XYZ. An alternative fix would move all clamping out of the store functions, to before the gamma encoding. This generally makes sense, but the "to 2.2 conversion" may introduce NaNs and always needs a clamp. So another fix is to just have an extra clamp in the store 2.2 function. Since we have two pipelines, let's try this one in SkColorSpaceXform_Pipeline :). (2) Correctly handle the memcpy() case. This is not changed from a previous (reverted) CL. Looks like this only ever worked for RGBA inputs, never got updated when we added BGRA inputs. This probably flew under the radar because the clients are smart enough to avoid performing a color xform altogether when the color spaces match. BUG=skia: CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I0b59239d2488ce9fdbe11efbd96567e420bb9813 Reviewed-on: https://skia-review.googlesource.com/5464 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Fix for Fuzzer when AtoBType profiles are empty.Gravatar raftias2016-12-01
| | | | | | | | | | | | | When all A/B/M-curves, the matrix and the CLUT were not there it would crash. There is now a check to avoid that. Past this point it should not be an empty, as SkColorSpaceXform did not make such an assumption. BUG=skia:6023 Change-Id: I099bcef7efac100d438a30bf59d9c170119b8545 Reviewed-on: https://skia-review.googlesource.com/5480 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Robert Aftias <raftias@google.com>
* Skip clamps in color xform pipelines if possible.Gravatar Mike Klein2016-12-01
| | | | | | | | | | | | This does skip clamp_0 when converting sRGB to your default colorspace. Each clamp is ~2% of the pipeline runtime, so it's small, but might as well. Change-Id: I2bb0dadf84759c31cc825f9b6b17680e7aa7d9f3 Reviewed-on: https://skia-review.googlesource.com/5467 Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Revert of Enable sRGB on iOS, make sRGB decode support optional (patchset ↵Gravatar brianosman2016-12-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #12 id:220001 of https://codereview.chromium.org/2539993002/ ) Reason for revert: Command Buffer, too... Original issue's description: > Two (related) changes here: > > 1) Our older iOS devices failed our sRGB tests, due to precision issues > with alpha. At this point, we only test on iPadMini 4, and that appears > not to have any problems. > > 2) iOS devices still don't have the sRGB texture decode extension. But, > some clients have no interest in mixing legacy/color-correct rendering, > and would like to use sRGB on these devices. This GrContextOptions flag > enables sRGB support in those cases. > > Adjust the test code to produce sRGB capable contexts on these devices, > but only for configs that have a color space. (See comment). > > BUG=skia:4148 > > Committed: https://skia.googlesource.com/skia/+/9db12d2341f3f8722c8b90b11dd4cce138a8a64e > Committed: https://skia.googlesource.com/skia/+/1aeb78c5d978b35b256525b711edd942bce01444 TBR=bsalomon@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:4148 Review-Url: https://codereview.chromium.org/2546783005
* Make SkMatrix44:dump() print out a recognizable matrix.Gravatar Mike Klein2016-12-01
| | | | | | | Change-Id: I7b64d8aee335eef39924ab65f46f196892ea2a39 Reviewed-on: https://skia-review.googlesource.com/5465 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Optimized gamma table inversion.Gravatar raftias2016-12-01
| | | | | | | | | | | | | | Brought calculation into a central place so the loop did not have to recalculate everything before the previous entry to find the inverse index. O(n) vs O(n^2). Assumes an increasing (or at least non-decreasing) table gamma just as the previous code did. BUG=skia: Change-Id: I7ea200c06511b3d74745fe4a6e3dde706bbee02f Reviewed-on: https://skia-review.googlesource.com/5402 Commit-Queue: Robert Aftias <raftias@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
* Detect when we can skip clamps on gamut transforms.Gravatar Mike Klein2016-12-01
| | | | | | | | | | This is the same logic from the matrix color filter, scaled down from 4x5 to 3x4. I'm seeing cases in GMs where we can skip clamps in both directions, but never both together. Change-Id: I515c5e207d35ed23f1e267d55460fe4d41e1a8f1 Reviewed-on: https://skia-review.googlesource.com/5456 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Two (related) changes here:Gravatar brianosman2016-12-01
| | | | | | | | | | | | | | | | | | | 1) Our older iOS devices failed our sRGB tests, due to precision issues with alpha. At this point, we only test on iPadMini 4, and that appears not to have any problems. 2) iOS devices still don't have the sRGB texture decode extension. But, some clients have no interest in mixing legacy/color-correct rendering, and would like to use sRGB on these devices. This GrContextOptions flag enables sRGB support in those cases. Adjust the test code to produce sRGB capable contexts on these devices, but only for configs that have a color space. (See comment). BUG=skia:4148 Committed: https://skia.googlesource.com/skia/+/9db12d2341f3f8722c8b90b11dd4cce138a8a64e Review-Url: https://codereview.chromium.org/2539993002
* Reland "Add RasterPipeline implementation for SkColorSpaceXform"Gravatar Matt Sarett2016-12-01
| | | | | | | | | | | | | | | | | | | This is initially turned on for Linux debug builds, which allows us to start testing. Chrome for Android is a really good candidate for this (will appreciate the code size savings), but I'd first like to run some tests to understand the performance/size tradeoffs a little better. BUG:660416 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Ifc80e663767df6bb767abb8b12b1ec5cec644ec5 Reviewed-on: https://skia-review.googlesource.com/5452 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* Revert "SkColorSpaceXform bug fixes"Gravatar Matt Sarett2016-12-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d0fdc0f234b8b55cf418f4db9466d3883deadfb1. Reason for revert: <INSERT REASONING HERE> Original change's description: > SkColorSpaceXform bug fixes > > (1) Clamp properly! > > Finally came to this realization: clamping in the > store functions (after gamma encoding) is ridiculous. > It is impossible to know how to clamp premul values > to alpha when they are already gamma encoded. > > I've moved the clamp out of the store function. > Whew, this actually makes the code look simpler. > > And I expect this to fix some buggy images on Gold! > > (2) Correctly handle the memcpy() case. > > Looks like this only ever worked for RGBA inputs, > never got updated when we added BGRA inputs. > > This probably flew under the radar because the > clients are smart enough to avoid performing a > color xform altogether when the color spaces > match. > > BUG=skia: > > Change-Id: I4870048105efcbecc70b4bd5f77c39537006363e > Reviewed-on: https://skia-review.googlesource.com/5389 > 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: Id9e4cfdaa7b30a3841e83c4cde16aa7d33acc0f2 Reviewed-on: https://skia-review.googlesource.com/5457 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
* Avoid creating std::function in run_pipeline().Gravatar Mike Klein2016-12-01
| | | | | | | | | | | | | | | | | This avoids a malloc/free per SkRasterPipeline::run(), with no downside. $ out/nanobench --benchType skcolorcodec --colorImages images/colorspace/201293.jpg --skps noskps --xform_only --srgb --ms 10000 target: 273µs current: 395µs this CL: 375µs CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Icd62f505f555ebf4ca66ee77a476f59cab68433d Reviewed-on: https://skia-review.googlesource.com/5447 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com>
* Added CMYK support for ICC profiles.Gravatar raftias2016-12-01
| | | | | | | | | | | | | | Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec (the only file that supports CMYK) and SkColorSpaceXform_A2B to allow parsing and color xforming of ICC CMYK images. CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I11e3d17180244281be3eb43fd608609925a7f71e Reviewed-on: https://skia-review.googlesource.com/5444 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* Revert "Add RasterPipeline implementation for SkColorSpaceXform"Gravatar Brian Osman2016-12-01
| | | | | | | | | | | This reverts commit dd19ac7d10c7c00dd6e9b1f4c4c6aae729c7e6d4. Reason for revert: ASAN Change-Id: I59aacc092398c4db40696a8343d657a5ad7c0f66 Reviewed-on: https://skia-review.googlesource.com/5448 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Remove use of makeDeferredRenderTargetContextWithFallbackGravatar Robert Phillips2016-12-01
| | | | | | | | | | | | | This is a partial revert of https://codereview.chromium.org/2514543002 (Defer more renderTargetContexts in the GPU image filter paths - take 2) I have been unable to reproduce the performance regression in crbug.com/668179 locally so intend to revert the above CL piecemeal. BUG=668179 Change-Id: Idf3d66d71c452f5718d7b1d8d945ca7ff46b75d8 Reviewed-on: https://skia-review.googlesource.com/5441 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* Revert of Enable sRGB on iOS, make sRGB decode support optional (patchset ↵Gravatar brianosman2016-12-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #11 id:200001 of https://codereview.chromium.org/2539993002/ ) Reason for revert: ANGLE tests are failing Original issue's description: > Two (related) changes here: > > 1) Our older iOS devices failed our sRGB tests, due to precision issues > with alpha. At this point, we only test on iPadMini 4, and that appears > not to have any problems. > > 2) iOS devices still don't have the sRGB texture decode extension. But, > some clients have no interest in mixing legacy/color-correct rendering, > and would like to use sRGB on these devices. This GrContextOptions flag > enables sRGB support in those cases. > > Adjust the test code to produce sRGB capable contexts on these devices, > but only for configs that have a color space. (See comment). > > BUG=skia:4148 > > Committed: https://skia.googlesource.com/skia/+/9db12d2341f3f8722c8b90b11dd4cce138a8a64e TBR=bsalomon@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:4148 Review-Url: https://codereview.chromium.org/2547603002
* Add RasterPipeline implementation for SkColorSpaceXformGravatar Matt Sarett2016-12-01
| | | | | | | | | | | | | | | | | | | This is initially turned on for Linux debug builds, which allows us to start testing. Chrome for Android is a really good candidate for this (will appreciate the code size savings), but I'd first like to run some tests to understand the performance/size tradeoffs a little better. BUG:660416 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I0fb2512216dfc0bda2e5388f9865318eec22291e Reviewed-on: https://skia-review.googlesource.com/5348 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* SkNoDrawCanvas - a public non-drawing canvas base classGravatar Florin Malita2016-12-01
| | | | | | | | | | | | | | | TODO: - convert SkDeferredCanvas, SkLiteRecorder, etc. to the new base - remove unused SkNoSaveLayerCanvas BUG=chromium:668925 R=reed@google.com,mtklein@google.com Change-Id: Ie9af577477a6b9eaa5ef55523287ad1635dca116 Reviewed-on: https://skia-review.googlesource.com/5349 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* Two (related) changes here:Gravatar brianosman2016-12-01
| | | | | | | | | | | | | | | | | | 1) Our older iOS devices failed our sRGB tests, due to precision issues with alpha. At this point, we only test on iPadMini 4, and that appears not to have any problems. 2) iOS devices still don't have the sRGB texture decode extension. But, some clients have no interest in mixing legacy/color-correct rendering, and would like to use sRGB on these devices. This GrContextOptions flag enables sRGB support in those cases. Adjust the test code to produce sRGB capable contexts on these devices, but only for configs that have a color space. (See comment). BUG=skia:4148 Review-Url: https://codereview.chromium.org/2539993002
* Rename GrDrawBatch->GrDrawOpGravatar Brian Salomon2016-12-01
| | | | | | | Change-Id: I18f520924b8a2548566fd61dbea4e3e12bd253dd Reviewed-on: https://skia-review.googlesource.com/5411 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
* Revert "Added CMYK support for ICC profiles."Gravatar Mike Klein2016-12-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 51c3fcd376c5c9972d9476b5532f6164375a38d1. Reason for revert: ASAN, MSAN both take issue with parse_and_load_gamma() Original change's description: > Added CMYK support for ICC profiles. > > Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel > inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec > (the only file that supports CMYK) and SkColorSpaceXform_A2B to allow > parsing and color xforming of ICC CMYK images. > > BUG=skia: > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5197 > CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD > > > Change-Id: Id6619f63f04071f79cd2d84321857dfa269ad3aa > Reviewed-on: https://skia-review.googlesource.com/5197 > Commit-Queue: Mike Klein <mtklein@chromium.org> > Reviewed-by: Matt Sarett <msarett@google.com> > Reviewed-by: Mike Klein <mtklein@chromium.org> > Reviewed-by: Leon Scroggins <scroggo@google.com> > TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,scroggo@google.com,brianosman@google.com,raftias@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Ib43fef00bc233c0b4fa47ed29040d69601def267 Reviewed-on: https://skia-review.googlesource.com/5423 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Added CMYK support for ICC profiles.Gravatar raftias2016-12-01
| | | | | | | | | | | | | | | | | | | | Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec (the only file that supports CMYK) and SkColorSpaceXform_A2B to allow parsing and color xforming of ICC CMYK images. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5197 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Id6619f63f04071f79cd2d84321857dfa269ad3aa Reviewed-on: https://skia-review.googlesource.com/5197 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Leon Scroggins <scroggo@google.com>
* move all memset() logic into blitterGravatar Mike Klein2016-12-01
| | | | | | | | | | | It's cute in compile_pipeline(), but as before, clearer and simpler in the blitter. CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Ib83ff097e4e057e72aed785797e6ac0029ca5dbf Reviewed-on: https://skia-review.googlesource.com/5399 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>