aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
Commit message (Collapse)AuthorAge
* Temporarily revert just Multiply to see if that's the source of NEON diffs.Gravatar mtklein2015-05-14
| | | | | | | | Local testing is confusing and inconclusive. Pulling out the big guns. BUG=skia: Review URL: https://codereview.chromium.org/1129293005
* Implement support for non-scale/translate CTM in image filters.Gravatar reed2015-05-14
| | | | | | | | | | Clone with tweaks of https://codereview.chromium.org/986623003/ pre-cl to guard chrome here: https://codereview.chromium.org/1133403003/ BUG=skia:3288 Review URL: https://codereview.chromium.org/1140943004
* Perform SkPicture analysis lazily.Gravatar mtklein2015-05-13
| | | | | | | | | | I realized when writing the comment on https://crrev.com/1135363002/ that I'd really just sketched out the entire thing, so I couldn't help but actually write up a working CL. How does this do for your benchmark? BUG=chromium:487075 Review URL: https://codereview.chromium.org/1130123006
* Sk4px: SrcATop, DstATop, Xor, MultiplyGravatar mtklein2015-05-13
| | | | | | | | | | SSE runs 2-3x faster (than 4f), NEON runs 1.2-1.4x faster (than existing NEON). Small diffs on {aarectmodes, imagefilters_xfermodes, hairmodes, mixed_xfermodes} only on AA edges due to precision drop. BUG=skia: Review URL: https://codereview.chromium.org/1132853005
* Revert of Implement support for non-scale/translate CTM in image filters. ↵Gravatar reed2015-05-13
| | | | | | | | | | | | | | | | | | | | | | | | | (patchset #4 id:60001 of https://codereview.chromium.org/1120043002/) Reason for revert: don't reference layer after its deleted Original issue's description: > Implement support for non-scale/translate CTM in image filters. > > Implemented by extracting out the non-scale/translate components > and applying that post-filter as an SkMatrixImageFilter. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/4f12b8bd2cb43daeffa4d1c53120ae94c5ccf486 TBR=robertphillips@google.com,senorblanco@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1128133005
* Implement support for non-scale/translate CTM in image filters.Gravatar reed2015-05-13
| | | | | | | | | Implemented by extracting out the non-scale/translate components and applying that post-filter as an SkMatrixImageFilter. BUG=skia: Review URL: https://codereview.chromium.org/1120043002
* Sk4px: alphas() and Load[24]Alphas()Gravatar mtklein2015-05-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | alphas() extracts the 4 alphas from an existing Sk4px as another Sk4px. LoadNAlphas() constructs an Sk4px from N packed alphas. In both cases, we end up with 4x repeated alphas aligned with their pixels. alphas() A0 R0 G0 B0 A1 R1 G1 B1 A2 R2 G2 B2 A3 R3 G3 B3 -> A0 A0 A0 A0 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3 Load4Alphas() A0 A1 A2 A3 -> A0 A0 A0 A0 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3 Load2Alphas() A0 A1 -> A0 A0 A0 A0 A1 A1 A1 A1 0 0 0 0 0 0 0 0 This is a 5-10% speedup for AA on Intel, and wash on ARM. AA is still mostly dominated by the final lerp. alphas() isn't used yet, but it's similar enough to Load[24]Alphas() that it was easier to write all at once. BUG=skia: Review URL: https://codereview.chromium.org/1138333003
* Revert of Font variations. (patchset #21 id:400001 of ↵Gravatar bungeman2015-05-13
| | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1027373002/) Reason for revert: Mac failing to build due to CFNumberType in Chromium Canary. Original issue's description: > Font variations. > > Multiple Master and TrueType fonts support variation axes. > This implements back-end support for axes on platforms which > support it. > > Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97 TBR=reed@google.com,mtklein@google.com,djsollen@google.com,halcanary@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1128913008
* Font variations.Gravatar bungeman2015-05-13
| | | | | | | | Multiple Master and TrueType fonts support variation axes. This implements back-end support for axes on platforms which support it. Review URL: https://codereview.chromium.org/1027373002
* Turn on Sk4px xfermodes when we have NEON too.Gravatar mtklein2015-05-13
| | | | | | | | | | | For SSE, Sk4px is better than Sk4f is better than SkXfermodes_opts_SSE2 (where implemented). For NEON, Sk4px is better than SkXfermodes_opts_arm_neon is better than Sk4f (where implemented). This is a 1.6-1.9x speedup for Plus,Modulate, and Screen for NEON. BUG=skia: Review URL: https://codereview.chromium.org/1128053004
* simplify RawIterGravatar reed2015-05-13
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1137783006
* Plus xfermode using Sk4px.Gravatar mtklein2015-05-12
| | | | | | | | | | | | | | | | | | | Xfermode_Plus runs 4-5x faster. We expect mixed_xfermodes to have a small diff. This is because kFoldCoverageIntoSrcAlpha was incorrectly set to true. This implementation handily beats the Sk4f impl, the portable impl, and the existing SSE2 impl. Reading the SkXfermodes_opts_SSE2.cpp file, I'm pretty confident that we'll be able to beat all SSE2 impls. I believe this impl will beat or match the existing NEON impl too, but that may not be true for more complicated xfermodes. They can take advantage of transposing ARGBARGB... to AAAARRRR.... cheaply and I haven't figured out an abstraction for that yet that doesn't screw SSE. Adds: - MapDstSrc() to Sk4px - saturatedAdd() to SkNi (only implemented as far as it's used). - div255Narrow() BUG=skia: Review URL: https://codereview.chromium.org/1138893002
* Revert of Revert of stop calling SkScalarDiv (patchset #1 id:1 of ↵Gravatar reed2015-05-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1138263002/) Reason for revert: android patched, blink has rolled Original issue's description: > Revert of stop calling SkScalarDiv (patchset #4 id:60001 of https://codereview.chromium.org/1135053002/) > > Reason for revert: > need to wait for Blink roll (and patch android) > > Original issue's description: > > stop calling SkScalarDiv > > > > BUG=skia: > > TBR= > > > > Committed: https://skia.googlesource.com/skia/+/67d71c898249a7af3523b16c6a69895a63bfae0a > > TBR= > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/2629697933b5cc975e45d2a45c48f803fc6cbcec TBR= NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1135693003
* Revert of stop calling SkScalarDiv (patchset #4 id:60001 of ↵Gravatar reed2015-05-12
| | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1135053002/) Reason for revert: need to wait for Blink roll (and patch android) Original issue's description: > stop calling SkScalarDiv > > BUG=skia: > TBR= > > Committed: https://skia.googlesource.com/skia/+/67d71c898249a7af3523b16c6a69895a63bfae0a TBR= NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1138263002
* Make SkAdvancedTypefaceMetrics private.Gravatar reed2015-05-12
| | | | Review URL: https://codereview.chromium.org/1129283003
* stop calling SkScalarDivGravatar reed2015-05-12
| | | | | | | BUG=skia: TBR= Review URL: https://codereview.chromium.org/1135053002
* Sk4pxGravatar mtklein2015-05-12
| | | | | | | | | | Xfermode_SrcOver: SSE: 2.08ms -> 2.03ms (~2% faster) NEON: my N5 is noisy, but there appears to be no perf change BUG=skia: Review URL: https://codereview.chromium.org/1132273004
* remove near one check for arcsGravatar caryclark2015-05-11
| | | | | | | | | Small arcs are pinned by SkSinCos and do not need to be additionally pinned by SkConic::BuildUnitArc. R=reed@google.com, djsollen@google.com Review URL: https://codereview.chromium.org/1133113003
* SkPictureShader: floor scaledSize not to exceed maxTextureSizeGravatar gen.kim2015-05-10
| | | | | | | | | scaledSize becomes larger than maxTextureSize by zoom level because it is rounded. BUG=chromium:485916 Review URL: https://codereview.chromium.org/1129413002
* Remove unused SK_SUPPORT_LEGACY_ROUND_MIPMAP_LEVEL_CHOICE guardGravatar fmalita2015-05-08
| | | | | | R=reed@google.com,robertphillips@google.com Review URL: https://codereview.chromium.org/1135823003
* Revert of Sketch splitting SkPicture into an interface and SkBigPicture. ↵Gravatar reed2015-05-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #22 id:420001 of https://codereview.chromium.org/1112523006/) Reason for revert: speculative revert to fix failures in DEPS roll Original issue's description: > Sketch splitting SkPicture into an interface and SkBigPicture. > > Adds small pictures for drawRect(), drawTextBlob(), and drawPath(). > These cover about 89% of draw calls from Blink SKPs, > and about 25% of draw calls from our GMs. > > SkPicture handles: > - serialization and deserialization > - unique IDs > > Everything else is left to the subclasses: > - playback(), cullRect() > - hasBitmap(), hasText(), suitableForGPU(), etc. > - LayerInfo / AccelData if applicable. > > The time to record a 1-op picture improves a good chunk > (2 mallocs to 1), and the time to record a 0-op picture > greatly improves (2 mallocs to none): > > picture_overhead_draw: 450ns -> 350ns > picture_overhead_nodraw: 300ns -> 90ns > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/c92c129ff85b05a714bd1bf921c02d5e14651f8b TBR=reed@google.com,robertphillips@google.com,mtklein@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1130333002
* Sketch splitting SkPicture into an interface and SkBigPicture.Gravatar mtklein2015-05-07
| | | | | | | | | | | | | | | | | | | | | | | | | | Adds small pictures for drawRect(), drawTextBlob(), and drawPath(). These cover about 89% of draw calls from Blink SKPs, and about 25% of draw calls from our GMs. SkPicture handles: - serialization and deserialization - unique IDs Everything else is left to the subclasses: - playback(), cullRect() - hasBitmap(), hasText(), suitableForGPU(), etc. - LayerInfo / AccelData if applicable. The time to record a 1-op picture improves a good chunk (2 mallocs to 1), and the time to record a 0-op picture greatly improves (2 mallocs to none): picture_overhead_draw: 450ns -> 350ns picture_overhead_nodraw: 300ns -> 90ns BUG=skia: Review URL: https://codereview.chromium.org/1112523006
* use floor for mip-level choiceGravatar reed2015-05-06
| | | | | | | | this chrome change must land first: https://codereview.chromium.org/1131663002/ BUG=skia: Review URL: https://codereview.chromium.org/1131613002
* Make drawImage a virtual on SkDeviceGravatar reed2015-05-06
| | | | | | | | This reverts commit 06dad4b92f1fcb593bc686f9537d3e0d866b2241. BUG=485243 Review URL: https://codereview.chromium.org/1129843003
* Revert of Revert of Revert of Make drawImage a virtual on SkDevice (patchset ↵Gravatar reed2015-05-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #1 id:1 of https://codereview.chromium.org/1126273002/) Reason for revert: still breaking webglconformance Original issue's description: > Revert of Revert of Make drawImage a virtual on SkDevice (patchset #1 id:1 of https://codereview.chromium.org/1124003002/) > > Reason for revert: > retry now that some fixes (onDrawImage overrides) have landed in chrome/blink > > Original issue's description: > > Revert of Make drawImage a virtual on SkDevice (patchset #4 id:60001 of https://codereview.chromium.org/1122643005/) > > > > Reason for revert: > > speculative to see if it unblocks DEPS roll > > > > Original issue's description: > > > Make drawImage a virtual on SkDevice > > > > > > Now with patch for SkDeferredCanvas > > > > > > This reverts commit 119468b71f8f4f45657ab30ead331be665de5a57. > > > > > > BUG=skia: > > > > > > Committed: https://skia.googlesource.com/skia/+/14fe8fd3e53b5e988aac189a8bc3ed28904d85c8 > > > > TBR=robertphillips@google.com,mtklein@google.com,reed@google.com > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=skia: > > > > Committed: https://skia.googlesource.com/skia/+/3538e3bfe2e00bc1b5b48d977fa7adff64d8c96b > > TBR=robertphillips@google.com,mtklein@google.com,reed@chromium.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/620ba3afe09d4173c87537040fe50c1c1895fb1a TBR=robertphillips@google.com,mtklein@google.com,reed@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1127993004
* Revert of Revert of Make drawImage a virtual on SkDevice (patchset #1 id:1 ↵Gravatar reed2015-05-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of https://codereview.chromium.org/1124003002/) Reason for revert: retry now that some fixes (onDrawImage overrides) have landed in chrome/blink Original issue's description: > Revert of Make drawImage a virtual on SkDevice (patchset #4 id:60001 of https://codereview.chromium.org/1122643005/) > > Reason for revert: > speculative to see if it unblocks DEPS roll > > Original issue's description: > > Make drawImage a virtual on SkDevice > > > > Now with patch for SkDeferredCanvas > > > > This reverts commit 119468b71f8f4f45657ab30ead331be665de5a57. > > > > BUG=skia: > > > > Committed: https://skia.googlesource.com/skia/+/14fe8fd3e53b5e988aac189a8bc3ed28904d85c8 > > TBR=robertphillips@google.com,mtklein@google.com,reed@google.com > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/3538e3bfe2e00bc1b5b48d977fa7adff64d8c96b TBR=robertphillips@google.com,mtklein@google.com,reed@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1126273002
* Make SkFunction copyable so it can go in containers.Gravatar mtklein2015-05-06
| | | | | | | | | | | | This totally overhauls the implementation to use ordinary inheritance-based type erasure. I give up for now getting my manual vtable shenanigans to work with MSVC. Still those same "expected ; before ), also expected ) before ;" errors. I added support for uninitialized SkFunctions and operator=(), because it was fairly straightforward with this implementation. The main downside here is that I've removed the inline implementation. All SkFunctions involve a heap allocation, even when just wrapping function pointers. BUG=skia: Review URL: https://codereview.chromium.org/1056673002
* Revert of Make drawImage a virtual on SkDevice (patchset #4 id:60001 of ↵Gravatar reed2015-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1122643005/) Reason for revert: speculative to see if it unblocks DEPS roll Original issue's description: > Make drawImage a virtual on SkDevice > > Now with patch for SkDeferredCanvas > > This reverts commit 119468b71f8f4f45657ab30ead331be665de5a57. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/14fe8fd3e53b5e988aac189a8bc3ed28904d85c8 TBR=robertphillips@google.com,mtklein@google.com,reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1124003002
* Make drawImage a virtual on SkDeviceGravatar reed2015-05-05
| | | | | | | | | | Now with patch for SkDeferredCanvas This reverts commit 119468b71f8f4f45657ab30ead331be665de5a57. BUG=skia: Review URL: https://codereview.chromium.org/1122643005
* remove dead code behind BOOL_ONGETINFOGravatar reed2015-05-05
| | | | | | | | | need this to land in chrome first https://codereview.chromium.org/1125573002 BUG=skia: TBR= Review URL: https://codereview.chromium.org/1123473004
* remove dead SK_SUPPORT_LEGACY_CUBIC_CHOPPER codeGravatar reed2015-05-05
| | | | | | | BUG=skia: TBR= Review URL: https://codereview.chromium.org/1116263005
* Revert of Make drawImage a virtual on SkDevice (patchset #3 id:40001 of ↵Gravatar reed2015-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/11188… (patchset #2 id:20001 of https://codereview.chromium.org/1122813002/) Reason for revert: did not update DeferredCanvas Original issue's description: > Make drawImage a virtual on SkDevice (patchset #3 id:40001 of https://codereview.chromium.org/1118823004/)" > > Fixed serialization from prev CL > > This reverts commit 973d1f1f60f2710a268a3165aa4f3460502d4be5. > > BUG=skia:3803 > TBR= > > Committed: https://skia.googlesource.com/skia/+/5392785080001fe737fac9e5801fc2127a78d4fb TBR= NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:3803 Review URL: https://codereview.chromium.org/1123743006
* Fix typeface ids on Mac.Gravatar bungeman2015-05-04
| | | | | | | | | | The current typeface ids with CoreText rely on ATS (which causes memory use issues) or font data (which is unreliable, and will not work with axes and synthetics). This changes the code so that stream fonts never end up in the cache and always get a unique id, and system fonts will be given an id as they are used. Review URL: https://codereview.chromium.org/1125763002
* Make drawImage a virtual on SkDevice (patchset #3 id:40001 of ↵Gravatar reed2015-05-04
| | | | | | | | | | | | | https://codereview.chromium.org/1118823004/)" Fixed serialization from prev CL This reverts commit 973d1f1f60f2710a268a3165aa4f3460502d4be5. BUG=skia:3803 TBR= Review URL: https://codereview.chromium.org/1122813002
* Revert of make drawImage a virtual on SkDevice (patchset #3 id:40001 of ↵Gravatar reed2015-05-04
| | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1118823004/) Reason for revert: need to make serialization work for pictures, now that images are "real" Original issue's description: > make drawImage a virtual on SkDevice > > default impl will turn the Image into a (raster) bitmap and call drawBitmap. > > BUG=skia:3803 > > Committed: https://skia.googlesource.com/skia/+/f603fb3d0e5fa57c3f228d66945bef198b001135 TBR=bsalomon@google.com,robertphillips@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:3803 Review URL: https://codereview.chromium.org/1122803002
* make drawImage a virtual on SkDeviceGravatar reed2015-05-04
| | | | | | | | default impl will turn the Image into a (raster) bitmap and call drawBitmap. BUG=skia:3803 Review URL: https://codereview.chromium.org/1118823004
* SkPictureShader: scale down if width or height is larger than maxTextureSizeGravatar gen.kim2015-05-03
| | | | | | | | | | Grdient renders black because of failure onCreateTexture if one of width or height is larger than maxTextureSize with --force-gpu-rasterization. BUG=chromium:473166 Review URL: https://codereview.chromium.org/1101513004
* remove unneeded SK_SUPPORT_LEGACY_IMAGEFILTER_TO_COLORFILTER flagGravatar reed2015-05-02
| | | | | | | BUG=skia: TBR= Review URL: https://codereview.chromium.org/1120033003
* clean up pre-storage in canvasGravatar reed2015-05-01
| | | | | | | BUG=skia: TBR= Review URL: https://codereview.chromium.org/1117213003
* SkTime: return timezone information; format in ISO-8601Gravatar halcanary2015-05-01
| | | | | | | | | | | Motivation: PDF/A metadata will need the creation date embedded in it. Also, GetDateTime returns local time in Win32. This now behaves the same as on Unix systems. BUG=skia:3110 Review URL: https://codereview.chromium.org/1109593002
* This replaces the texture creation/caching functions on GrContext with a ↵Gravatar bsalomon2015-04-30
| | | | | | 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
* add heuristic to pour small pictures into recordings, rather than ref'ingGravatar reed2015-04-30
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1118693003
* Add missing include to SkPictureContentInfo.Gravatar mtklein2015-04-30
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1113023003
* use pathops utils to improve precision of cubic chopping in scan converterGravatar reed2015-04-30
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1113963002
* Fix build warning: 'this' pointer cannot be null in well-defined C++ code; ↵Gravatar dongseong.hwang2015-04-30
| | | | | | comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare] Review URL: https://codereview.chromium.org/1109933003
* Fix build warning: reference cannot be bound to dereferenced null pointer in ↵Gravatar dongseong.hwang2015-04-30
| | | | | | well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare] Review URL: https://codereview.chromium.org/1110353003
* Use colorfilter instead of imagefilter when possibleGravatar reed2015-04-29
| | | | | | | | needs https://codereview.chromium.org/1115713003 to land first in chrome BUG=skia: Review URL: https://codereview.chromium.org/986353002
* onCreateDevice -> NULL now means the caller should create its own (bitmap) ↵Gravatar reed2015-04-29
| | | | | | | | device BUG=skia: Review URL: https://codereview.chromium.org/1116453002
* minor fixes to cubics code and overall alignment of how bounds and tops are ↵Gravatar caryclark2015-04-29
| | | | | | | | | | | | computed for all curve types All but 17 extended tests work. A helper function is privately added to SkPath.h to permit a test to modify a given point in a path. BUG=skia:3588 Review URL: https://codereview.chromium.org/1107353004
* Straighten out SkPicture::AccelData APIs.Gravatar mtklein2015-04-29
| | | | | | | | | | Must have been we needed them to be weird (mutable, const setter) before. It doesn't look like that's necessary now... we can just pass it to the constructor. BUG=skia: Review URL: https://codereview.chromium.org/1112833003