Commit Graph

18151 Commits

Author SHA1 Message Date
caryclark
d4349723fa fix path ops fuzz buster
Mark collapsed segments as done and remove collapsed
segment references from the coincidence array.

Also add test names to global debugging.

R=fmalita@chromium.org
BUG=512592

Review URL: https://codereview.chromium.org/1250293002
2015-07-23 12:40:22 -07:00
caryclark
a0170f10aa make dftext the same on Linux and Android
Use the same font sizes on both platforms so that the gm images
are easier to compare one to the other.

TBR=jvanverth@google.com

Review URL: https://codereview.chromium.org/1253573006
2015-07-23 12:38:59 -07:00
bsalomon
a449779a33 Remove test of illegal behavior that modifies a texture backing an SkImage.
Review URL: https://codereview.chromium.org/1244143004
2015-07-23 12:22:19 -07:00
msarett
a56884c17f Fix Android x86 compile on mac
It appears I failed to fully disable it on the first attempt.

BUG=skia:

Review URL: https://codereview.chromium.org/1249083004
2015-07-23 11:57:13 -07:00
hendrikw
4e34001ec0 Skia: ANGLE Roll
Includes fix for vertex index.

BUG=510585

Review URL: https://codereview.chromium.org/1246143005
2015-07-23 11:56:40 -07:00
caryclark
3b0f98ee17 fix typeface leak
TBR=bungeman@google.com

Review URL: https://codereview.chromium.org/1239303003
2015-07-23 11:52:01 -07:00
bsalomon
494aa593c5 Fix ImageNewSurface test on S4.
This still leaves the SkImage_NewFromTexture broken.

Review URL: https://codereview.chromium.org/1253513004
2015-07-23 11:45:02 -07:00
robertphillips
eb86b55fe9 Fix variable shadowing in SkMorphologyImageFilter
Review URL: https://codereview.chromium.org/1245883005
2015-07-23 11:35:08 -07:00
jvanverth
29c69793f0 Update fallback rsqrt implementation to use optimal constants.
Improves max relative error from 0.00175126 to 0.000650197.
Also add unit tests to check error bounds.

BUG=chromium:511458

Review URL: https://codereview.chromium.org/1251423002
2015-07-23 11:14:29 -07:00
joshualitt
4765bdcd63 fix comment on GrBatchTextStrike
TBR=bsalomon@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1252783002
2015-07-23 10:58:48 -07:00
caryclark
e663341605 fix typo
TBR=reed@google.com

Review URL: https://codereview.chromium.org/1245993003
2015-07-23 09:11:58 -07:00
mtklein
b9c47f9968 Have Windows use _mm_rsqrt_ss too.
Tidy up a little while I'm in here:
  1) SIMD headers are now included by SkTypes.h as appropriate.
  2) _mm_cvtss_f32() is pithier and generates the same code.

Looks like this is the only code checking for SSE wrong.  After this CL:
    ~/skia (sse) $ git grep __SSE
    include/core/SkPreConfig.h:    #if defined(__SSE4_2__)
    include/core/SkPreConfig.h:    #elif defined(__SSE4_1__)
    include/core/SkPreConfig.h:    #elif defined(__SSE3__)
    include/core/SkPreConfig.h:    #elif defined(__SSE2__)
every other check is in SkPreConfig.h where it belongs.

This is going to affect some GMs subtly on Windows.

BUG=chromium:511458

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

Review URL: https://codereview.chromium.org/1248503004
2015-07-23 08:37:02 -07:00
joshualitt
11dfc8e57a Small tweak to TextBlobCacheTest
TBR=bsalomon@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1251383003
2015-07-23 08:30:25 -07:00
joshualitt
bedf7e5c0e fix memory leak in TextBlobCacheTest
TBR=bsalomon@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1252593002
2015-07-23 08:09:35 -07:00
bsalomon
398260262f Attempt to somewhat simplify GrContext::readSurfacePixels interaction with GrGpu.
Review URL: https://codereview.chromium.org/1255483005
2015-07-23 08:07:21 -07:00
rmistry
6d600af80a Fix formatting in the CQ keywords markdown
BUG=skia:
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=1247323002
TBR=jcgregorio

