Commit Graph

16448 Commits

Author SHA1 Message Date
joshualitt
4b31de8328 handle null vertex or index buffers in batch
BUG=skia:

Review URL: https://codereview.chromium.org/979343002
2015-03-05 14:33:41 -08:00
bsalomon
cc4d6673a9 Increase default tile sizes in nanobench
R=mtklein@google.com

Review URL: https://codereview.chromium.org/982863003
2015-03-05 13:42:27 -08:00
mtklein
150d3503ed When running under Valgrind, don't draw .webps into .pdfs.
This blacklist entry bans any test with 'pdf' config, any source type, whose
name has '.webp' in it.  In practice, that's 'image' or 'subset' source type
decoding some WEBP file.

BUG=skia:3505

Review URL: https://codereview.chromium.org/982163002
2015-03-05 13:38:17 -08:00
mtklein
13e8e23967 Disable --config pdf temporarily on Valgrind bot.
BUG=skia:3505

Review URL: https://codereview.chromium.org/987533002
2015-03-05 13:06:30 -08:00
djsollen
961707f384 Remove SkPorterDuff now that Android has been updated.
BUG=skia:3178

Review URL: https://codereview.chromium.org/983743003
2015-03-05 12:42:29 -08:00
egdaniel
bdad9c34d8 Add flag to force gpu trace markers to be used and printed out for debugging.
BUG=skia:

