Commit Graph

18208 Commits

Author SHA1 Message Date
caryclark
e59524dff5 make mixedtextblobs gm portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1250753004
2015-07-21 13:11:26 -07:00
mtklein
4c4b84c005 Clean up more SkXfermode.cpp dead code.
These handwritten xfermodes for Clear, Src, DstIn, and DstOut are actually dead
code: they're all covered by Sk4pxXfermode, which we'd already have returned.

Tidies up the xfermode creation logic to make this clearer.

This cuts 20-40K off SkXfermode.o, depending on the platform.

BUG=skia:

Review URL: https://codereview.chromium.org/1249773004
2015-07-21 13:10:43 -07:00
joshualitt
7e7b5c5d07 adding assert to GrAtlasTextContext
TBR=bsalomon@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1241263003
2015-07-21 12:56:56 -07:00
mtklein
cd1930d4f1 De-templatize Sk4pxXfermode code a bit.
This deduplicates a few pieces of code:
  - we end up with one copy of each xfer32() driver loop instead of one per xfermode;
  - we end up with two* copies of each xfermode implementation instead of ten**.

* For a given Mode: Mode() itself and xfer_aa<Mode>().
** From unrolling: twice at a stride of 8, once at 4, once at 2, and once at 1, then all again for when we have AA.

This decreases the size of SkXfermode.o from 1.5M to 620K on x86-64 and from 1.3M to 680K on ARMv7+NEON.

If we wanted to, we could eliminate the xfer_aa<Mode>() copy by tagging each Mode() function as __attribute__((noinline)) or its equivalent.  This would result in another ~100K space savings.

Performance is affected in proportion to the original xfermode speed:
fast modes like Plus take the largest proportional hit, and slow modes
like HardLight or SoftLight see essentially no hit at all.

This adds SK_VECTORCALL to help keep this code fast on ARMv7 and Windows.  I've looked at the ARMv7 generated code... it looks good, even pretty.

For compatibility with SK_VECTORCALL, we now pass the vector-sized arguments by value instead of by reference.  Some refactoring now allows us to declare each mode as just a static function instead of a struct, which simplifies things.

TBR=reed@google.com
No public API changes.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/e617e1525916d7ee684142728c0905828caf49da

CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-Arm7-Debug-Android_NoNeon-Trybot

Review URL: https://codereview.chromium.org/1242743004
2015-07-21 12:39:57 -07:00
caryclark
c3dcb67f07 make color emoji gm portable
R=bungeman@google.com