Review URL: https://codereview.chromium.org/1247323002
2015-07-23 08:02:13 -07:00
wangyix
150714fb16 Name of primitive processor will now be printed in generated shader code
BUG=skia:

Review URL: https://codereview.chromium.org/1253513003
2015-07-23 08:02:09 -07:00
joshualitt
9efef7b56f Revert "Update Android Apps to use gradle"
This reverts commit 425535f162.

NOTRY=true
NOTREECHECKS=true
TBR=djsollen@google.com
BUG=skia:
DOCS_PREVIEW= https://skia.org/?cl=1250233002

Review URL: https://codereview.chromium.org/1250233002
2015-07-23 08:00:33 -07:00
wangyix
7c157a9888 Added GrGLFragmentProcessor::EmitArgs struct for use with emitCode()
BUG=skia:

Review URL: https://codereview.chromium.org/1251173002
2015-07-22 15:08:53 -07:00
borenet
243406e580 Add skia_use_android_framework_defines GYP_DEFINE
BUG=skia:4082

Review URL: https://codereview.chromium.org/1243383002
2015-07-22 13:29:25 -07:00
robertphillips
ff0ca5ed82 Misc cleanup
This is split off of https://codereview.chromium.org/1225923010/ (Start tightening correspondence betweeen GrDrawContext and GrRenderTarget). It:

fixes some style nits
replaces some passing of GrContext with GrTextureProvider & GrDrawContext
does a bit of the finer grained creation of GrDrawContexts

Review URL: https://codereview.chromium.org/1245183002
2015-07-22 11:54:44 -07:00
djsollen
425535f162 Update Android Apps to use gradle
This CL replaces ant with gradle for the task of building APKs.
The primary driver of this change is that it now allow us to
develop and test our apps using Android Studio.
DOCS_PREVIEW= https://skia.org/?cl=1215023017

Review URL: https://codereview.chromium.org/1215023017
2015-07-22 11:33:25 -07:00
joshualitt
404d9d620d Fix up textblobcachetest
TBR=bsalomon@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1250003003
2015-07-22 11:00:32 -07:00
mtklein
ced1585149 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

Committed: https://skia.googlesource.com/skia/+/860dcaa2ddfdadc050af4f943a84a9d499315066

Review URL: https://codereview.chromium.org/1245673002
2015-07-22 10:52:53 -07:00
fmalita
651c920d2f Add drawImage{Rect,} support to SkDebugCanvas
R=robertphillips@google.com,mtklein@google.com

Review URL: https://codereview.chromium.org/1253473002
2015-07-22 10:23:01 -07:00
wangyix
6af0c93943 Moved GrGLFragmentProcessor definition to its own file
BUG=skia:

Review URL: https://codereview.chromium.org/1246193002
2015-07-22 10:21:17 -07:00
bsalomon
265697d91b Remove some redundant fields from BitmapTextBatch (and rename to TextBatch).
Review URL: https://codereview.chromium.org/1244093004
2015-07-22 10:17:26 -07:00
hendrikw
1ae488f78b skia: GrGLAssembleGLInterface update load chromium extension functions
Command buffer will expose GL_CHROMIUM_framebuffer_multisample and
GL_CHROMIUM_map_sub, added support for these to enable interface
validation to succeed.

Review URL: https://codereview.chromium.org/1248853003
2015-07-22 09:30:08 -07:00
msarett
551369163f Fix Android framework build
The Android framework was failing on conditions in
libjpeg-turbo.gyp, even though libjpeg-turbo is listed
in dependencies! for the framework (maybe because I
forgot to add export_dependent_settings!).  This is fixed
by rearranging the gyp file.

BUG=skia:

Review URL: https://codereview.chromium.org/1249003002
2015-07-22 09:08:28 -07:00
jvanverth
3fc656006c Fix tile drop-out on S4 for texture decal mode.
Switch to use highp on interpolants.
Also removes some unnecessary formatting.

