aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jumper
Commit message (Collapse)AuthorAge
* Experimental change to diagnose image diffs in g3Gravatar Mike Reed2017-06-08
| | | | | | | | Bug: skia: Change-Id: I33226a0266093a98083b4c78cdaba402ce3f3929 Reviewed-on: https://skia-review.googlesource.com/19082 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
* use smarter float -> skfixed15 logic everywhereGravatar Mike Klein2017-06-06
| | | | | | | | | | | | | | | | | | | | | | This is the same logic from constant_color, covering all the other places where we convert from float to fixed, e.g. scale_1_float. This isn't quite ideal yet. We replace mulss+cvttss2si for addss+movd, which is great, but this leads to a silly sequence of code: addss %xmm2, %xmm0 movd %xmm0, %r9d movd %r9d, %xmm0 pshuflw $0x0, %xmm0, %xmm0 Those two movd are pointless... Again, all diffs due to switching from truncation to rounding. Change-Id: Icf6f3b6eb370fe41cea0cebcfda0b8907e055f41 Reviewed-on: https://skia-review.googlesource.com/18846 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* less naive lowp constant_colorGravatar Mike Klein2017-06-06
| | | | | | | | | | | This is as good as we can get without switching away from float inputs. All diffs due to rounding (from the +256.0f). Change-Id: I0d314f111d313577ce9078660178be17e865f11e Reviewed-on: https://skia-review.googlesource.com/18845 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
* more easy lowp stagesGravatar Mike Klein2017-06-06
| | | | | | | Change-Id: I8a292bc98135b41ceedb4242451436c3657616fc Reviewed-on: https://skia-review.googlesource.com/18722 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* SkJumper: only omit leaf frame pointersGravatar Mike Klein2017-06-05
| | | | | | | | | This seems to make Instruments work a lot better. Change-Id: I078f005d32e427b4eb31bc92c731e3444f2faffb Reviewed-on: https://skia-review.googlesource.com/18635 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* more lowp blend modesGravatar Mike Klein2017-06-05
| | | | | | | | Change-Id: Id62e989d4278f273c040b159ed4d2fd6a2f209e0 Reviewed-on: https://skia-review.googlesource.com/18627 Reviewed-by: Herb Derby <herb@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* lowp: add some big easy stagesGravatar Mike Klein2017-06-05
| | | | | | | | | | srcover_rgba_8888, lerp_u8, lerp_1_float, scale_u8, scale_1_float... this is enough for _lots_ of drawing. Change-Id: Ibe42adb8b1da6c66db3085851561dc9070556ee3 Reviewed-on: https://skia-review.googlesource.com/18622 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* lowp: add constant_color, swap, move_dst_srcGravatar Mike Klein2017-06-05
| | | | | | | | | | This is enough for us to do some really simple draws. Also add some debug tools to help prioritize porting. Change-Id: I334f8fd2133be1aeec3f3406371a81aa6c184776 Reviewed-on: https://skia-review.googlesource.com/18597 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* add colorGravatar Mike Klein2017-06-05
| | | | | | | Change-Id: Ie85ed7a807603ba627cb7f17de5a423ca9678251 Reviewed-on: https://skia-review.googlesource.com/18594 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* lowp: add move_src_dst and srcoverGravatar Mike Klein2017-06-05
| | | | | | | | | | | | | | This is enough to run the bench SkRasterPipeline_compile. $ ninja -C out monobench; and out/monobench SkRasterPipeline_compile 300 Before: 300 SkRasterPipeline_compile 48.4858ns After: 300 SkRasterPipeline_compile 37.5801ns Change-Id: Icb80348908dfb016826700a44566222c9f7a853c Reviewed-on: https://skia-review.googlesource.com/18595 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* slight streamlining for lowp load_8888 with pshufbGravatar Mike Klein2017-06-05
| | | | | | | | | We can use 2 pshufb to replace 4 unpacks when deinterlacing the colors. Change-Id: I713fbbc94f5cb9eaf14f85323b0ec76dc2246e98 Reviewed-on: https://skia-review.googlesource.com/18531 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* Real fix for stage perf regression.Gravatar Mike Klein2017-06-05
| | | | | | | | | | | | | | | | | When we made start_pipeline() return void, the call into the tail!=0 run of the pipeline became eligble to be a tail-call, and Clang made that choice. This had the side effect of not going through vzeroupper on those tails. We now mark start_pipeline() as inelligible for tail calls when targeting AVX+. All paths go through the vzeroupper at the end. BUG=chromium:729237 Change-Id: I2099931284214f24c67b38979b3ad4b4d10e8bba Reviewed-on: https://skia-review.googlesource.com/18591 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* have start_pipeline() return limit againGravatar Mike Klein2017-06-05
| | | | | | | | | | | | | | | | | | | This is spooky. I don't quite yet understand why, but this makes things much faster. Performance regressed across the board when we no longer needed the value and changed it to return void: https://perf.skia.org/e/?begin=1496176469&keys=6994&xbaroffset=28513 You can see similar regressions following this Chromium bug link. BUG=chromium:729237 Change-Id: I68371b0456014f909acf819aca52aa4f4f187460 Reviewed-on: https://skia-review.googlesource.com/18580 Reviewed-by: Herb Derby <herb@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* don't try lowp in msan buildsGravatar Mike Klein2017-06-04
| | | | | | | | | CQ_INCLUDE_TRYBOTS=skia.primary:Build-Ubuntu-Clang-x86_64-Debug-MSAN Change-Id: I50bcb3a3d8138ce94e3741cac8ceacc9e7e28a20 Reviewed-on: https://skia-review.googlesource.com/18532 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* start on SkJumper lowp modeGravatar Mike Klein2017-06-04
| | | | | | | | | | | | | | | | Just 3 stages implemented so far: load_8888 swap_rb store_8888 That's enough to make the shortest non-trivial pipeline that you see in the new unit test. Change-Id: Iabf90866ab452f7183d8c8dec1405ece2db695dc Reviewed-on: https://skia-review.googlesource.com/18458 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* move load_and_inc() and LazyCtx into SkJumper_misc.hGravatar Mike Klein2017-06-02
| | | | | | | | | | | | This is a no-op refator that'll help keep the interesting diff more focused in the lowp CL. The lowp stages will use these unaltered, so SkJumper_misc.h is a good place for them. Change-Id: I7fb6327ade29ac884194517d94ac4303ed1079e0 Reviewed-on: https://skia-review.googlesource.com/18484 Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* minor refactor to SkRasterPipeline::BuildPipelineGravatar Mike Klein2017-06-02
| | | | | | | | | I don't see any reason to have it be static... Change-Id: I0fdc9c0629e2194c469f7c9c696d1bb55ffbc98a Reviewed-on: https://skia-review.googlesource.com/18455 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* plumb y through to SkJumperGravatar Mike Klein2017-06-01
| | | | | | | | | | | | | | | There'll still be a little more refactoring after this, but this is the main thing we want to do. This makes y available in a general-purpose register in pipeline stages, just like x. Stages that need y (seed_shader and dither) can just use it rather than pulling it off a context pointer. seed_shader loses its context pointer, and dither's gets simpler. Change-Id: Ic2d1e13b03fb45b73e308b38aafbb3a14c29cf7f Reviewed-on: https://skia-review.googlesource.com/18383 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* update SkRasterPipeline::run() to also take yGravatar Mike Klein2017-06-01
| | | | | | | | | y isn't used yet. This is just a warmup that updates the callers. Change-Id: I78f4f44e2b82f72b3a39fa8a8bdadef1d1b8a99e Reviewed-on: https://skia-review.googlesource.com/18381 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* reland: We can mask load and store with just AVXGravatar Mike Klein2017-06-01
| | | | | | | | | | | | Originally reviewed here: https://skia-review.googlesource.com/c/17452/ CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind Change-Id: I2e593e897ce93147ec593c2a5de143217274ba2a Reviewed-on: https://skia-review.googlesource.com/18267 Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* clean up now that min_stride == 1Gravatar Mike Klein2017-05-31
| | | | | | | Change-Id: I1c285e818c3119bc5917dee6d7fbe4c0c62ff6d7 Reviewed-on: https://skia-review.googlesource.com/18153 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Add aarch64 tail code.Gravatar Herb Derby2017-05-30
| | | | | | | Change-Id: I25f029604a04f5fc6c249a3817b0dd84379071be Reviewed-on: https://skia-review.googlesource.com/18149 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Add arm tail code.Gravatar Herb Derby2017-05-30
| | | | | | | | | | CQ_INCLUDE_TRYBOTS=skia.primary:Test-Android-Clang-Nexus10-CPU-Exynos5250-arm-Release-Android Change-Id: Ia0e9f32d0324e66c9d4812dbb156a2b858d49a13 Reviewed-on: https://skia-review.googlesource.com/18127 Commit-Queue: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Add tail handling for SSE* to SkJumper.Gravatar Herb Derby2017-05-25
| | | | | | | Change-Id: Icb9d385333082de2f99b7a25cfd7251717e3f663 Reviewed-on: https://skia-review.googlesource.com/17580 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Herb Derby <herb@google.com>
* add srcover_rgba_8888Gravatar Mike Klein2017-05-25
| | | | | | | Change-Id: Iabdc79183ccd2f9cc513d4bdc530fb078b1627ab Reviewed-on: https://skia-review.googlesource.com/17930 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* make sure to_srgb maps 1 to 1Gravatar Mike Klein2017-05-25
| | | | | | | | | | | CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-SK_CPU_LIMIT_SSE2,Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-SK_CPU_LIMIT_SSE41,Test-Android-Clang-Nexus10-CPU-Exynos5250-arm-Release-Android,Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Release-Android,Test-Android-Clang-Ci20-CPU-IngenicJZ4780-mipsel-Release-Android BUG=skia:6678,skia:6683 Change-Id: I217084fa0a11ad661a8751f0c3b1cade5cc52473 Reviewed-on: https://skia-review.googlesource.com/17902 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* add stage for gaussian alpha to rgba for shadowsGravatar Mike Reed2017-05-24
| | | | | | | | | | speeds up GM:shadow_utils 20% Bug: skia: Change-Id: If52dd5e2c76ace82d06351af1419e0663a3a634f Reviewed-on: https://skia-review.googlesource.com/17844 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* SkRasterPipeline in SkArenaAllocGravatar Mike Klein2017-05-24
| | | | | | | | | Bug: skia:6673 Change-Id: Ia2bae4f6a9039a007a10b6b45bcf2f0854bf6e5c Reviewed-on: https://skia-review.googlesource.com/17794 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Revert "add knob to turn off fancy SkJumper features"Gravatar Mike Klein2017-05-23
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 5373609d90d8f84b75718b15f3522f9d2f4226cb. Reason for revert: doesn't look like we'll need this. Original change's description: > add knob to turn off fancy SkJumper features > > This is a new public API for testing (layout tests). > > Change-Id: I10345231bad373c741b1e9656e546000538121b3 > Reviewed-on: https://skia-review.googlesource.com/17712 > Reviewed-by: Florin Malita <fmalita@chromium.org> > Commit-Queue: Mike Klein <mtklein@chromium.org> > Change-Id: Ieed2576d7fc06528384b7476508610e0e29b894f Reviewed-on: https://skia-review.googlesource.com/17719 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* add knob to turn off fancy SkJumper featuresGravatar Mike Klein2017-05-23
| | | | | | | | | This is a new public API for testing (layout tests). Change-Id: I10345231bad373c741b1e9656e546000538121b3 Reviewed-on: https://skia-review.googlesource.com/17712 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* simpler portable round()Gravatar Mike Klein2017-05-23
| | | | | | | | | | Calling out lrintf() is probably kind of extreme... adding half and truncating should be just fine. Change-Id: Ifb22c1c1a9b764be153b769aad4671ca44311255 Reviewed-on: https://skia-review.googlesource.com/17708 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* remove min from repeat and mirror generallyGravatar Mike Klein2017-05-23
| | | | | | | | | | I don't think they do anything anymore after the inclusive/exclusive refactoring. Change-Id: I63f2e010a00953b5b6415de002bcb51ec2b73458 Reviewed-on: https://skia-review.googlesource.com/17490 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* retry tilers against 1Gravatar Mike Klein2017-05-23
| | | | | | | | | These weren't the Valgrind problem. Change-Id: Ic76df460cf0ce7f7ae8155d549f4e92a7f8de040 Reviewed-on: https://skia-review.googlesource.com/17701 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Revert "Revert "fix ubsan warning""Gravatar Brian Osman2017-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit b03d69f0709f5da09a5237922d208e587b12a06a. Reason for revert: This is the good CL I meant to re-land. Original change's description: > Revert "fix ubsan warning" > > This reverts commit 4d1c5d676eb32ed304ee4aa410cebbc6467b59c2. > > Reason for revert: Valgrind requires reverting ancestor commit. > > Original change's description: > > fix ubsan warning > > > > CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN > > > > Change-Id: Ic8c5d95fdb899cb5293b2bc456f61b1637ec3aed > > Reviewed-on: https://skia-review.googlesource.com/17489 > > Reviewed-by: Mike Klein <mtklein@chromium.org> > > Commit-Queue: Mike Klein <mtklein@chromium.org> > > > > TBR=mtklein@chromium.org,herb@google.com > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN > > Change-Id: Idbfdc4773756aa475829c1421d10d6f341081d7b > Reviewed-on: https://skia-review.googlesource.com/17521 > Reviewed-by: Brian Osman <brianosman@google.com> > Commit-Queue: Brian Osman <brianosman@google.com> > TBR=mtklein@chromium.org,herb@google.com,reviews@skia.org,brianosman@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN Change-Id: I4cf347bc578450c0cb3c91e55fdfdbe6af6fdb13 Reviewed-on: https://skia-review.googlesource.com/17526 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "We can mask load and store with just AVX."Gravatar Brian Osman2017-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 139e463dc6f965fdaed854efcb20c6cafbb6dbdc. Reason for revert: Crashes on Valgrind bots. Original change's description: > We can mask load and store with just AVX. > > Previously we were using AVX2 instructions to generate the masks, > and AVX2 instructions for the mask load and stores themselves. > > AVX came with float mask loads and stores, which will work perfectly > fine. I don't really get what the point of the 32-bit int loads and > stores are in AVX2, beyond maybe syntax sugar? > > Change-Id: I81fa55fb09daea4f5546f8c9ebbc886015edce51 > Reviewed-on: https://skia-review.googlesource.com/17452 > Reviewed-by: Herb Derby <herb@google.com> > Commit-Queue: Ravi Mistry <rmistry@google.com> > TBR=mtklein@chromium.org,rmistry@google.com,herb@google.com,reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I3a48f006c20475f6334ff94998281f381c696c93 Reviewed-on: https://skia-review.googlesource.com/17524 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "add tilers against 1"Gravatar Brian Osman2017-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 8110b849d60455d6fb594f26919f0f38c3ec9925. Reason for revert: Valgrind requires reverting ancestor commit. Original change's description: > add tilers against 1 > > Change-Id: I2482972a43cb89a93cbfb9e708614e0334002e53 > Reviewed-on: https://skia-review.googlesource.com/17483 > Reviewed-by: Herb Derby <herb@google.com> > Commit-Queue: Mike Klein <mtklein@chromium.org> > TBR=mtklein@chromium.org,herb@google.com,reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Icbc3a2212f800854ef7b2b17aa99fedad182d53e Reviewed-on: https://skia-review.googlesource.com/17523 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "fix ubsan warning"Gravatar Brian Osman2017-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 4d1c5d676eb32ed304ee4aa410cebbc6467b59c2. Reason for revert: Valgrind requires reverting ancestor commit. Original change's description: > fix ubsan warning > > CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN > > Change-Id: Ic8c5d95fdb899cb5293b2bc456f61b1637ec3aed > Reviewed-on: https://skia-review.googlesource.com/17489 > Reviewed-by: Mike Klein <mtklein@chromium.org> > Commit-Queue: Mike Klein <mtklein@chromium.org> > TBR=mtklein@chromium.org,herb@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN Change-Id: Idbfdc4773756aa475829c1421d10d6f341081d7b Reviewed-on: https://skia-review.googlesource.com/17521 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* fix ubsan warningGravatar Mike Klein2017-05-22
| | | | | | | | | CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN Change-Id: Ic8c5d95fdb899cb5293b2bc456f61b1637ec3aed Reviewed-on: https://skia-review.googlesource.com/17489 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* add tilers against 1Gravatar Mike Klein2017-05-22
| | | | | | | Change-Id: I2482972a43cb89a93cbfb9e708614e0334002e53 Reviewed-on: https://skia-review.googlesource.com/17483 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* We can mask load and store with just AVX.Gravatar Mike Klein2017-05-22
| | | | | | | | | | | | | | Previously we were using AVX2 instructions to generate the masks, and AVX2 instructions for the mask load and stores themselves. AVX came with float mask loads and stores, which will work perfectly fine. I don't really get what the point of the 32-bit int loads and stores are in AVX2, beyond maybe syntax sugar? Change-Id: I81fa55fb09daea4f5546f8c9ebbc886015edce51 Reviewed-on: https://skia-review.googlesource.com/17452 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Ravi Mistry <rmistry@google.com>
* add compile, use it in blitterGravatar Mike Klein2017-05-22
| | | | | | | | | | | | I expanded an existing bench to show off the difference: SkRasterPipeline_… 300 …compile 1x …run 1.14x Change-Id: I5d63d602cda3f78d2d0891fcc85baf5514632900 Reviewed-on: https://skia-review.googlesource.com/17458 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* tidy up dither stageGravatar Mike Klein2017-05-20
| | | | | | | | | | Using the float iota was just an expedient to write the stage... this CL adds the U32 iota that dither really wants. Change-Id: I7990b10afd0c5277186b6b8e730245d291bcef0c Reviewed-on: https://skia-review.googlesource.com/17441 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* streamline SkRasterPipeline::run()Gravatar Mike Klein2017-05-20
| | | | | | | | | | | | | This used to need to be complicated to check for unimplemented stages, but now that SkJumper rules the world, we can make this a lot simpler and move a lot of the tricky stage selection logic into an SkOnce. This should decrease the overhead of SkRasterPipeline::run(). Change-Id: I79d73f3315c7a1a52ab02747a5f17ce27d8cb9a4 Reviewed-on: https://skia-review.googlesource.com/17440 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* stage version of verticesGravatar Mike Reed2017-05-19
| | | | | | | | | | | | | | | | This CL, just to limit its size/complexity, only handles colors but not textures. Future CLs will cover everything. Performance is pretty exciting. Its faster than the old code-path, and when we fix a bug in pathutils to preserve opaqueness, it gets a lot faster (8 -> 5) Bug: skia: Change-Id: I4113060e25fe25fe4e6a0ea59bd4fa5e33abc668 Reviewed-on: https://skia-review.googlesource.com/17276 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Florin Malita <fmalita@chromium.org>
* try Herb's new to_srgbGravatar Mike Klein2017-05-16
| | | | | | | | | | This was 6-8% faster than the previous code on my Trashcan. Change-Id: I70081009e233c83226d6d302f871fb7e86cdc438 Reviewed-on: https://skia-review.googlesource.com/16986 Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* clamp to premul in ditherGravatar Mike Klein2017-05-16
| | | | | | | | | | | | | Dither can bump color values above alpha (duh), or below zero (duh), so clamp back to premul after dithering. BUG=skia:6644,skia:6643 Change-Id: Ida107e866380e06130af0d01467117bca929ba44 Reviewed-on: https://skia-review.googlesource.com/17070 Reviewed-by: Herb Derby <herb@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* fix SkJumper radial gradient precisionGravatar Mike Klein2017-05-15
| | | | | | | | | | | | rcp(rsqrt(x)) doesn't have enough precision when x is a coordinate. (It's fine when x is a color, like in the softlight blend mode.) Adds a GM to test this. It used to look quite ugly. Change-Id: Icec295c2e2f50ae7a5e3e33c62270f632a58f65c Reviewed-on: https://skia-review.googlesource.com/16914 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* add unaligned_store()Gravatar Mike Klein2017-05-15
| | | | | | | | | | | | | Don't know why I never wrote unaligned_store() to mirror unaligned_load(), but now I have. This replaces all remaining memcpy() in SkJumper_stages.cpp, which is nice. The generated stage code didn't change. Change-Id: I714c1072a975d7fa268a4b06c13f06557bf0c12c Reviewed-on: https://skia-review.googlesource.com/16870 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Add evenly spaced stops and unify gradient contextsGravatar Herb Derby2017-05-15
| | | | | | | Change-Id: I17ac13b9d1ea6765e2c1a2b53aa6975eab408856 Reviewed-on: https://skia-review.googlesource.com/16713 Commit-Queue: Herb Derby <herb@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* composeshader stagesGravatar Mike Reed2017-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | needed to add two helper stages for composeshader load_rgba, store_rgba These just read/write the r,g,b,a registers to context memory, making no promise as to how the memory is formatted (e.g. interleaved -vs- planar). Note that we have similar existing stages, but they did not seem to suit: constant_color This guy loads 4 floats from memory, and splats them into registers. I need to load 4 entire registers. load_f32, store_f32 These offset where they read/write based on the 'x' register, plus they guarantee that the memory will be interleaved ala SkPM4f. Bug: skia: Change-Id: Iaa81f950660b837bdb34416ab3e342d56a92239b Reviewed-on: https://skia-review.googlesource.com/16716 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Reed <reed@google.com>