Review URL: https://codereview.chromium.org/1248703004
2015-07-21 12:27:36 -07:00
mtklein
654ad19fbd Revert of De-templatize Sk4pxXfermode code a bit. (patchset #2 id:20001 of https://codereview.chromium.org/1242743004/)
Reason for revert:
http://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-Arm7-Debug-Android_NoNeon/builds/1168/steps/build%20most/logs/stdio

Original issue's description:
> De-templatize Sk4pxXfermode code a bit.
>
> This deduplicates a few pieces of code:
>   - we end up with one copy of each xfer32() driver loop instead of one per xfermode;
>   - we end up with two* copies of each xfermode implementation instead of ten**.
>
> * For a given Mode: Mode() itself and xfer_aa<Mode>().
> ** From unrolling: twice at a stride of 8, once at 4, once at 2, and once at 1, then all again for when we have AA.
>
> This decreases the size of SkXfermode.o from 1.5M to 620K on x86-64 and from 1.3M to 680K on ARMv7+NEON.
>
> If we wanted to, we could eliminate the xfer_aa<Mode>() copy by tagging each Mode() function as __attribute__((noinline)) or its equivalent.  This would result in another ~100K space savings.
>
> Performance is affected in proportion to the original xfermode speed:
> fast modes like Plus take the largest proportional hit, and slow modes
> like HardLight or SoftLight see essentially no hit at all.
>
> This adds SK_VECTORCALL to help keep this code fast on ARMv7 and Windows.  I've looked at the ARMv7 generated code... it looks good, even pretty.
>
> For compatibility with SK_VECTORCALL, we now pass the vector-sized arguments by value instead of by reference.  Some refactoring now allows us to declare each mode as just a static function instead of a struct, which simplifies things.
>
> TBR=reed@google.com
> No public API changes.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/e617e1525916d7ee684142728c0905828caf49da

TBR=msarett@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1245273005
2015-07-21 12:08:41 -07:00
robertphillips
18c58c7268 Possible fix Moto E compilation failure
It appears that the Adreno compiler is even more twitchy about gl_FragCoord handling than expected.

BUG=skia:4078

Review URL: https://codereview.chromium.org/1246773003
2015-07-21 12:06:52 -07:00
mtklein
e617e15259 De-templatize Sk4pxXfermode code a bit.
This deduplicates a few pieces of code:
  - we end up with one copy of each xfer32() driver loop instead of one per xfermode;
  - we end up with two* copies of each xfermode implementation instead of ten**.

* For a given Mode: Mode() itself and xfer_aa<Mode>().
** From unrolling: twice at a stride of 8, once at 4, once at 2, and once at 1, then all again for when we have AA.

This decreases the size of SkXfermode.o from 1.5M to 620K on x86-64 and from 1.3M to 680K on ARMv7+NEON.

If we wanted to, we could eliminate the xfer_aa<Mode>() copy by tagging each Mode() function as __attribute__((noinline)) or its equivalent.  This would result in another ~100K space savings.

Performance is affected in proportion to the original xfermode speed:
fast modes like Plus take the largest proportional hit, and slow modes
like HardLight or SoftLight see essentially no hit at all.

This adds SK_VECTORCALL to help keep this code fast on ARMv7 and Windows.  I've looked at the ARMv7 generated code... it looks good, even pretty.

For compatibility with SK_VECTORCALL, we now pass the vector-sized arguments by value instead of by reference.  Some refactoring now allows us to declare each mode as just a static function instead of a struct, which simplifies things.

TBR=reed@google.com
No public API changes.

BUG=skia:

Review URL: https://codereview.chromium.org/1242743004
2015-07-21 12:03:37 -07:00
msarett
cf2a6a47e4 Reenable yasm for Android x86 and x86-64 on Linux host
It turns out that gyp (kind of) has support for cross
compiling with a different host and target.  We simply
need to specify CC_host and CC_target instead of CC.

Making this change allows us to compile yasm on a Linux
host for Android.

We run into problems on Mac because
the linker on a Mac host requires different command line
arguments than the linker on the Android target.  In
looking through the code for gyp itself and speaking to
Ben, it doesn't appear to me that gyp supports passing
different arguments to host and target linkers.

I would imagine that we would have similar problems on
Windows.

Below is a link to a CL that would fix this issue in gyp.
It looks like it has been dropped for a long time.
Thanks to Ben for this link!
https://chromiumcodereview.appspot.com/10795044/

Also I'm adding a link to the build instructions for Chrome
(thanks again Ben).  It looks like they only support
building for Android from Linux.
https://code.google.com/p/chromium/wiki/AndroidBuildInstructions

My next steps are:
1) Getting in touch with Torne or someone else with gyp to
see if people are aware of this issue or interested in
fixing it.
2) Deciding if skia should care about this issue.
3) Deciding if skia should work around this issue.

It'd be really great to hear your thoughts on (2) and (3).
My first thought is that we shouldn't care because, as
long as we always compile the production copy of skia for
Android on Linux, we will get the fast code.  Is this
a valid conclusion?  Is there a way to write Android apps
on Mac that accidentally use the slower code?

If we do care, there are workarounds:
For Mac, we can check in a yasm binary - it's a little
smaller than the one I am deleting in this CL :-/
For Windows, we *might* be able to use the yasm.exe binary
already in externals (we get this from DEPS because this is
how chromium uses yasm on Windows).
Are there other platforms that we care about?

Let me know what you think!

BUG=skia:4028
DOCS_PREVIEW= https://skia.org/?cl=1239333002

Review URL: https://codereview.chromium.org/1239333002
2015-07-21 12:01:48 -07:00
joshualitt
259fbf1916 Add sanity check to GrAtlasTextBlob
BUG=skia:

Review URL: https://codereview.chromium.org/1250693002
2015-07-21 11:39:35 -07:00
senorblanco
f6e092aa9c Remove SK_LEGACY_IMAGE_FILTER_CROP_RECT_EDGES code.
This is no longer used in Chrome.

BUG=skia:4089

Review URL: https://codereview.chromium.org/1245193002
2015-07-21 11:11:17 -07:00
caryclark
ae3714f27a make varied_text* gm portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1244063002
2015-07-21 09:15:53 -07:00
jvanverth
02781977e0 Run noise shader separately in imagefiltersclipped
BUG=skia:4079

Review URL: https://codereview.chromium.org/1245983002
2015-07-21 08:38:06 -07:00
joshualitt
374b2f7cea rename BitmapTextBlob and move it to its own file
BUG=skia:

Review URL: https://codereview.chromium.org/1249663002
2015-07-21 08:05:03 -07:00
caryclark
4ec1ac6a2d make xfermode* portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1243103002
2015-07-21 07:42:45 -07:00
borenet
9b8d3580c2 Skip imagefiltersclipped GM on Galaxy S4
BUG=skia:4079

Review URL: https://codereview.chromium.org/1250473005
2015-07-21 05:57:22 -07:00
mtklein
e942bee8f9 Revert of 565 support for SIMD xfermodes (patchset #3 id:40001 of https://codereview.chromium.org/1245673002/)
Reason for revert:
942930d (included in this roll) introduced a 140 kB sizes regression in
libskia.so. Please investigate and reland if this regression is necessary.

Original issue's description:
> 565 support for SIMD xfermodes
>
> This uses the most basic approach possible:
>   - to load an Sk4px from 565, convert to SkPMColors on the stack serially then load those SkPMColors.
>   - to store an Sk4px to 565, store to SkPMColors on the stack then convert to 565 serially.
>
> Clearly, we can optimize these loads and stores.  That's a TODO.
>
> The code using SkPMFloat is the same idea but a little more long-term viable, as we're only operating on one pixel at a time anyway.  We could probably write 565 <-> SkPMFloat methods, but I'd rather not until it's really compelling.
>
> The speedups are varied but similar across SSE and NEON: a few uninteresting, many 50% faster, some 2x faster, and SoftLight ~4x faster.
>
> This will cause minor GM diffs, but I don't think any layout test changes.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/942930dcaa51f66d82cdaf46ae62efebd16c8cd0

TBR=msarett@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1242973004
2015-07-21 05:02:40 -07:00
rileya
134003902d Add Rec709 YUV color space support to GrYUVtoRGBEffect.
This change is motivated by a recent switch in how chromium handles
<video> color spaces, making rec709 more commonly used. This will
allow video -> canvas copies to take the fast GPU path when we're using
709, just as we do with 601 and jpeg.

Chromium-side change: https://codereview.chromium.org/1236313002

Review URL: https://codereview.chromium.org/1241723005
2015-07-20 15:00:03 -07:00
caryclark
6531c3619f Generate platform specific fontmgr gm.
The gm output on different font platforms is so different
that comparing images in Gold has little value. Separate the
images by appending platform information to the gm name to
group somewhat similar images together.

Note that this does not attempt to make sure that all images
generated by Gold are nearly pixel identical; it only reduces
the number of nonsensical comparisons.

R=bungeman@google.com

Review URL: https://codereview.chromium.org/1245643002
2015-07-20 13:38:56 -07:00
emmaleer
973ae86a82 removing png_read_end from SkPngScanlineDecoder
BUG=skia:4041

Review URL: https://codereview.chromium.org/1242423002
2015-07-20 13:38:45 -07:00
caryclark
85693c15c8 make stroketext textblob* texteffects tileimagefilter gm portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1244833002
2015-07-20 10:48:01 -07:00
mtklein
942930dcaa 565 support for SIMD xfermodes
This uses the most basic approach possible:
  - to load an Sk4px from 565, convert to SkPMColors on the stack serially then load those SkPMColors.
  - to store an Sk4px to 565, store to SkPMColors on the stack then convert to 565 serially.

Clearly, we can optimize these loads and stores.  That's a TODO.

The code using SkPMFloat is the same idea but a little more long-term viable, as we're only operating on one pixel at a time anyway.  We could probably write 565 <-> SkPMFloat methods, but I'd rather not until it's really compelling.

The speedups are varied but similar across SSE and NEON: a few uninteresting, many 50% faster, some 2x faster, and SoftLight ~4x faster.

This will cause minor GM diffs, but I don't think any layout test changes.

BUG=skia:

Review URL: https://codereview.chromium.org/1245673002
2015-07-20 10:35:30 -07:00
robertphillips
1accc4cc35 Fix textureDomain/bleed prevention in msaa
This updates Ganesh's bleed avoidance check to handle the case where the
sample location may be outside of the rect geometry but used because it
partially covers the pixel.

BUG=skia:4066

Review URL: https://codereview.chromium.org/1237623012
2015-07-20 10:22:29 -07:00
borenet
a6ae14e223 Split llvm_coverage_run into two scripts
... One for running to generate the coverage data, another to parse the data into various formats.

NOTRY=true
BUG=skia:2430

Review URL: https://codereview.chromium.org/1239963002
2015-07-20 09:43:36 -07:00
mtklein
54f313ccb8 Clean up dead xfermode opts code.
Now that SK_SUPPORT_LEGACY_XFERMODES is unused, tons of code becomes dead.

Nothing is needed in opts/ anymore for x86.
We still do runtime NEON detection, which just duplicates Sk4pxXfermode.

TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/1230023011
2015-07-20 07:14:19 -07:00
skia.buildbots
b5a1217d8a Update SKP version
Automatic commit by the RecreateSKPs bot.

TBR=
NO_MERGE_BUILDS

Review URL: https://codereview.chromium.org/1241073002
2015-07-19 00:19:11 -07:00
wangxianzhu
d76665da1c Reland "SkPDF: Annotations are clipped by canvas clip stack."
Original patch was created by halcanary@google.com, and was reverted
because it triggered crbug.com/503541.

This patch fixes a bug in the original patch about clip path
transformation.

> Also, remove some SkPDFDevice functions.
> Will fix this GM: http://crrev.com/1159273003
> BUG=skia:3872
> Review URL: https://codereview.chromium.org/1148263005

BUG=skia:3872
BUG=503514

Review URL: https://codereview.chromium.org/1238503007
2015-07-17 17:23:15 -07:00
caryclark
97a26d04e2 make drawbitmaprect lighting lumafilter matrixconvolution srcmode gm portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1240843005
2015-07-17 13:20:48 -07:00
joshualitt
e49109f3b5 adding unit test for textblob cache / GrBatchAtlas
BUG=skia:

Review URL: https://codereview.chromium.org/1233253003
2015-07-17 12:47:39 -07:00
caryclark
dfcb7abc41 make arithmode bigtext colortype* degeneratesegments gm portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1235343004
2015-07-17 09:39:16 -07:00
joshualitt
a2a6fe8699 Some cleanups of VisualBench
BUG=skia:

Review URL: https://codereview.chromium.org/1240633005
2015-07-17 09:09:23 -07:00
borenet
5150a77ee7 llvm_coverage_build: Use CC and CXX variables by default
NOTRY=true
BUG=skia:2430

Review URL: https://codereview.chromium.org/1242573003
2015-07-17 07:31:07 -07:00
jvanverth
992c761239 Reland of Add fast normalize for SkLightingImageFilter. (patchset #1 id:1 of https://codereview.chromium.org/1244523002/)
Reason for revert:
Florin will rebaseline the images.

Original issue's description:
> Revert of Add fast normalize for SkLightingImageFilter. (patchset #2 id:20001 of https://codereview.chromium.org/1240023002/)
>
> Reason for revert:
> Speculative revert -- DEPS roll block on linux_blink_rel
>
> https://storage.googleapis.com/chromium-layout-test-archives/linux_blink_rel/71483/layout-test-results/results.html
>
> Original issue's description:
> > Add fast normalize for SkLightingImageFilter.
> >
> > The normalize routine in SkPoint3 is very robust. However, for simple
> > lighting cases we prefer speed over robustness. This fixes a perf
> > regression in smoothness.tough_filters_cases.
> >
> > BUG=chromium:510562
> >
> > Committed: https://skia.googlesource.com/skia/+/dfa0ecf169db87f7afddd93bc1c500de481a62c7
>
> TBR=reed@google.com,senorblanco@google.com,senorblanco@chromium.org,jvanverth@google.com
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=chromium:510562
>
> Committed: https://skia.googlesource.com/skia/+/ac66a8122b27c388cc74b3913d9a9be351a44e54

TBR=reed@google.com,senorblanco@google.com,senorblanco@chromium.org,reed@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:510562

Review URL: https://codereview.chromium.org/1241583007
2015-07-17 07:22:30 -07:00
reed
84984efeb6 Revert[2] of guard to remove DrawBitmapRectFlags
This reverts commit 91110195a2.

BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/1240753003
2015-07-17 07:09:43 -07:00
tfarina
b9efc79015 Add an entry in directory for BugChomper.
BUG=None
R=borenet@google.com
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=1239803008

Review URL: https://codereview.chromium.org/1239803008
2015-07-17 07:07:25 -07:00
ethannicholas
330bb956fd No longer using non-antialiased fast path for lines when antialiasing is on.
BUG=skia:3776

Review URL: https://codereview.chromium.org/1223323003
2015-07-17 06:44:02 -07:00
joshualitt
9ec0d4342d Removing GrTemplates.h
BUG=skia:

Review URL: https://codereview.chromium.org/1233923004
2015-07-17 06:40:29 -07:00
joshualitt
73d5de5763 Cleanup of GrFontDescKey
BUG=skia:

Review URL: https://codereview.chromium.org/1238473004
2015-07-17 06:19:19 -07:00
scroggo
91110195a2 Revert of guard to remove DrawBitmapRectFlags (patchset #1 id:1 of https://codereview.chromium.org/1235393003/)
Reason for revert:
breaking android framework build

Original issue's description:
> guard to remove DrawBitmapRectFlags
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/6fb0b6779e40ce05c20cf279f0ecff31fa3cd60d

TBR=fmalita@chromium.org,djsollen@google.com,reed@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1230823007
2015-07-17 05:57:34 -07:00
reed
ac66a8122b Revert of Add fast normalize for SkLightingImageFilter. (patchset #2 id:20001 of https://codereview.chromium.org/1240023002/)
Reason for revert:
Speculative revert -- DEPS roll block on linux_blink_rel

https://storage.googleapis.com/chromium-layout-test-archives/linux_blink_rel/71483/layout-test-results/results.html

Original issue's description:
> Add fast normalize for SkLightingImageFilter.
>
> The normalize routine in SkPoint3 is very robust. However, for simple
> lighting cases we prefer speed over robustness. This fixes a perf
> regression in smoothness.tough_filters_cases.
>
> BUG=chromium:510562
>
> Committed: https://skia.googlesource.com/skia/+/dfa0ecf169db87f7afddd93bc1c500de481a62c7

TBR=reed@google.com,senorblanco@google.com,senorblanco@chromium.org,jvanverth@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:510562

Review URL: https://codereview.chromium.org/1244523002
2015-07-16 16:02:39 -07:00
senorblanco
ed7cf27322 Now that the SkImageFilter::CropRect crop edges refer to
width & height, name them appropriately.

BUG=240827

Review URL: https://codereview.chromium.org/1234873005
2015-07-16 15:19:11 -07:00
joshualitt
47d280d3b0 Fix visual bench memory leak
BUG=skia:

Review URL: https://codereview.chromium.org/1239103002
2015-07-16 14:23:22 -07:00
caryclark
ef14cb397c make glyph_pos imageblur* largeglyphblur portable
R=reed@google.com,bungeman@google.com

Review URL: https://codereview.chromium.org/1243493003
2015-07-16 14:16:04 -07:00
joshualitt
31b21f6719 Small fix for visualbench
BUG=skia:

Review URL: https://codereview.chromium.org/1237563005
2015-07-16 13:40:51 -07:00
reed
189186337e refactor code to apply the croprect
BUG=skia:

Review URL: https://codereview.chromium.org/1218993002
2015-07-16 13:17:13 -07:00
jvanverth
dfa0ecf169 Add fast normalize for SkLightingImageFilter.
The normalize routine in SkPoint3 is very robust. However, for simple
lighting cases we prefer speed over robustness. This fixes a perf
regression in smoothness.tough_filters_cases.

BUG=chromium:510562

Review URL: https://codereview.chromium.org/1240023002
2015-07-16 12:56:46 -07:00
scroggo
c1121efbc6 Stop running image tests on msaa.
Blacklist all image tests on msaa. We do not run them anyway (since
they will not do anything interestingly different from drawing to the
raster backend) - we early exit from Src::draw(), but we still need to
create a render target that matches the size of the image (when not
blacklisted).

Remove the more specific blacklist of a particular image, which is
covered by this one.

BUG=skia:4045

Review URL: https://codereview.chromium.org/1234313006
2015-07-16 12:36:10 -07:00
caryclark
d2ce18520e make imagefilters* imagemagnifier imageresizetiled portable
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1238083004
2015-07-16 12:35:58 -07:00
bsalomon
bea0150d83 Revert of Remove rt flags that are not necessary (patchset #1 id:1 of https://codereview.chromium.org/1226123012/)
Reason for revert:
breaks tests, e.g.
https://build.chromium.org/p/client.skia.android/builders/Test-Android-GCC-Nexus9-GPU-TegraK1-Arm64-Release/builds/752/steps/dm/logs/stdio

Original issue's description:
> Remove rt flags that are not necessary
>
> Committed: https://skia.googlesource.com/skia/+/b6b0a6ef179f4143c94ba7e0e1be6e7ce4b0a23a

TBR=joshualitt@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1234503004
2015-07-16 10:00:28 -07:00
bsalomon
b6b0a6ef17 Remove rt flags that are not necessary
Review URL: https://codereview.chromium.org/1226123012
2015-07-16 09:34:57 -07:00