BUG=skia:3381

Review URL: https://codereview.chromium.org/1245703004
2015-07-22 08:41:51 -07:00
borenet
4cb300340e Coverage: add a trace for not_covered_lines per file
Example output:

{
    "build_number": "2",
    "gitHash": "71f5db892ee7ed9fbb573da28ccb906e18ba24a4",
    "key": {
        "arch": "x86_64",
        "compiler": "Clang",
        "configuration": "Coverage",
        "cpu_or_gpu": "CPU",
        "cpu_or_gpu_value": "AVX2",
        "model": "GCE",
        "os": "Ubuntu"
    },
    "results": {
        "dm_DMGpuSupport_h": {
            "coverage": {
                "lines_not_covered": 6,
                "options": {
                    "dir": "dm",
                    "fullname": "dm/DMGpuSupport.h",
                    "source_type": "coverage"
                },
                "percent": 33.33333333333333
            }
        },
        "dm_DMJsonWriter_cpp": {
......

BUG=skia:2430

Review URL: https://codereview.chromium.org/1246043002
2015-07-22 08:19:25 -07:00
scroggo
b636b45971 Add the ability to decode a subset to SkCodec
This allows codecs that support subsets natively (i.e. WEBP) to do so.

Add a field on SkCodec::Options representing the subset.

Add a method on SkCodec to find a valid subset which approximately
matches a desired subset.

Implement subset decodes in SkWebpCodec.

Add a test in DM for decoding subsets.
Notice that we only start on even boundaries. This is due to the
way libwebp's API works. SkWEBPImageDecoder does not take this into
account, which results in visual artifacts.

FIXME: Subsets with scaling are not pixel identical, but close. (This
may be fine, though - they are not perceptually different. We'll just
need to mark another set of images in gold as valid, once
https://skbug.com/4038 is fixed, so we can tests scaled webp without
generating new images on each run.)

Review URL: https://codereview.chromium.org/1240143002
2015-07-22 07:16:20 -07:00
fmalita
8c0144ccb1 Fix SkCanvas::wouldOverwriteEntireSurface() contains test
R=reed@google.com,robertphillips@google.com,bsalomon@google.com

Review URL: https://codereview.chromium.org/1244093005
2015-07-22 05:56:16 -07:00
rmistry
71f5db892e Fix CQ keyword and add more detail
BUG=skia:
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=1246393002
TBR=jcgregorio

Review URL: https://codereview.chromium.org/1246393002
2015-07-22 04:29:38 -07:00
mtklein
78f55fc4bf Revert of 565 support for SIMD xfermodes (patchset #4 id:60001 of https://codereview.chromium.org/1245673002/)
Reason for revert:
NEON 565 gold images have gone ugly.  This is what I get for writing and testing SSE and just writing NEON.

E.g. colortype_xfermodes, dstreadshuffle, bigbitmaprect, pictures, textbloblooper, aaxfermodes (only Plus)

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
>
> Committed: https://skia.googlesource.com/skia/+/860dcaa2ddfdadc050af4f943a84a9d499315066

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

Review URL: https://codereview.chromium.org/1248893004
2015-07-21 18:34:43 -07:00
mtklein
860dcaa2dd 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

Review URL: https://codereview.chromium.org/1245673002
2015-07-21 17:23:39 -07:00
herb
c71239b9ff Change the GlyphCache to use a hash table instead of doing its own ad-hoc
hashing. This change appears to be performance neutral.
BUG=skia:

Review URL: https://codereview.chromium.org/1216983003
2015-07-21 15:36:25 -07:00
hendrikw
10b371c6e3 ANGLE deps roll
If we ever want to allow the command buffer as a skia gles2 backend,
we need a more up to date version of ANGLE, specifically there are
4 defines that differ between newer and older versions of ANGLE which
we use in skia, I've updated these in this change.

I'm not quite sure if what I've done for the 'angle_path' is correct,
I tried setting it to a path relative to skia, and to '<(DEPTH)', both
of which do not compile correctly, only '../' worked.

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

Review URL: https://codereview.chromium.org/1244843003
2015-07-21 14:50:08 -07:00
bungeman
b7069e9c1f Compile with VS2015.
Visual Studio 2015 has additional warnings around noexcept and
disabling exceptions, which can be worked around with the
(undocumented) _HAS_EXCEPTIONS macro.

Visual Studio 2013 and 2015 have roundf in math.h, so use it to
avoid extra work and casts.

We avoid using cmath, as it undefs isfinite on gcc, but Visual Studio
2015 no longer provides overloads of copysign from math.h (which is
actually correct). As a result, use copysignf (which is available in
math.h in 2013 and 2015) directly.

Review URL: https://codereview.chromium.org/1244173005
2015-07-21 14:14:30 -07:00
ericrk
7a787b4743 Revert of Bilinear optimization for 1D convolution. (patchset #5 id:200001 of https://codereview.chromium.org/1216623003/)
Reason for revert:
Ok, I am now seeing a couple issues. going to revert and investigate further.

Original issue's description:
> Bilinear optimization for 1D convolution.
>
> Splits GrGLConvolutionEffect into GrGLBilerpConvolutionEffect and
> GrGLBoundedConvolutionEffect. When doing a non-bounded convolution we now
> always use the GrGLBilerpConvolutionEffect which uses bilinear filtering to
> perform half as many samples in the texture.
>
> BUG=skia:3986
>
> Committed: https://skia.googlesource.com/skia/+/91abe10af417148939548551e210c001022d3bda
>
> Committed: https://skia.googlesource.com/skia/+/0f38612b0facf585854aba4556433b858cbf7da8

TBR=bsalomon@google.com,senorblanco@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3986

Review URL: https://codereview.chromium.org/1247063005
2015-07-21 14:06:16 -07:00
hendrikw
cd94d7341f Revert of skia: ANGLE deps roll (patchset #1 id:1 of https://codereview.chromium.org/1244843003/)
Reason for revert:
Compile error that the try bots didn't catch :(

Original issue's description:
> ANGLE deps roll
>
> If we ever want to allow the command buffer as a skia gles2 backend,
> we need a more up to date version of ANGLE, specifically there are
> 4 defines that differ between newer and older versions of ANGLE which
> we use in skia, I've updated these in this change.
>
> I'm not quite sure if what I've done for the 'angle_path' is correct,
> I tried setting it to a path relative to skia, and to '<(DEPTH)', both
> of which do not compile correctly, only '../' worked.
>
> Committed: https://skia.googlesource.com/skia/+/db0b1e796ddbd08e6be8a666537318b1c0e2ce56

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

Review URL: https://codereview.chromium.org/1245223007
2015-07-21 14:06:10 -07:00
hendrikw
db0b1e796d ANGLE deps roll
If we ever want to allow the command buffer as a skia gles2 backend,
we need a more up to date version of ANGLE, specifically there are
4 defines that differ between newer and older versions of ANGLE which
we use in skia, I've updated these in this change.

I'm not quite sure if what I've done for the 'angle_path' is correct,
I tried setting it to a path relative to skia, and to '<(DEPTH)', both
of which do not compile correctly, only '../' worked.

Review URL: https://codereview.chromium.org/1244843003
2015-07-21 13:18:27 -07:00
ericrk
0f38612b0f Bilinear optimization for 1D convolution.
Splits GrGLConvolutionEffect into GrGLBilerpConvolutionEffect and
GrGLBoundedConvolutionEffect. When doing a non-bounded convolution we now
always use the GrGLBilerpConvolutionEffect which uses bilinear filtering to
perform half as many samples in the texture.

BUG=skia:3986

Committed: https://skia.googlesource.com/skia/+/91abe10af417148939548551e210c001022d3bda

Review URL: https://codereview.chromium.org/1216623003
2015-07-21 13:15:47 -07:00
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