Change-Id: Ifd194fd009196b8bee2dd83328bbe698586d72f4
Reviewed-on: https://skia-review.googlesource.com/6965
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
I missed updating this tool.
BUG=skia:
Change-Id: If5c79f0c41dd829ce8f952106660100ce4accca0
Reviewed-on: https://skia-review.googlesource.com/6963
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
TODO: Support more precision on 16-bit RGB pngs
BUG=skia:
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
Change-Id: I89dfef3b4887b9c4895c17309933883ab90ffa4d
Reviewed-on: https://skia-review.googlesource.com/6260
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
This reverts commit 89a0e72287.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> Implement Analytic AA for General Paths (with Guard against Chrome)
>
> I've set up a SK_SUPPORT_LEGACY_AAA flag to guard against Chromium layout tests. I also set that flag in this CL so theoretically this CL won't trigger any GM changes. I'll use this to verify my guard, and remove that flag and actually enables concave AAA in a future CL.
>
> When enabled, for most simple concave paths (e.g., rectangle stroke, rrect stroke, sawtooth, stars...), the Analytic AA achieves 1.3x-2x speedup, and they look much prettier. And they probably are the majority in our use cases by number. But they probably are not the majority by time cost; a single complicated path may cost 10x-100x more time to render than a rectangle stroke... For those complicated paths, we fall back to supersampling by default as we're likely to be 1.1-1.2x slower and the quality improvement is not visually significant. However, one can use gSkForceAnalyticAA to disable that fallback.
>
> BUG=skia:
>
> Change-Id: If9549a3acc4a187cfaf7eb51890c148da3083d31
> Reviewed-on: https://skia-review.googlesource.com/6091
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Yuqian Li <liyuqian@google.com>
>
TBR=caryclark@google.com,liyuqian@google.com,reed@google.com
BUG=skia:
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I13c05aaa1bcb14956bd0fe01bb404e41be75af22
Reviewed-on: https://skia-review.googlesource.com/6961
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
I've set up a SK_SUPPORT_LEGACY_AAA flag to guard against Chromium layout tests. I also set that flag in this CL so theoretically this CL won't trigger any GM changes. I'll use this to verify my guard, and remove that flag and actually enables concave AAA in a future CL.
When enabled, for most simple concave paths (e.g., rectangle stroke, rrect stroke, sawtooth, stars...), the Analytic AA achieves 1.3x-2x speedup, and they look much prettier. And they probably are the majority in our use cases by number. But they probably are not the majority by time cost; a single complicated path may cost 10x-100x more time to render than a rectangle stroke... For those complicated paths, we fall back to supersampling by default as we're likely to be 1.1-1.2x slower and the quality improvement is not visually significant. However, one can use gSkForceAnalyticAA to disable that fallback.
BUG=skia:
Change-Id: If9549a3acc4a187cfaf7eb51890c148da3083d31
Reviewed-on: https://skia-review.googlesource.com/6091
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Handy if you only have one device plugged in at a time.
Note that when used, this makes GN treat all devices' serial numbers as "auto", so it won't re-push if you swap devices until you change the binary that's being pushed.
Change-Id: I1f72133d6d8c4b5569734f191d414088e0b41f06
Reviewed-on: https://skia-review.googlesource.com/6948
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Remove unused functions, and convert another to switch style.
BUG=skia:
Change-Id: I93edbece54f147d868801bb008e6f935a8cb997f
Reviewed-on: https://skia-review.googlesource.com/6947
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
BUG=skia:6113,chromium:677889
Change-Id: I13d012a92e4d0371138f5ed4b92c7850f9b773a5
Reviewed-on: https://skia-review.googlesource.com/6945
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
It's proving too difficult to keep on top of all the ways we might cause ODR violations that crash Chrome. I'd rather focus on other ways of running the pipelines that won't have that particular problem. Our -Fast bots will keep testing and benchmarking AVX2 raster pipelines.
BUG=chromium:679147,chromium:654213,chromium:664864,chromium:666707,etc.
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
Change-Id: I35ba8f5f4303107237fd78a6ce442d7c26e5fbef
Reviewed-on: https://skia-review.googlesource.com/6827
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Alpha type is not (and never will be) part of pixel config, so the logic
around that was unnecessary. (Also, we already sanitize color type and
alpha type before making a new device at a higher level).
With that out of the way, we can easily supply a full info at the two
call-sites that were using the other version.
BUG=skia:
Change-Id: Iceccdbdebd1062d3e5023620755aabcc86604d2f
Reviewed-on: https://skia-review.googlesource.com/6920
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
It's been disabled for a long time (GPUs don't support it, and it actually
caused performance regression in testing).
BUG=skia:4333
Change-Id: I6e2bf755f765168fd616de6c9c023c6fbd5abd20
Reviewed-on: https://skia-review.googlesource.com/6897
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Each top-level recipe still needs one test and expectation file.
BUG=skia:6070
Change-Id: I3b14e8a11a86af68f5558177536f0018b644be4d
Reviewed-on: https://skia-review.googlesource.com/6943
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
The modules will eventually move into a shared repository.
BUG=skia:6070
Change-Id: I622265d98a5446f9f3ebf2c6a197770398623769
Reviewed-on: https://skia-review.googlesource.com/6942
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
i.e. not when generating Android.bp (and in the future, not in Clank builds)
BUG=skia:6065
Change-Id: I52bdd5f01deb5e5b4d9e72bec197a82dc887be88
Reviewed-on: https://skia-review.googlesource.com/6941
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
When path features are exactly a pixel wide, the extruded inner edges
can become collinear and then be removed, since their winding is
zero. We need these edges to be preserved through triangulation,
otherwise opaque portions of the geometry can become transparent.
Since the simplify() pass can handle zero-winding edges just fine, the
the fix is to simply not remove them.
In addition, this changes refactors out disconnect() from all the calls
to remove_edge_above()/remove_edge_below(). It also renames the remaining
function erase_edge() (since it's now unconditional).
Add a new test to a new "thinconcavepaths" GM.
BUG=680260
NOTRY=true
Change-Id: I1d3a436c95a01c4d4ef5dc05503de4312677f65d
Reviewed-on: https://skia-review.googlesource.com/6902
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephan White <senorblanco@chromium.org>
This reverts commit 6ff51aedda.
Reason for revert: breaks win2k8 and PDFium
Change-Id: Ib1e2db8e523d5d321836ce00e3773def3db8be2f
Reviewed-on: https://skia-review.googlesource.com/6898
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Theory: We will accept blobs of data as utf-8 text without validation,
but when it comes time to process it: count code poits or convert to
code points, be careful to check for errors.
TODO: SkTypeface::charsToGlyphs() needs to take a length.
Change-Id: Id8110ab43dbffce96faffdda1e0bdaa39cad40e4
Reviewed-on: https://skia-review.googlesource.com/6849
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
- Implementation.
- Use in SkLinearPipeline.
TBR=mtklein@google.com
Change-Id: Ia8efd09b2f3139a57182889ba84d1610eae92749
Reviewed-on: https://skia-review.googlesource.com/6352
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Disables use of SDFs for very small paths (because of blurring) and
adds a border of 1 pixel in device space to handle antialiasing.
BUG=chromium:677889
Change-Id: Icd2f7e80323b1255f8de52b97360e9a2d995c765
Reviewed-on: https://skia-review.googlesource.com/6895
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This makes GrPaints usable only once. In some places we must make copies in order to issue draws with the same paint state.
Change-Id: Ie816e5185ce93a064111cad64c6880e1e21184c2
Reviewed-on: https://skia-review.googlesource.com/6844
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
BUG=skia:
Change-Id: Ie7d4fac3024b361a281f456fec2b3a837e2bfe43
Reviewed-on: https://skia-review.googlesource.com/6881
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
SkFontMgr factories now return sk_sp and the legacy factories are no
longer used and can be removed.
BUG=skia:5077
Change-Id: Ieaff8555b297d1db157f8b78cdd6e7d07a3b5490
Reviewed-on: https://skia-review.googlesource.com/6894
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
BUG=skia:
Change-Id: If11dd014b14aa902082f93bf678b9d0f1b2e1c34
Reviewed-on: https://skia-review.googlesource.com/6893
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
should just be missing copy_to_executable_mem() / cleanup_executable_mem()
Change-Id: I47d34d4b57a40c07120cca7dc03f6ae22ecbe910
Reviewed-on: https://skia-review.googlesource.com/6854
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).
* SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h
* "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"
Revert "Revert 'SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h'"
This reverts commit c456b73fef.
Change-Id: Ie2c1a17c20134b8ceab85a68b3ae3e61c24fbaab
Reviewed-on: https://skia-review.googlesource.com/6886
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
This reverts commit d081ff314f.
Reason for revert: Failing unit tests.
Original change's description:
> More fixes for distance field paths
>
> Disables use of SDFs for very small paths (because of blurring) and
> adds a border of 1 pixel in device space to handle antialiasing.
>
> BUG=chromium:677889
>
> Change-Id: I81e49477c943d41523fd836e55abd696a985491f
> Reviewed-on: https://skia-review.googlesource.com/6832
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
>
TBR=jvanverth@google.com,bsalomon@google.com,robertphillips@google.com,reviews@skia.org
BUG=chromium:677889
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I4a6a698fa2e9e58c1c98a5a89f54bed724527951
Reviewed-on: https://skia-review.googlesource.com/6890
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
For all possible opaque SkColors, make converting to HSV and back return
the original SkColor.
In SkHSVToColor, store values as normalized floats (instead of
converting to byte values) as long as possible.
Add a test that cycles through all opaque SkColors and verifies correct
conversion.
BUG=b/33737498
Change-Id: I7ff61a999a271565a9ffe82ae3c9676fc49d67e3
Reviewed-on: https://skia-review.googlesource.com/6720
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Disables use of SDFs for very small paths (because of blurring) and
adds a border of 1 pixel in device space to handle antialiasing.
BUG=chromium:677889
Change-Id: I81e49477c943d41523fd836e55abd696a985491f
Reviewed-on: https://skia-review.googlesource.com/6832
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).
* SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h
* "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"
Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
Reviewed-on: https://skia-review.googlesource.com/4543
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
Also add ANGLE ES3 predefined configs.
BUG=skia:
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE
Change-Id: Ib7394afa961da1afe91c6dfefe08528273d3087c
Reviewed-on: https://skia-review.googlesource.com/6698
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Good news:
Everything seems to work as it is supposed to. That's why this
CL is just tests.
Bad news:
Picture is a bit strange in that the caching behavior may affect
how the output looks. Ex: If we choose to cache, we will first
draw into the picture's colorSpace and then convert that to the
dstColorSpace. If we choose not to cache, we will draw directly
into the dstColorSpace.
And then untagged pictures seem like they really shouldn't work
very well... We are caching a legacy draw and then drawing that
into the dstColorSpace? Maybe this isn't the most critical
thing to think about right now though, given Florin's work.
Remaining TODOs:
Color space support for gpu-backed images.
I still plan to clarify conversions that are allowed vs. not
allowed and share that code between all SkImages.
BUG=skia:6021
Change-Id: I9557ca1c00ff6854848fe59c3a67abd2af91bb46
Reviewed-on: https://skia-review.googlesource.com/6853
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
For all of these configs, we were or'ing in the texel buffer flag, and
then setting the flags to textureable. We currently only use texel buffers
for RGBA_Float buffers, so this didn't make any difference, but I spotted
it while making other changes.
BUG=skia:
Change-Id: I76c21881b7c82c5c0561e19686ddcc62f9cca835
Reviewed-on: https://skia-review.googlesource.com/6851
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This reverts commit 1e74cad9b4.
Reason for revert: the guard flag has now been confirmed to be landed on chromium/src. We should now be able to pass the layout tests.
Original change's description:
> Revert "Improve quad edges' smoothness in non-AA cases"
>
> This reverts commit d4ed326d6f.
>
> Reason for revert: reverting temporarily to get us rolling into Chrome again.
>
> Must be this CL right?
> https://storage.googleapis.com/chromium-layout-test-archives/linux_trusty_blink_rel/3364/layout-test-results/results.html
>
> Original change's description:
> > Improve quad edges' smoothness in non-AA cases
> >
> > Previously, non-AA quad edges only have an accuracy about 1/2 pixel
> > (while the AA quad edges have an accuracy about 1/8 pixel). Now, we
> > increase non-AA quad edges' accuracy to 1/8 pixel as well.
> >
> > The difference is very significant for rotating non-AA filled circles.
> > For example, run `./out/Debug/SampleApp --slide GM:fillcircle` with AA
> > turned off (by pressing b).
> >
> > The benchmark added reveals that increasing quad accuracy from 1/2 to
> > 1/8 doesn't affect the performance significantly. The following is the
> > 1/2-accuracy performance versus 1/8-accuracy performance:
> >
> > curr/maxrss loops min median mean max stddev samples
> > config bench
> > 7/17 MB 19 2.43µs 2.57µs 2.81µs 10.5µs 22% 16119
> > 8888 path_fill_big_nonaacircle
> > 7/17 MB 17 1.38µs 1.42µs 1.52µs 13µs 20% 21409
> > 8888 path_fill_small_nonaacircle
> >
> > curr/maxrss loops min median mean max stddev samples
> > config bench
> > 7/17 MB 71 2.52µs 2.59µs 2.79µs 7.67µs 19% 7557
> > 8888 path_fill_big_nonaacircle
> > 7/17 MB 64 1.45µs 1.49µs 1.51µs 2.39µs 5% 12704
> > 8888 path_fill_small_nonaacircle
> >
> >
> > BUG=skia:
> >
> > Change-Id: I3482098aeafcc6f2ec9aa3382977c0dc1b650964
> > Reviewed-on: https://skia-review.googlesource.com/6699
> > Reviewed-by: Mike Reed <reed@google.com>
> > Commit-Queue: Yuqian Li <liyuqian@google.com>
> >
>
> TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,djsollen@google.com,bungeman@google.com,reviews@skia.org,fmalita@chromium.org
> BUG=skia:
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Change-Id: I5bc4596ab506f6f61ac2da91a07cf51d61114f31
> Reviewed-on: https://skia-review.googlesource.com/6829
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
>
TBR=djsollen@google.com,mtklein@google.com,bungeman@google.com,reviews@skia.org,caryclark@google.com,fmalita@chromium.org,liyuqian@google.com,reed@google.com
BUG=skia:
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I0ec2ea8dc0c6ad0ebdcb48878fb301c32443a09e
Reviewed-on: https://skia-review.googlesource.com/6858
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
BUG=skia:
Change-Id: I60440c497d8aab7f16c4aeb0de79c63b8a7fb815
Reviewed-on: https://skia-review.googlesource.com/6857
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
- build_stages.py uses gobjdump for both architectures, minor formatting changes
- let byte arrays be written inline in splice()
Change-Id: I84bd47c18e5ae0b34b35f8c2f0a329fb1ea58f60
Reviewed-on: https://skia-review.googlesource.com/6833
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
This should be a no-op on x86 (unified icache and dcache), but is required on
ARM because the icache and dcache are separate.
The Pixel C bots are crashing at head, and so is my local Pixel C, but not
after this CL. Interestingly, my Pixel not-C (phone) has always been fine.
I wonder if it has a unifed cache?
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Release-Android
Change-Id: I8f9d53729613c51aabfeb49495aac38ce2801a84
Reviewed-on: https://skia-review.googlesource.com/6847
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This is still just linear (non-sRGB), but adding sRGB will
be the next step. I've verified that this is really making
R8 textures when uploading Gray8 bitmaps. Tests pass, and
the all_bitmap_configs GM still renders correctly (unlike
when we just mapped Gray8 to Alpha8).
This adds another pixel config, which could grow our cache
footprint, but the benefits of not using 4bpp for 1bpp data
should outweigh that?
Re-land of https://skia-review.googlesource.com/c/6817/,
with fixes for Vulkan.
BUG=skia:6110
Change-Id: Ia763c276808be28027ed0005ee4b88637306583f
Reviewed-on: https://skia-review.googlesource.com/6839
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
set_k() is simulating the effect of loading a pointer constant into the register used to pass the 4th function argument. An easier way to do this is to pass that pointer constant as the 4th function argument... duh.
Change-Id: I5604d6bbadd86eaaa82f8c4391080f6489b1927f
Reviewed-on: https://skia-review.googlesource.com/6843
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Not sure what to do about this long term.
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN
Change-Id: If9e86c285914ce2d8255ac25197845728d7c5d49
Reviewed-on: https://skia-review.googlesource.com/6842
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>