Review URL: https://codereview.chromium.org/976413002
2015-03-05 12:19:17 -08:00
joshualitt
a0865b4620 Revert of Update SkPicture cull rects with RTree information (patchset #6 id:140001 of https://codereview.chromium.org/971803002/)
Reason for revert:
Might be breaking deps roll

Original issue's description:
> Update SkPicture cull rects with RTree information
>
> When computed, the RTree for an SkPicture will have a root
> bounds that reflects the best bounding information available,
> rather than the best estimate at the time the picture recorder
> is created. Given that creators frequently don't know ahead of
> time what will be drawn, the RTree bound is often tighter.
>
> Perf testing on Chrome indicates a small raster performance
> advantage. For upcoming painting changes in Chrome the
> performance advantage is much larger.
>
> BUG=
>
> Committed: https://skia.googlesource.com/skia/+/2dd3b6647dc726f36fd8774b3d0d2e83b493aeac

TBR=mtklein@google.com,schenney@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/977413003
2015-03-05 12:18:38 -08:00
herb
c1e97b372e Fix uninitialized memory bug in the SkGlyphCache.
The core of the problem is that the system is asked to lookup the metrics for a character with id == 0. This causes a hit in the fCharToGlyphHash matching the sentinel glyph. This happens because fCharToGlpyhHash is initialized with all zeros, therefore, the fID is zero matching the char with id == 0. The fAdvanceX field of the sentinel glyph is in fact not initialized.

The bigger question is now did a zero character get passed to getUnicharMetrics?

The breaking code is basically as follows:
wchar_t glyph = L'S';
paint.measureText(&glyph, 2);

This get mischaracterized as a utf8 string instead of a utf16(?) string. Because of the little endian ordering, this is the character string 'L' '\0'. Since the size of the original string is two bytes (but a single character) the '\0' is treated as its own character and past to getUnicharMetrics.

TEST:
On windows failed using DrMemory. With this change does not fail.

BUG=463204

Review URL: https://codereview.chromium.org/977063002
2015-03-05 11:51:11 -08:00
scroggo
56e25ddf6e DM: Use the new non-fatal errors for invalid color conversions.
Also allow incomplete to be considered successful.

Do not attempt to draw transparent images on 565.

BUG=skia:3475

Review URL: https://codereview.chromium.org/978413002
2015-03-05 11:46:40 -08:00
mtklein
548bf38b28 4-at-a-time SkPMColor -> SkPMFloat API.
Please see if this looks usable.  It may even give a perf boost if you use it, even without custom implementations for each instruction set.

I've been trying this morning to beat this naive loop implementation, but so far no luck with either _SSE2.h or _SSSE3.h.  It's possible this is an artifact of the microbenchmark, because we're not doing anything between the conversions.  I'd like to see how this fits into real code, what assembly's generated, what the hot spots are, etc.

I've updated the tests to test these new APIs, and splintered off a pair of new benchmarks that use the new APIs.  This required some minor rejiggering in the benches.

BUG=skia:

Review URL: https://codereview.chromium.org/978213003
2015-03-05 11:31:59 -08:00
rmistry
7750c6fa99 Whitespace change to test new CQ trybot
BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/987433002
2015-03-05 10:26:04 -08:00
reed
dac843bf04 Use ComposeColorFilter in factory to collapse consecutive filters (when possible).
Change asColorFilter to reflect its reliance on the new factory behavior.

patch from issue 967143002 at patchset 80001 (http://crrev.com/967143002#ps80001)

BUG=skia:

Review URL: https://codereview.chromium.org/967833003
2015-03-05 10:22:20 -08:00
robertphillips
bca3c9fb2d Update gpu trace marker system for MultiDrawBuffer world
The main thrust of this CL is to remove the currCmdMarker variable from GrTargetCommands::flush. In a MultiDrawBuffer world the Cmds need not be execute in the order of their issuance.

Review URL: https://codereview.chromium.org/978363002
2015-03-05 09:17:18 -08:00
djsollen
7bdc8dfaab Add custom dm upload script to be used by the android framework
Review URL: https://codereview.chromium.org/979153002
2015-03-05 09:13:58 -08:00
robertphillips
d14101e835 Fix GPU trace marker bug
Without this patch the GPU trace markers can be potentially unbalanced when batching occurs.

Review URL: https://codereview.chromium.org/981973002
2015-03-05 08:55:28 -08:00
mtklein
4089ef7c98 DM: support non-fatal errors
Tasks that produce a non-fatal error will bail out before writing their output to
disk and hash to dm.json, but not count as failures.

This also makes true failures bail out before writing their results.  If the DM
program failed, we probably don't want to triage that image result.

We use this new feature first to skip image subset decoding when we detect it's
not supported.  Here's a snippet of an example run, where in this case only
.webp are subset decodable:

...
(  15MB    12) 172µs	8888 subset color_wheel.jpg (skipped: Subset decoding not supported.)
(  15MB    11) 9.05ms	8888 subset randPixels.webp
(  16MB    10) 863µs	8888 subset baby_tux.png (skipped: Subset decoding not supported.)
...

Only outputs corresponding to the .webp show up, both on disk and in the .json.

BUG=skia:

Review URL: https://codereview.chromium.org/980333002
2015-03-05 08:40:28 -08:00
tomhudson
64de1e1790 ViaAndroidSDK for DM
Make a Via for DM which transforms a set of draws to be more like what
we'd see through the Android Framework's HWUI API. Only built inside
Android's framework because we depend on HWUI classes for half of
those transformations.

Tested with --config androidsdk-8888 and --config androidsdk-hwui.

R=djsollen@google.com,mtklein@google.com,reed@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/974913002
2015-03-05 08:01:07 -08:00
schenney
2dd3b6647d Update SkPicture cull rects with RTree information
When computed, the RTree for an SkPicture will have a root
bounds that reflects the best bounding information available,
rather than the best estimate at the time the picture recorder
is created. Given that creators frequently don't know ahead of
time what will be drawn, the RTree bound is often tighter.

Perf testing on Chrome indicates a small raster performance
advantage. For upcoming painting changes in Chrome the
performance advantage is much larger.

BUG=

Review URL: https://codereview.chromium.org/971803002
2015-03-05 07:43:10 -08:00
reed
dc812222a7 add impl limit for number of leaf-nodes in composecolorfilter
BUG=skia:

Review URL: https://codereview.chromium.org/972153010
2015-03-05 07:21:02 -08:00
senorblanco
9ba3972ed9 Batchify the tessellated path renderer.
Review URL: https://codereview.chromium.org/976103002
2015-03-05 07:13:42 -08:00
jcgregorio
71b03e468d Add some METADATA files to control docs layout.
BUG=skia:3484
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=976303002

Review URL: https://codereview.chromium.org/976303002
2015-03-05 07:11:13 -08:00
kkinnunen
a9baa652bb Revert of Add image as a draw type that can be filtered (patchset #4 id:60001 of https://codereview.chromium.org/960783003/)
Reason for revert:
Fails on mac for some reason.
Also is a bit wrong, but this should not be reason for the failure..

Original issue's description:
> Add image as a draw type that can be filtered
>
> Add image as a draw type that can be filtered.
>
> This is needed when SkImage is added as an object to be drawn so that
> the draw is forwarded to SkBaseDevice. This would be used in making
> filters use SkImages.
>
> BUG=skia:3388
>
> Committed: https://skia.googlesource.com/skia/+/fa77eb1e51b9317ff993d1be504ada173b561e5f

TBR=reed@google.com,bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3388

Review URL: https://codereview.chromium.org/980273002
2015-03-05 06:33:54 -08:00
kkinnunen
fa77eb1e51 Add image as a draw type that can be filtered
Add image as a draw type that can be filtered.

This is needed when SkImage is added as an object to be drawn so that
the draw is forwarded to SkBaseDevice. This would be used in making
filters use SkImages.

BUG=skia:3388

Review URL: https://codereview.chromium.org/960783003
2015-03-05 00:39:45 -08:00
msarett
c877a71b35 4x library for NEON
CQ_EXTRA_TRYBOTS=client.skia.android:Test-Android-Nexus5-Adreno330-Arm7-Debug-Trybot

BUG=skia:

Review URL: https://codereview.chromium.org/975303003
2015-03-04 15:55:54 -08:00
mtklein
82b33dbcb2 DM: no PDF for Daisy either
BUG=skia:

Review URL: https://codereview.chromium.org/974413002
2015-03-04 13:58:05 -08:00
reed
b7affb56bb udpate dox for colorfilter fragment processor requirements
BUG=skia:
NOTRY=True

Review URL: https://codereview.chromium.org/961933003
2015-03-04 13:30:50 -08:00
caryclark
94b4ee85f2 (starting with mtklein's 966503002 mod to 963593003)
fix casts

Committed: https://skia.googlesource.com/skia/+/9e73a84deb5e6c201081b1d30175863898543e8d

Review URL: https://codereview.chromium.org/979453004
2015-03-04 12:32:22 -08:00
bsalomon
6ba6fa1526 Improve tracking of bound FBOs in GrGLGpu.
Committed: https://skia.googlesource.com/skia/+/d2ad8eb5801e2c8c0fa544a6a776bb46eedde2a0

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

Committed: https://skia.googlesource.com/skia/+/0b70b86a7e9fda52ee7ebc1b9897eeaa09b9abef

Review URL: https://codereview.chromium.org/949263002
2015-03-04 11:57:37 -08:00
mtklein
84aada88ca DM: run PDF except on Android bots.
While we work out RAM issues on Android, run everywhere else.

BUG=skia:

Review URL: https://codereview.chromium.org/971463004
2015-03-04 11:47:11 -08:00
mtklein
a84cff9b99 Revert of fix casts (patchset #1 id:1 of https://codereview.chromium.org/979453004/)
Reason for revert:
64-bit windows build warnings-as-errors

Original issue's description:
> (starting with mtklein's 966503002 mod to 963593003)
> fix casts
>
> Committed: https://skia.googlesource.com/skia/+/9e73a84deb5e6c201081b1d30175863898543e8d

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

Review URL: https://codereview.chromium.org/977583007
2015-03-04 11:46:27 -08:00
mtklein
4e644f5d50 Update SkPMFloat API a bit.
Instead of set(SkPMColor), add a constructor SkPMFloat(SkPMColor).
Replace setA(), setR(), etc. with a 4 float constructor.

And, promise to stick to SkPMColor order.

BUG=skia:

Review URL: https://codereview.chromium.org/977773002
2015-03-04 11:25:27 -08:00
caryclark
9e73a84deb (starting with mtklein's 966503002 mod to 963593003)
fix casts

Review URL: https://codereview.chromium.org/979453004
2015-03-04 11:22:05 -08:00
fmalita
85d5eb9294 Pass blob bounds to the looper, if available
R=robertphillips@google.com,reed@google.com

Review URL: https://codereview.chromium.org/979943002
2015-03-04 11:20:12 -08:00
bsalomon
ea8b55db88 simplify logic in SkPerliNoiseShader for GPU when constant color
BUG=skia:3488

Review URL: https://codereview.chromium.org/974183002
2015-03-04 11:03:52 -08:00
hendrikw
876c3132d7 skia: Add tracing for skia's budget
We've run into several places where GPU rasterization slows down a lot,
and in some cases, it's due to use reaching skia's budget.  This shows a
graph of skia's used and free budgeted memory.

Review URL: https://codereview.chromium.org/977143002
2015-03-04 10:33:50 -08:00
mtklein
8c7ba092a6 Add SSSE3 implementation for SkPMFloat, with faster get() and set().
With SSSE3, we can use the Swiss Army Knife byte shuffler pshufb,
a.k.a. _mm_shuffle_epi8(), to jump directly between 32 and 128 bits.

In microbench isolation, this looks like an additional 10-15% speedup:

SkPMFloat_get:   2.35ns -> 1.98ns
SkPMFloat_clamp: 2.35ns -> 2.18ns

Before this CL, get() and clamp() were identical code.  The _get benchmark improves because both set() and get() become faster; the _clamp benchmark shows the improvement from set() getting faster with clamp() staying the same.

BUG=skia:

Review URL: https://codereview.chromium.org/976493002
2015-03-04 10:18:10 -08:00
joshualitt
b8410601e4 Revert of Adding linear interpolation to rgb->yuv conversion (patchset #1 id:1 of https://codereview.chromium.org/973563002/)
Reason for revert:
Speculative revert to see if this unblocks the deps roll

Original issue's description:
> Adding linear interpolation to rgb->yuv conversion
>
> When the UV planes are smaller than the Y plane, doing the upscaling in nearest mode was creating artefacts, so I changed it to use linear interpolation to fix the issue.
>
> BUG=460380
>
> Committed: https://skia.googlesource.com/skia/+/cd9d42c5167a50f1bf20e969343556d61354171b

TBR=bsalomon@google.com,scroggo@google.com,reed@google.com,sugoi@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=460380

Review URL: https://codereview.chromium.org/977133002
2015-03-04 09:56:09 -08:00
reed
01849ac16a disable chatting debugf
BUG=skia:
TBR=bsalomon@google.com

Review URL: https://codereview.chromium.org/974883005
2015-03-04 07:51:37 -08:00
hendrikw
f72558e574 Fix uninitialized variable in GrGpu
Stumbled on this while running a trace.

Review URL: https://codereview.chromium.org/975993002
2015-03-04 06:22:18 -08:00
fmalita
024f996c1d Text blob run paints should be filtered.
We're constructing blob run paints after the canvas draw filter has been
applied.

Instead, we need do defer text blob draw filters until we have access
to the full run paints.

BUG=skia:3494
R=reed@google.com,mtklein@google.com

Review URL: https://codereview.chromium.org/973973003
2015-03-03 19:08:17 -08:00
sugoi
cd9d42c516 Adding linear interpolation to rgb->yuv conversion
When the UV planes are smaller than the Y plane, doing the upscaling in nearest mode was creating artefacts, so I changed it to use linear interpolation to fix the issue.

BUG=460380

Review URL: https://codereview.chromium.org/973563002
2015-03-03 13:28:30 -08:00
robertphillips
193ea935b0 Split GrTargetCommands into its own files
Review URL: https://codereview.chromium.org/979493002
2015-03-03 12:40:50 -08:00
Eric Boren
030854eb92 Run gyp on Win with --no-parallel -G config=$(BUILDTYPE), fix pylint
The previous change didn't affect Windows...

BUG=skia:3287
R=mtklein@google.com

Review URL: https://codereview.chromium.org/975803002
2015-03-03 13:15:38 -05:00
scroggo
f9b31ebc79 Return to building libpng_static off of Android.
Fixes the fix in https://codereview.chromium.org/971243003/, to
build places that are not Android.

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

Review URL: https://codereview.chromium.org/973863002
2015-03-03 09:39:58 -08:00
scroggo
3b234f737b Build the Android version of PNG on Android.
Fixes Android build failures.

Android builds a custom version of libpng (instead of the one
determined by skia_libpng_static) which supplies extra needed
functions.

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

Review URL: https://codereview.chromium.org/971243003
2015-03-03 09:34:58 -08:00
robertphillips
dad7794dcb Split command holding object (GrTargetCommands) out of GrInOrderDrawBuffer
This is still a bit odd in that the IoDB and TargetCommands are annoyingly interwoven. This should improve a bit when batching is everywhere.

Joshua - I think you're lead on this.

Review URL: https://codereview.chromium.org/973853002
2015-03-03 09:28:16 -08:00
halcanary
47ef4d5d93 XPS, DM: add SkDocument::CreateXPS
-   SkDocument::CreateXPS() function added, returns NULL on non-Windows OS.

-   DM: (Windows only) an XPSSink is added, fails on non-Windows OS

-   DM: Common code for PDFSink::draw and XPSSink::draw are factored into
    draw_skdocument static function.

-   SkDocument_XPS (Windows only) implementation of SkDocument via
    SkXPSDevice.

-   SkDocument_XPS_None (non-Windows) returns NULL for
    SkDocument::CreateXPS().

-   gyp/xps.gyp refactored.

-   SkXPSDevice::drawTextOnPath removed (see http://crrev.com/925343003 )

-   SkXPSDevice::drawPath supports conics via SkAutoConicToQuads.

Review URL: https://codereview.chromium.org/963953002
2015-03-03 09:13:09 -08:00
scroggo
f24f2247c2 Add SkCodec, including PNG implementation.
DM:
Add a flag to use SkCodec instead of SkImageDecoder.

SkCodec:
Base class for codecs, allowing creation from an SkStream or an SkData.
An SkCodec, on creation, knows properties of the data like its width and height. Further calls can be used to generate the image.
TODO: Add scanline iterator

SkPngCodec:
New decoder for png. Wraps libpng. The code has been repurposed from SkImageDecoder_libpng.
TODO: Handle other destination colortypes
TODO: Substitute the transpose color
TODO: Allow silencing warnings
TODO: Use RGB instead of filler?
TODO: sRGB

SkSwizzler:
Simplified version of SkScaledSampler. Unlike the sampler, this object does no sampling.
TODO: Implement other swizzles.

Requires a gclient sync to pull down libpng.

BUG=skia:3257

Committed: https://skia.googlesource.com/skia/+/ca358852b4fed656d11107b2aaf28318a4518b49
(and then reverted)

Review URL: https://codereview.chromium.org/930283002
2015-03-03 08:59:20 -08:00
mtklein
0aebf5d0d3 Test and fix SkPMFloat rounding.
SSE rounds for free (that was a happy accident: they also have a truncating version).
NEON does not, nor obviously the portable code, so they add 0.5 before truncating.

NOPRESUBMIT=true

BUG=skia:

Review URL: https://codereview.chromium.org/974643002
2015-03-03 08:57:07 -08:00
halcanary
c2574f3657 Revert of XPS, DM: add SkDocument::CreateXPS (patchset #8 id:310001 of https://codereview.chromium.org/963953002/)
Reason for revert:
breaking iOS build.

Original issue's description:
> XPS, DM: add SkDocument::CreateXPS
>
> -   SkDocument::CreateXPS() function added, returns NULL on non-Windows OS.
>
> -   DM: (Windows only) an XPSSink is added, fails on non-Windows OS
>
> -   DM: Common code for PDFSink::draw and XPSSink::draw are factored into
>     draw_skdocument static function.
>
> -   SkDocument_XPS (Windows only) implementation of SkDocument via
>     SkXPSDevice.
>
> -   SkDocument_XPS_None (non-Windows) returns NULL for
>     SkDocument::CreateXPS().
>
> -   gyp/xps.gyp refactored.
>
> -   SkXPSDevice::drawTextOnPath removed (see http://crrev.com/925343003 )
>
> -   SkXPSDevice::drawPath supports conics via SkAutoConicToQuads.
>
> NOPRESUBMIT=true
>
> Committed: https://skia.googlesource.com/skia/+/00d39bcbfc8394a9b48b86b04ab06ec19091fa43

TBR=reed@google.com,bungeman@google.com,mtklein@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/978443002
2015-03-03 08:34:14 -08:00