Detect the situation where we're going to want to do PM/UPM, and want to
use GrConfigConverionEffect, but be unable (due to the lack of a
round-trip pair). This lets us hoist the SW premul work (in
writeSurfacePixels), and avoid all the cascading failure logic in both
functions. (We never try to create the PM/UPM effects unless we know
that they're going to work).
Bug: skia:5853
Change-Id: I0077447cd4be93bba273f8d2826b1ec0f4915c6c
Reviewed-on: https://skia-review.googlesource.com/13592
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
I am learning / refactoring this code. To start, I mostly just want to
get all these one-off storage members out of my face.
Testing: out/dm --src colorImage --colorImages images/colorspace/ --config srgb
Change-Id: I40eb0b565eb2ab1ef8975f7a7ba35961cff75a07
Reviewed-on: https://skia-review.googlesource.com/13586
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
guarded by SK_SUPPORT_OBSOLETE_LOCKPIXELS
needs https://codereview.chromium.org/2820873002/# to land first
Bug: skia:6481
Change-Id: I1c39902cbf6fe99f622adfa8192733b95f7fea09
Change-Id: I1c39902cbf6fe99f622adfa8192733b95f7fea09
Reviewed-on: https://skia-review.googlesource.com/13580
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This gets us the default env, which includes the missing depot_tools.
NOTRY=true
Bug: skia:
Change-Id: Idc6f9c426eb88c36d8c5d9c9bf9568a9414d61a6
Reviewed-on: https://skia-review.googlesource.com/13587
Reviewed-by: Ravi Mistry <rmistry@google.com>
This lets us temporarily escape to piece of code outside
SkRasterPipeline. We should be able to use this to replace
- parametric_{r,g,b,a}
- table_{r,g,b,a}
- color_lookup_table
- shader_adapter*
* We want to obsolete shader_adapter for other reasons anyway,
but we _could_ replace it with this if we want to.
Change-Id: I42b657b3c19c679796ed1876856cae0c8471307e
Reviewed-on: https://skia-review.googlesource.com/12102
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
NOTRY=true
Bug: skia:
Change-Id: I21212b62cd068bd722598fe8daadf184c87785df
Reviewed-on: https://skia-review.googlesource.com/13583
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Improves gm/recordopts.
Does not break gm/pictureimagefilter or gm/fastfilterbounds.
Bug: skia:
Change-Id: I67c8f02a9548bf751350dfa3c7029dd59b8a2d1d
Reviewed-on: https://skia-review.googlesource.com/13276
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
BUG=skia:
Change-Id: I355209a170ad8930a59cf91d584f40de82f51b92
Reviewed-on: https://skia-review.googlesource.com/13563
Reviewed-by: Forrest Reiling <freiling@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Bug:709341
Change-Id: I0dc1dcc3874f9741e0303e376a0ad4a68cd8b03e
Reviewed-on: https://skia-review.googlesource.com/13500
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Make the constructors for SkArenaAlloc unambiguous.
TBR=mtklein@google.com
Change-Id: Iaa6419574e78e17bf746f5f9bcdf99c9d6c9d727
Reviewed-on: https://skia-review.googlesource.com/13540
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Removing the 16K alloc sped up pathops_unittest -x -V
Release on Windows 7; time went from 14 minutes to 4.
R=herb@google.com
BUG=skia:6509
Change-Id: If43c9ad6745961e0079a7f4f6560c6fa2a7847ef
Reviewed-on: https://skia-review.googlesource.com/13507
Commit-Queue: Cary Clark <caryclark@google.com>
Reviewed-by: Herb Derby <herb@google.com>
I don't know why, but only std::chrono's calls to clock_gettime() seem
to be affected by this MSAN bug. Other calls into libc++ that call
libc, like std::to_string(int) calling snprintf, work fine.
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN,Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN
BUG=skia:6504
Change-Id: I73fbe8793d2b5b5cca46ed68fb078a77d8748127
Reviewed-on: https://skia-review.googlesource.com/13502
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
If the font has a gasp table use it to determine symmetric. Otherwise,
use symmetric if the the font isn't hinted or is >20px. The remaining
cases use non-symmetric.
BUG=chromium:706792,skia:6432
Change-Id: I91b66a9615aae27c195e1545298a9d36bc58a705
Reviewed-on: https://skia-review.googlesource.com/11400
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
The existing code assumes that GetGdiCompatibleGlyphMetrics transform
parameter acts the same as the GetGlyphOutlineW lpmat2 parameter.
However, it appears this is very much not true.
BUG=skia:6499
Change-Id: I88c762b27acd09cc746da4d6e2b901540876908a
Reviewed-on: https://skia-review.googlesource.com/13479
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Change-Id: I657c489c56b93765567be69076fb4c3d526e55a5
Reviewed-on: https://skia-review.googlesource.com/13068
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Bug: skia:6507
NOTRY=true
Change-Id: I957a72d496ff521972fbc505fcb85cb30c019a93
Reviewed-on: https://skia-review.googlesource.com/13477
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
- Updates the logic to reflect the Loop-Blinn paper instead of the GPU
gems website.
- Removes the threshold for detecting local cusps. The serpentine
codepath works for these cusps anyway, so what we really want to know
is whether the discriminant is negative.
- Makes sure to not scale the inflection function by 1/0.
- Shifts the inflection function coefficients in d[] so they match the
paper.
- Stores the cubic discriminant in d[0].
Bug: skia:
Change-Id: I909a522a0fd27c9c8dfbc27d968bc43eeb7a416f
Reviewed-on: https://skia-review.googlesource.com/13304
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Using std::string is tons faster than SkString;
multiple callers to std::string don't run into
thread contention but SkString does.
R=csmartdalton@google.com
Change-Id: I0357c6a9c73856bfffbb76e65c275acdfe7d8159
Reviewed-on: https://skia-review.googlesource.com/13471
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
Bug: skia:6395
Change-Id: Ic5065bfc91cac83495836cd6d2a7cc059423c96e
Reviewed-on: https://skia-review.googlesource.com/13412
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
.type is an ELF thing, not understood by Mach.
So do the same sort of #define trick we do for HIDDEN.
This expands the use of .type ...,%function to everywhere
that supports it, rather than just where we needed it.
Feels cozier this way.
CQ_INCLUDE_TRYBOTS=skia.primary:Build-Mac-Clang-arm-Debug-iOS,Build-Mac-Clang-arm-Release-iOS,Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Release,Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug
Change-Id: Iaff01b0f3f70ceedf743d7a553915792cdd7e569
Reviewed-on: https://skia-review.googlesource.com/13469
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
This helps the linker decide to rewrite bl -> blx when linking
Thumb2 SkJumper.o code with ARM SkJumper_generated.o.
The reason Android wasn't failing is because it somehow figured
out to do this without these .type directives. We use a different
toolchain for ChromeOS builds that I guess needs more handholding.
BUG=skia:6471
CQ_INCLUDE_TRYBOTS=skia.primary:Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Release,Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug
Change-Id: I4a5c50b6ab7683512776c70aec6e9a75a0999787
Reviewed-on: https://skia-review.googlesource.com/13464
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This new unittest would assert before this fix.
Bug: skia:6501
Change-Id: I351ad03f29bccc054f72bfcb838174830dbd008c
Reviewed-on: https://skia-review.googlesource.com/13413
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Hoist simple failure checks to the beginning, apply logic in the same
sequence in both functions. Factor out some common logic. Remove redundant
checking inside other helper functions (that are only used from here).
I'm inching towards better sRGB and color-conversion support in these
functions, but I don't want that intertwined with the legacy premul
software fallback. Next step is probably to diverge at the top-level,
and keep the current code as "legacy" versions, with new versions that
don't have the fallback logic, only used for configs and color space
scenarios where it doesn't matter.
Bug: skia:5853
Change-Id: I327be5f0186a16ceda9440670fb0646acaef7766
Reviewed-on: https://skia-review.googlesource.com/13337
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
BUG=skia:6471
CQ_INCLUDE_TRYBOTS=skia.primary:Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Release,Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug
Change-Id: I3faa28c69510fbb33d40abbfb59bf3a7ba5ddb77
Reviewed-on: https://skia-review.googlesource.com/13407
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
call sites have been updated in master
Bug: skia:6481
Change-Id: I7f341cb511126a71fe3077bed3eaa55dc7ff76c3
Reviewed-on: https://skia-review.googlesource.com/13440
Reviewed-by: Mike Reed <reed@google.com>
It fails at line 336:
REPORTER_ASSERT(reporter, configs[i]->getBackend().equals(expectedConfigs[i].backend));
Change-Id: Iab71162b9d7b5454d200cb373026992eac92adf8
Reviewed-on: https://skia-review.googlesource.com/13406
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
eg.
$ make test
or
$ make train
Update docs accordingly.
Bug: skia:
Change-Id: I069fa686833f0a78f398bd85eb8bb44025cae0d5
Reviewed-on: https://skia-review.googlesource.com/13327
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
It thinks it should fail, but it doesn't.
Change-Id: Ie97f57dd7a9040a817b59186b2f8fa704bdda3e9
Reviewed-on: https://skia-review.googlesource.com/13404
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
When using lld, calls to clock_gettime() end up in the real libc
clock_gettime(). When using ld, calls to clock_gettime() end up in
__interceptor_clock_gettime().
Don't know why yet.
Change-Id: I41f54218eb961e07ed2ef2c37b864e9aeeb49662
Reviewed-on: https://skia-review.googlesource.com/13403
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Bug: skia:
Change-Id: Ib2fa0b971f201ea2f16afd0467d7882b66b4047c
Reviewed-on: https://skia-review.googlesource.com/13331
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
This should get us past the crash at startup.
The next problem I'd expect to see, if any, should involve HumanizeMS()
and chrono::steady_clock::now().
Change-Id: I14dbe6bedd6939c1a355db8dba74ab0853db7706
Reviewed-on: https://skia-review.googlesource.com/13401
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
As we start adding more functionality to external clients and passing
data around, we will need to know what backend we are working with at
a layer higher that GrGpu.
TBR=bsalomon@google.com
Bug: skia:
Change-Id: Ifee527ea0c1046469401a39e0500f84a46bb3081
Reviewed-on: https://skia-review.googlesource.com/13275
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>