SkNx_cast() can cast between any of our vector types,
provided they have the same number of elements.
Any types should work with the default implementation,
and we can drop in specializations as needed, like the
SSE and NEON Sk4f -> Sk4i I included here as an example.
To make this work, I made some internal name changes:
SkNi<N,T> -> SkNx<N, T>
SkNf<N> -> SkNx<N, float>
User aliases (Sk4f, Sk16b, etc.) stay the same.
We can land this first (it's PS1) if that makes things easier.
BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
Review URL: https://codereview.chromium.org/1464623002
This duplicates the functionality of the (private)
SkPaint::getDrawCacheProc method into
SkFindAndPlaceGlyph::LookupGlyph. Eventually LookupGlyph
should replace getDrawCacheProc, at which point it should be
removed. The remaining users are gpu and pdf.
Review URL: https://codereview.chromium.org/1458193003
There may be other (better?) ways to enable this. For example, if we queried the device *before* we init our root DeviceCM, we wouldn't need this flag in InitFlags, since the device already has a virtual to opt-in ...
BUG=skia:
Review URL: https://codereview.chromium.org/1458153003
The new key for the distance field path cache will contain an
SkStrokeRec. This change guarantees that we don't have any hidden
padding that has garbage values, thereby preventing apparently
equal keys from hashing to two different values. This also has
the nice effect of reducing the size of SkStrokeRec from 24 bytes
to 16 bytes.
Review URL: https://codereview.chromium.org/1465773003
Add support for feeding the tests with contexts directly to the unit
test framework.
This fixes the problem where tests are more complex than needed just in
order to run the test code with multiple backends.
Also makes it possible to change the logic how contexts are
created. Instead of direct numbering, the different testable contexts
may be generated from filtered cross-product of context options. For
example: currently NVPR is a type of context. However, it could be also
an on/off feature of any context. In order to test this kind of context,
the enumeration can not be just of context type. It's simpler
to move the enumeration out of the tests.
A test targeting both normal and GPU backends would look like:
static void test_obj_behavior(skiatest::Reporter* reporter,
SkObj* obj, [other params] ) {
... test with obj and param ..
}
DEF_TEST(ObjBehavior, reporter) {
for (auto& object : generate_object) {
for (auto& other_param : generate_other_variant) {
test_obj_behavior(reporter, object, other_param);
}
}
}
#if SK_SUPPORT_GPU
DEF_GPUTEST_FOR_ALL_CONTEXTS(ObjBehavior_Gpu, reporter, context) {
for (auto& object : generate_gpu_object) {
for (auto& other_param : generate_other_variant) {
test_obj_behavior(reporter, object, other_param);
}
}
}
#endif
Uses the feature in SurfaceTests as an example.
Moves SkSurface -related tests from ImageTest to SurfaceTest.
BUG=skia:2992
Review URL: https://codereview.chromium.org/1446453003
Reason for revert:
This likely causes unit tests to break in depsroll.
See error:
http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/137723/steps/cc_unittests%20%28with%20patch%29/logs/stdio
RUN ] ImageScaledRenderSurface.ImageRenderSurfaceScaled_Software
[4616:3480:1119/165044:41067403:ERROR:pixel_comparator.cc(175)] Percentage of pixels with an error: 11.3967
[4616:3480:1119/165044:41067403:ERROR:pixel_comparator.cc(177)] Percentage of pixels with errors not greater than 0: 0
[4616:3480:1119/165044:41067403:ERROR:pixel_comparator.cc(180)] Average absolute error (excluding identical pixels): R=0.0600565 G=238.962 B=238.934 A=0
[4616:3480:1119/165044:41067403:ERROR:pixel_comparator.cc(185)] Largest absolute error: R=1 G=255 B=255 A=0
[4616:3480:1119/165044:41067403:ERROR:pixel_comparator.cc(203)] Error Bounding Box : 47,47 206x206
[4616:3480:1119/165044:41067419:ERROR:pixel_test_utils.cc(79)] Pixels do not match!
[4616:3480:1119/165044:41067419:ERROR:pixel_test_utils.cc(80)] Actual: data:image/png;base64,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
[4616:3480:1119/165044:41067419:ERROR:pixel_test_utils.cc(81)] Expected: data:image/png;base64,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
e:\b\build\slave\win\build\src\cc\test\layer_tree_pixel_test.cc(116): error: Value of: MatchesPNGFile(*result_bitmap_, ref_file_path, *pixel_comparator_)
Actual: false
Expected: true
[ FAILED ] ImageScaledRenderSurface.ImageRenderSurfaceScaled_Software (57 ms)
Original issue's description:
> Fix UB in SkDivBits
>
> DIVBITS_ITER was shifting bits up into the sign bit, which is a no-no.
> This turns numer into a uint32_t to make those defined, and adds a few notes.
>
> x >= 0 is always true for unsigned x, so we needed a few small logic refactors.
>
> BUG=skia:3562
>
> Committed: https://skia.googlesource.com/skia/+/988adddd48322bfa3e3cb0c017cfce71fbbf1123
>
> Committed: https://skia.googlesource.com/skia/+/6c7b104b4c08ae2332a6ce3c8c906da4e8c51e5fTBR=caryclark@google.com,mtklein@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3562
Review URL: https://codereview.chromium.org/1467513002
This should give a performance improvment because we are able to skip
swizzling pixels.
This should also fix valgrind failures caused by color table lookups
with uninitialized memory.
BUG=skia:4270
Review URL: https://codereview.chromium.org/1460073002
Add helper to track when a round rect was added to a path,
and then return the SkRRect specification that describes it.
Move the implementation for SkPath::RawIter to SkPathRef so it can be used there as well.
R=reed@google.com,robertphillips@google.com
Review URL: https://codereview.chromium.org/1461763004
Generally this was a performance win, even on devices without AVX due
to unrolling, but on ARM+NEON it looks like that unrolling hurt a bit.
while (...) { blend a pixel }
~~~>
while (...) { blend two pixels }
if (n % 2) { blend last pixel }
BUG=chromium:555278
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
Review URL: https://codereview.chromium.org/1465483002
- Fold Or, Or3, Or4 into one flexible Or.
- Fold Pattern1...Pattern7 into one flexible Pattern.
- Rename Star Greedy
Still fighting with a flexible get<N>() method instead of first, second, third, etc.
BUG=skia:
Review URL: https://codereview.chromium.org/1465443002
In function void test_GLPrograms(skiatest::Reporter*, GrContextFactory*):
../../../src/gpu/GrAutoLocaleSetter.h:47:35: error:
als.GrAutoLocaleSetter::fOldLocale may be used uninitialized in this
function [-Werror=maybe-uninitialized]
From Build-Ubuntu-GCC-x86_64-Release-Trybot
Review URL: https://codereview.chromium.org/1456383002
For oval paths, GrPath ignores the point order and only uses the bounds
when building its key. This is problematic because
1) point order is important when dashing
2) GrStencilAndCoverPathRenderer asserts that the lookup SkPath is equal
to the cached SkPath - which is not the case for ovals with different
directions/different point order.
With this CL we no longer use the reduced oval key when dashing, and
instead fall through to the more general path cases. The assert is
adjusted to accommodate "equivalent" ovals (when not dashing).
Also re-enabled & updated the GpuDrawPath unit test (disabled in
https://codereview.chromium.org/1456463003/, presumably due to the use
of uninitialized SkRects).
R=bsalomon@google.com,robertphillips@google.com,cdalton@nvidia.com
Review URL: https://codereview.chromium.org/1457073002
SkPx has triggered a bunch of small (2-9%) regressions on NEON devices.
BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
Review URL: https://codereview.chromium.org/1462783002
Reason for revert:
Causes failures on Android and Win8:
...
( 137/1245MB 9) 73.9ms unit test GpuLayerCachec:\0\build\slave\workdir\build\skia\include\private\skuniqueptr.h:164: failed assertion "get() != pointer()"
Caught exception 2147483651 EXCEPTION_BREAKPOINT
...
Original issue's description:
> Fix NVPR assert for equivalent ovals
>
> For oval paths, GrPath ignores the point order and only uses the bounds
> when building its key. This is problematic because
>
> 1) point order is important when dashing
> 2) GrStencilAndCoverPathRenderer asserts that the lookup SkPath is equal
> to the cached SkPath - which is not the case for ovals with different
> directions/different point order.
>
> With this CL we no longer use the reduced oval key when dashing, and
> instead fall through to the more general path cases. The assert is
> adjusted to accommodate "equivalent" ovals (when not dashing).
>
> Also re-enabled & updated the GpuDrawPath unit test (disabled in
> https://codereview.chromium.org/1456463003/, presumably due to the use
> of uninitialized SkRects).
>
> R=bsalomon@google.com,robertphillips@google.com,cdalton@nvidia.com
>
> Committed: https://skia.googlesource.com/skia/+/f9b1577d763988ebc043ddabf80674f71571ecffTBR=bsalomon@google.com,cdalton@nvidia.com,robertphillips@google.com,fmalita@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1461913002
For oval paths, GrPath ignores the point order and only uses the bounds
when building its key. This is problematic because
1) point order is important when dashing
2) GrStencilAndCoverPathRenderer asserts that the lookup SkPath is equal
to the cached SkPath - which is not the case for ovals with different
directions/different point order.
With this CL we no longer use the reduced oval key when dashing, and
instead fall through to the more general path cases. The assert is
adjusted to accommodate "equivalent" ovals (when not dashing).
Also re-enabled & updated the GpuDrawPath unit test (disabled in
https://codereview.chromium.org/1456463003/, presumably due to the use
of uninitialized SkRects).
R=bsalomon@google.com,robertphillips@google.com,cdalton@nvidia.com
Review URL: https://codereview.chromium.org/1457073002
Reason for revert:
Need to reland with #define guards for tiny layout test changes. (Yikes!)
Original issue's description:
> Fix UB in SkDivBits
>
> DIVBITS_ITER was shifting bits up into the sign bit, which is a no-no.
> This turns numer into a uint32_t to make those defined, and adds a few notes.
>
> x >= 0 is always true for unsigned x, so we needed a few small logic refactors.
>
> BUG=skia:3562
>
> Committed: https://skia.googlesource.com/skia/+/988adddd48322bfa3e3cb0c017cfce71fbbf1123TBR=caryclark@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3562
Review URL: https://codereview.chromium.org/1457863002