Commit Graph

13760 Commits

Author SHA1 Message Date
caryclark
79418093c1 if the winding of the top can't be computed, give up
TBR=reed@google.com
BUG=641478
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2283993002

Review-Url: https://codereview.chromium.org/2283993002
2016-08-26 14:24:24 -07:00
halcanary
4871f22777 SkPDF: Glyph validation change
Instead of mapping invaid glyphIDs to zero or maxGlyphID,
don't draw them at all.

Validate glyphs when glyph is written, not ahead of time.

Don't allocate array to copy user-provided glyphs.

Easy early exit from SkPDFDevice::internalDrawText()
    GlyphPositioner::flush() called ~GlyphPositioner()
    SkScopeExit class now exists.

Assume SkTypeface* pointers are now never null in more
places.

precalculate alignmentFactor to clean up code.

SkPDFDevice::updateFont must be called with validated
glyphID.  Skip bad glyphs to make this true.

SkPDFDevice::updateFont always succeeds.

SkPDFFont::GetFontResource always succeeds (preconditions are
asserted).  If GetMetrics fails, don't call GetFontResource.

SkPDFFont::glyphsToPDFFontEncodingCount() becomes
SkPDFFont::countStretch() and is inlined.

SkPDFFont::glyphsToPDFFontEncoding now works one Glyph at a
time and is inlined.

SkPDFFont::noteGlyphUsage() operates one glyph at a time.

Add SkScopeExit.h; also a unit test for it.

SkPostConfig: Fix SK_UNUSED for Win32.

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

BUG=625995

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2278703002

Review-Url: https://codereview.chromium.org/2278703002
2016-08-26 13:17:44 -07:00
fmalita
ab83da7142 drawBitmapRect() should not touch the CTM when mask filters are present
Blur sigma calculations are CTM dependent, so we cannot take the
drawBitmap() fast path in the presence of mask filters.

BUG=skia:5682
R=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2286873002

Review-Url: https://codereview.chromium.org/2286873002
2016-08-26 13:04:14 -07:00
msarett
febb224699 Reduce CPU overhead on drawRegion()
Only batch when the view matrices are the same.

This allows us to skip applying the matrix and uploading
local coords.

drawregion Bench on Nexus 6P:
Before 4.69ms
After  2.83ms

This puts SkiaGL nearly on par with OpenGL.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2282983003

Review-Url: https://codereview.chromium.org/2282983003
2016-08-26 12:49:27 -07:00
egdaniel
ce3bfb1ed1 Don't add the resolve attachment to vulkan render passes.
Also includes some other msaa bug fixes

BUG=skia:5127
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256843002

Review-Url: https://codereview.chromium.org/2256843002
2016-08-26 11:05:13 -07:00
ethannicholas
fab4a9b988 fixed 'corners' of paths in GrAAConvexTessellator
BUG=skia:5671
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2280943003

Review-Url: https://codereview.chromium.org/2280943003
2016-08-26 11:03:32 -07:00
bsalomon
cb31e51d93 Converts a drawPaint through a rrect clip to a drawRRect in GrDrawContext.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2271053004

Review-Url: https://codereview.chromium.org/2271053004
2016-08-26 10:48:19 -07:00
brianosman
e3031b607c Update ANGLE to latest as of August 25, 2016
With this version, it's now exposing GL_EXT_color_buffer_half_float, but
it's (incorrectly) using GL_HALF_FLOAT rather than GL_HALF_FLOAT_OES.
In addition, release builds were crashing in EGLImageTest due to an
apparent disagreement about calling convention on function-pointer to
exported symbol. There is a proper typedef for that in one of their
headers, but I can't seem to include it without creating more problems,
so I just fixed the decoration on our local typedef.

With those changes, all tests pass, and (on my Windows machine), all
GMs and SKPs produce identical results vs. master in angle and angle-gl.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2282733003

Review-Url: https://codereview.chromium.org/2282733003
2016-08-26 10:37:57 -07:00
drott
358f93de3d Restrict supported font formats in Chrome context
Chrome's complex text path uses HarfBuzz OpenType glyph lookup
functions. These do not support glyph lookup in Type 1 / Postscript
fonts and we do not wish to support those in Chrome any longer.

In order to avoid matching fonts against Type 1 fonts possible present
on Linux installations and exposed through fontconfig, this CL filters
those out in Skia's font matching code.

This change might not be desirable for all context in which Skia is
used, hence making it conditional on a Chrome context define.

BUG=skia:5685
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2280053002

Review-Url: https://codereview.chromium.org/2280053002
2016-08-26 10:08:45 -07:00
caryclark
f71ab8f58b avoid generating degenerate conic from arc
R=bsalomon@google.com
BUG=skia:5672
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2281953002

Review-Url: https://codereview.chromium.org/2281953002
2016-08-26 09:54:25 -07:00
vjiaoblack
56f33ea2ac Added distance attenuation and diffuse shading to PointLights
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246463004

Review-Url: https://codereview.chromium.org/2246463004
2016-08-26 08:49:46 -07:00
jvanverth
6a3976114d Fix for fat stroked roundrects.
The original method did not correctly compute the distance value along
the inner edge, so the antialiasing was not quite correct. This fixes
that by adding additional vertices and setting a different outerRadius.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275423002

Review-Url: https://codereview.chromium.org/2275423002
2016-08-26 08:15:33 -07:00
bungeman
22cffcace2 SkOSFile instead of dirent in android font parser.
This makes the parser more portable while making essentially the same
file system calls on Android.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2279033004

Review-Url: https://codereview.chromium.org/2279033004
2016-08-26 07:15:50 -07:00
msarett
dca352e2d4 drawRegion() cleanups
(1) Move implementation to the cpp.
(2) Check for the isRect() case.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2286693002

Review-Url: https://codereview.chromium.org/2286693002
2016-08-26 06:37:45 -07:00
robertphillips
ad2344693c Ignore fill when stroke & filling convex line-only paths
This seems to work well for miter and bevel joins with the resulting stroke and fill path remaining convex. There seems to be an issue with round joins where the outer generated shell is usually not convex. Without this CL the resulting stroke & filled paths are always concave.

Perf-wise (on Windows):

convex-lineonly-paths-stroke-and-fill bench

(in ms)   w/o   w/CL    %decrease

8888      2.88  2.01      30.2

gpu       4.4   1.38      68.6

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275243003

Review-Url: https://codereview.chromium.org/2275243003
2016-08-26 05:30:19 -07:00
msarett
cc319b95a5 GPU implementation of drawRegion()
Nexus 6P drawregion Bench Performance
Before 48.0ms
After  3.57ms

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2267273006

Review-Url: https://codereview.chromium.org/2267273006
2016-08-25 18:07:18 -07:00
mtklein
7d6fb2c92d GN: Android
Once you have downloaded an android NDK, you can set the ndk GN arg to use it.
E.g. my gn.args looks like:
  is_debug = false
  ndk = "/opt/android-ndk"

This should be enough to get you going for an arm64 build.  You ought to be able to tweak that to other architectures by changing target_cpu to "arm", "x86", "x86-64", etc.  That won't quite work until I follow this up a bit, but the skeleton is there.

This is enough to get me compiled, linked, and running to completion on my N5x.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275983004

Review-Url: https://codereview.chromium.org/2275983004
2016-08-25 14:50:44 -07:00
msarett
44df651ebe Add drawRegion() API to SkCanvas
This will allow us to optimize for the RectGrid macrobench.
Currently, SkiaGL is much slower than OpenGL.
SkiaGL  12 items/s
OpenGL 160 items/s

This contains everything except for the fast implementation on GPU.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2277053002

Review-Url: https://codereview.chromium.org/2277053002
2016-08-25 13:54:30 -07:00
egdaniel
4d866dfc46 Add support for getting vulkan descriptor sets without a GrVkUniformHandler.
This change allows us to use the current descriptor set system for doing
copies as draws. This is a step towards being able to track resources for draws
that don't go through out normal pipeline.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275633002

Review-Url: https://codereview.chromium.org/2275633002
2016-08-25 13:52:00 -07:00
bsalomon
21af9ca1b1 Respecify SkCanvas::drawArc, consolidate conversion to SkPath, add GM for oddball drawArcs
Allows the arc to wind more than 360 degrees when useCenter is true, specs that nothing draws
if the oval is empty or the sweep angle is 0.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2281653002

Review-Url: https://codereview.chromium.org/2281653002
2016-08-25 12:29:24 -07:00
caryclark
29b2563afb path ops stream-lining
The addT() function is a workhorse of pathops.
Make it simpler, removing branches and parameters.

Separate addOpp() into const and modify parts.

Add more debugging that asserts if the function
fails and the data is not extreme (e.g., fuzzer
generated).

TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2273293004

Review-Url: https://codereview.chromium.org/2273293004
2016-08-25 11:27:17 -07:00
halcanary
650e20d705 SkPDF: Stop #include PREPROCESSOR_DEFINE pattern
No more:
   #include SK_SFNTLY_SUBSETTER
   #include ZLIB_INCLUDE

Also, rename SK_SFNTLY_SUBSETTER to SK_PDF_USE_SFNTLY
to follow my pattern of prefixing SkPDF-specific defines
with 'SK_PDF_'.

The ZLIB_INCLUDE define is no longer is used by anyone.

TODO: rename Sfntly to something pronounceable.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2273343002

Review-Url: https://codereview.chromium.org/2273343002
2016-08-25 09:07:02 -07:00
brianosman
464a7d6f95 Remove pixel config fallback - failing is a better option.
This produces surprising results in some cases. For example: Attempt to
make an F16 SkSurface on ANGLE. We can't render to F16, but this succeeds
and gives you back an N32 surface instead. Ran all tests and GMs in DM on
ANGLE (where this is most likely to be an issue). No problems.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2272423004

Review-Url: https://codereview.chromium.org/2272423004
2016-08-25 08:55:24 -07:00
jvanverth
c3d0e42276 Add Ganesh support for circular roundrects with strokes > 2*radii.
Overstroked rrects are supported by adding additional geometry to the
center of the nine patch, and setting constant offset vectors to fake
out the distance calculation.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2272703004

Review-Url: https://codereview.chromium.org/2272703004
2016-08-25 08:12:35 -07:00
vjiaoblack
e6f5d56231 Made shadows blurry (thru implementing variance mapping)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2224163005

Review-Url: https://codereview.chromium.org/2224163005
2016-08-25 06:30:23 -07:00
caryclark
025b11ecde add pathops debugging
Pathops has many points of failure, most of which
are triggered by extreme data generated by fuzzers.
It's difficult to figure out which failure point
was triggered when the operation gives up.

Add instrumentation so that the failure can
be debugged when the data is well-behaved.

Also, add a check that looks for a sequence of
coincident points on multiple edges that are out
of order when compared to each other.

TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2274803003

Review-Url: https://codereview.chromium.org/2274803003
2016-08-25 05:21:14 -07:00
mtklein
f84960187a We can't infer the right type for voidp for old png_jmpbuf()
In libpng 1.2 it's just a macro that's ->jmpbuf,
so there's nothing forcing the conversion to png_structp.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2268953005

Review-Url: https://codereview.chromium.org/2268953005
2016-08-24 14:46:35 -07:00
halcanary
e59cb1c1f1 SkPDF: set SK_SFNTLY_SUBSETTER uniformly
When Skia is built into the Android framework,
SK_SFNTLY_SUBSETTER="sample/chromium/font_subsetter.h".
This #includes the same value for GOOGLE3.

Once Chrome is also using this value, we can do away with
the `#ifdef GOOGLE3` line.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2272103002

Review-Url: https://codereview.chromium.org/2272103002
2016-08-24 14:42:08 -07:00
mtklein
6dc5b9a9b7 SkPngCodec: voidp instead of forward-declares for png.h types.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2277903002

Review-Url: https://codereview.chromium.org/2277903002
2016-08-24 12:22:32 -07:00
bungeman
e55131c186 s/invertable/invertible
English orthography is often made difficult by poor phonology.

TBR=oxford-english-dictionary,mtklein

Review-Url: https://codereview.chromium.org/2272083002
2016-08-24 12:01:31 -07:00
halcanary
9df5a4c354 SkPDF: vector canvases can't hint!
BUG=637571
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2273073002

Review-Url: https://codereview.chromium.org/2273073002
2016-08-24 10:08:13 -07:00
mtklein
6321381d18 GN: more optional components: jpeg, pdf, png, xml
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2267343004

Review-Url: https://codereview.chromium.org/2267343004
2016-08-24 09:55:56 -07:00
caryclark
ef4f32ac85 remove point aliases
This removes the notion of keeping track of every different t value
that resolves to the same or a similar point. Other fixes make
this concept unnecessary, and removing it simplifies the code.

This removes an allocation, and speeds up paths with many
overlapping curves.

As a bonus, four fuzzer tests that failed before now succeed.

TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275703003

Review-Url: https://codereview.chromium.org/2275703003
2016-08-24 09:24:18 -07:00
halcanary
ea17dfe40b SkPDF: vertical writing: draw nothing
BUG=skia:5665
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2274153002

Review-Url: https://codereview.chromium.org/2274153002
2016-08-24 09:20:57 -07:00
bungeman
bea9748449 Add simple font fallback on Mac.
Implement SkFontMgr_Mac::onMatchFamilyStyleCharacter. This is a simple
implementation which provides basic fallback.

This also renames and refactors several static functions to reduce code
duplication.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2268663002

Review-Url: https://codereview.chromium.org/2268663002
2016-08-24 08:29:50 -07:00
ajuma
95243ebb68 Make GrTextureStripAtlas flush pending IO on newly acquired texture
GrTextureStripAtlas uses its own lock counts to protect against
overwriting its own earlier writes, but that doesn't protect against
IO that was pending when a texture was first acquired.

BUG=chromium:637678
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2262233002

Review-Url: https://codereview.chromium.org/2262233002
2016-08-24 08:19:03 -07:00
msarett
9d15dab754 Parse ICC profiles from webps
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2269333002

Review-Url: https://codereview.chromium.org/2269333002
2016-08-24 07:36:06 -07:00
egdaniel
66933552f1 Add addtional resolve calls to vulkan backend
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2215363003

Review-Url: https://codereview.chromium.org/2215363003
2016-08-24 07:22:19 -07:00
msarett
3bf7509c3f Warn on bad rendering intents (instead of valid ones)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2274843002

Review-Url: https://codereview.chromium.org/2274843002
2016-08-24 06:22:41 -07:00
brianosman
8aeec39f1f New helper for creating a color space from another, with linear gamma
Going to need this in many places once we expliclty require F16 surfaces
to have linear gamma color spaces.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2270103002

Review-Url: https://codereview.chromium.org/2270103002
2016-08-24 05:11:20 -07:00
reed
6a88206b2e combine setRectFan and mapRect
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2276603002

Review-Url: https://codereview.chromium.org/2276603002
2016-08-24 04:22:08 -07:00
msarett
9dc6cf6b88 Fix generic color space xform, ColorSpaceXformTest
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275563002

Review-Url: https://codereview.chromium.org/2275563002
2016-08-23 17:53:06 -07:00
msarett
ae6377c08e Make singleton SkColorSpaces thread safe
SkColorSpaces may be once-ptrs, so we can reuse common color spaces.
This means that they must be thread safe.  SkMatrix44 is not
thread safe because it maintains a mutable type mask.

This CL ensures that we precompute the type mask so we
can use const SkMatrix44's safely.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2277463002

Review-Url: https://codereview.chromium.org/2277463002
2016-08-23 14:36:20 -07:00
bsalomon
19fe41e85e Remove SkPixelRef::getTexture()
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2264293003

Review-Url: https://codereview.chromium.org/2264293003
2016-08-23 14:02:54 -07:00
csmartdalton
5ecbbbef58 Skip non-AA intersect rects in GrReducedClip
Skips non-AA rects whose op is intersect or replace, and who do not
precede elements that grow the clip, by tightening fIBounds.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2271493002

Review-Url: https://codereview.chromium.org/2271493002
2016-08-23 13:26:40 -07:00
bungeman
1f0e78ddf9 SkScalerContextRec::computeMatrices to return status.
When computing the matricies for a scaler context, there is a special
case when the matrix is determined to be singular. No port properly
handles zero sized text, so we detect this case and return a 'normal'
text size and a zero matrix for all computed transformations. This
CL causes computeMatricies to return 'false' in this case.

This is used in the constructor of SkScalerContext_Mac in order to
avoid calling CGAffineTransformInvert on non-invertible transformations.
CGAffineTransformInvert documents that if the transform is
non-invertible it will return the passed transform unchanged. It does
so, but then also prints a message to stdout. Since the information is
already available to avoid this chatty behavior, use it to keep things
quiet.

BUG=skia:3231,chromium:630169
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2276583003

Review-Url: https://codereview.chromium.org/2276583003
2016-08-23 13:19:01 -07:00
mtklein
da19f6f3b5 Assume all TURBO_HAS_* are true.
Should be everyone's on libjpeg-turbo >= 1.5.0.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2274643002

Review-Url: https://codereview.chromium.org/2274643002
2016-08-23 11:49:29 -07:00
vjiaoblack
e1e5c74086 Moving SkBlurImageFilter into core
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003

Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
Committed: https://skia.googlesource.com/skia/+/e426babe7552b1cb4e27cdf4e90826feabb9e3b0
Committed: https://skia.googlesource.com/skia/+/4d760175686df8f61a11b66946eb307d89dd2c75
Committed: https://skia.googlesource.com/skia/+/a97a1ab5719d5c355f7900b7f17dec1e467cf57e
Review-Url: https://codereview.chromium.org/2255803003
2016-08-23 11:13:14 -07:00
bungeman
2a57f2fb2f Revert of Moving SkBlurImageFilter into core (patchset #9 id:160001 of https://codereview.chromium.org/2255803003/ )
Reason for revert:
Breaking internal roll. Still needs 'Create'.

Original issue's description:
> Moving SkBlurImageFilter into core
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003
>
> Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
> Committed: https://skia.googlesource.com/skia/+/e426babe7552b1cb4e27cdf4e90826feabb9e3b0
> Committed: https://skia.googlesource.com/skia/+/4d760175686df8f61a11b66946eb307d89dd2c75
> Committed: https://skia.googlesource.com/skia/+/a97a1ab5719d5c355f7900b7f17dec1e467cf57e

TBR=reed@google.com,fmalita@chromium.org,vjiaoblack@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2274603003
2016-08-23 10:04:54 -07:00
caryclark
3cebe24682 fix conic path fuzz
The test conic has a very large weight, so it reduces to a pair
of lines. Detect this case rather than subdividing the conic
so much that the answers are meaningless.

R=herb@google.com, reed@google.com
BUG=638223
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2268073004

Review-Url: https://codereview.chromium.org/2268073004
2016-08-23 09:41:00 -07:00
halcanary
c966ef9f07 SkMultiSKP: version 2
Measurable size improvement.

BUG=skia:5370

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255333003

Review-Url: https://codereview.chromium.org/2255333003
2016-08-23 09:15:04 -07:00
halcanary
afdc177e77 SkPDF: PDFDevice cleanup.
Remove unused fContentSize.

Combine SkPDFDevice::writeContent and SkPDFDevice::content.

Remove unused SkPDFDevice::initialTransform().

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2264113003

Review-Url: https://codereview.chromium.org/2264113003
2016-08-23 09:02:12 -07:00
mtklein
a2d2f38600 f16<->f32 ftz is an optional thing for speed.
The ARMv8 asm path actually does it right... that should be okay.

My Nexus 5x fails `dm -m _finite_ftz` before this and passes after it.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2276533002

TBR=msarett@google.com

Review-Url: https://codereview.chromium.org/2276533002
2016-08-23 08:58:12 -07:00
vjiaoblack
a97a1ab571 Moving SkBlurImageFilter into core
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003

Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
Committed: https://skia.googlesource.com/skia/+/e426babe7552b1cb4e27cdf4e90826feabb9e3b0
Committed: https://skia.googlesource.com/skia/+/4d760175686df8f61a11b66946eb307d89dd2c75
Review-Url: https://codereview.chromium.org/2255803003
2016-08-23 07:50:52 -07:00
caryclark
bb51f4a3a7 fix pathops fuzz
Extreme cubics may split so that one half is a point.
Discard this rather than generating a degenerate line.

TBR=reed@google.com
BUG=640025
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2276503002

Review-Url: https://codereview.chromium.org/2276503002
2016-08-23 07:38:49 -07:00
csmartdalton
7535f419e2 Reduce window rectangles cap to 8
Lowers the cap to 8 and adds a warning message if this value is ever
exceeded. The largest (only) implementation currently supports 8, so
there isn't yet reason to go higher.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2254013002

Committed: https://skia.googlesource.com/skia/+/52d721580ee22525c285e2d13cf3975a7a1b2843
Review-Url: https://codereview.chromium.org/2254013002
2016-08-23 06:51:00 -07:00
robertphillips
08197b2265 Fix valgrind issue in CircleBatch__Test
TBR=bsalomon@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2271653002

Review-Url: https://codereview.chromium.org/2271653002
2016-08-23 06:19:15 -07:00
robertphillips
6cfb106002 Fix Ganesh analytic blurred rect draws
This CL does two things:
 It fixes the SkBlurMaskFilterImpl::directFilterRRectMaskGPU draw path to explicitly handle rects
 It fixes the SkGpuDevice::drawTextureProducerImpl draw path to provide the correct (src & device space) inputs to directFilterRRectMaskGPU.

How this was working before was that GrRRectBlurEffect::Make would reject rect-rrects and the code would fallback to
GrBlurUtils::drawPathWithMaskFilter which mapped the rect-rrect into device space correctly (of course,
the rect-ness of the path was removed at that point so it was going through the slow path).

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2268583002

Review-Url: https://codereview.chromium.org/2268583002
2016-08-22 16:13:48 -07:00
bsalomon
0515593064 Fix GLSL int to float error in arc code in GrOvalRenderer.
BUG=skia:
TBR=robertphillips@google.com
NOTRY=true
NOTREECHECKS=true

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2263213004

Review-Url: https://codereview.chromium.org/2263213004
2016-08-22 15:17:48 -07:00
msarett
4ff08df15a More robust check for sRGB gamma tables
This is in response to a UMA showing that 5% dst gammas are
unidentified tables.  We want to see if some of these tables
should be marked as sRGB.
https://uma.googleplex.com/p/chrome/histograms?endDate=latest&dayCount=1&histograms=Blink.ColorSpace.Destination&fixupData=true&showMax=true&filters=isofficial%2Ceq%2CTrue&implicitFilters=isofficial

This check is not fast.  If we find that it doesn't help
us recognize sRGB curves, we should delete it.

BUG=skia:5656
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2263233003

Review-Url: https://codereview.chromium.org/2263233003
2016-08-22 14:58:56 -07:00
bsalomon
dcb406c29d Remove virtual from overrides in SkGpuDevice.h
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2265323002

Review-Url: https://codereview.chromium.org/2265323002
2016-08-22 14:48:36 -07:00
bsalomon
cadf75a8a4 Fix CircleBatch::TestCreate to always use a legal matrix
TBR=robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2267953002

NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2267953002
2016-08-22 14:24:24 -07:00
bsalomon
bdc335f9b9 Mark temporary paths created by SkCanvas for clipping as volatile
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2268723002

Review-Url: https://codereview.chromium.org/2268723002
2016-08-22 13:42:17 -07:00
mtklein
8ae991e433 Flush denorm half floats to zero.
I think we convinced ourselves that denorms, while a good chunk of half floats,
cover a rather small fraction of the representable range, which is always
close enough to zero to flush.

This makes both paths of the conversion to or from float considerably simpler.

These functions now work for zero-or-normal half floats (excluding infinite, NaN).
I'm not aware of a term for this class so I've called them "ordinary".

A handful of GMs and SKPs draw differently in --config f16, but all imperceptibly.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256023002

Review-Url: https://codereview.chromium.org/2256023002
2016-08-22 13:20:18 -07:00
bsalomon
4f3a0ca85d GPU implementation of drawArc.
This adds analytic shaders for filled arcs and butt-cap stroked arcs where the center point is not used.

BUG=skia:5227
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259323003

Review-Url: https://codereview.chromium.org/2259323003
2016-08-22 13:14:26 -07:00
reed
4d2cce442d check for wide-open inside quickContains
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2263373002

Review-Url: https://codereview.chromium.org/2263373002
2016-08-22 13:03:47 -07:00
msarett
d331742d27 Fix MSAN - mark temporary memory as kNo_ZeroInitialized
TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2261173004

Review-Url: https://codereview.chromium.org/2261173004
2016-08-22 13:00:05 -07:00
msarett
d9015a43cf Fix Equals and serialization for rare pngs
PNGs may contain a gAMA chunk that specifies gamma
values as floats.  If so, we will use these floats
to create an SkColorSpace.

This CL fixes Equals(), serialize(), and
Deserialize() to correctly handle SkColorSpaces
with strange gammas, where we are unable to fall
back on the profile data.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221983002

Review-Url: https://codereview.chromium.org/2221983002
2016-08-22 12:29:32 -07:00
vjiaoblack
a90dcf791b Revert of Moving SkBlurImageFilter into core (patchset #8 id:140001 of https://codereview.chromium.org/2255803003/ )
Reason for revert:
Misnamed function.

Original issue's description:
> Moving SkBlurImageFilter into core
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003
>
> Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
> Committed: https://skia.googlesource.com/skia/+/e426babe7552b1cb4e27cdf4e90826feabb9e3b0
> Committed: https://skia.googlesource.com/skia/+/4d760175686df8f61a11b66946eb307d89dd2c75

TBR=reed@google.com,fmalita@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2265263002
2016-08-22 12:04:41 -07:00
vjiaoblack
4d76017568 Moving SkBlurImageFilter into core
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003

Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
Committed: https://skia.googlesource.com/skia/+/e426babe7552b1cb4e27cdf4e90826feabb9e3b0
Review-Url: https://codereview.chromium.org/2255803003
2016-08-22 12:00:25 -07:00
robertphillips
3a0c3696f0 Remove quantization of device-space dest rect for Ganesh analytic rrect blurs
At least on Windows, this fixes a lot of the horrible banded blurs. AFAICT there is no good reason to quantize the device space rect passed to the GrRectBlurEffect.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2262263002

Review-Url: https://codereview.chromium.org/2262263002
2016-08-22 11:48:44 -07:00
bsalomon
6bf233176f Mark temp paths in SkBaseDevice::drawArc and ::drawDRRect as volatile
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2261123004

Review-Url: https://codereview.chromium.org/2261123004
2016-08-22 11:46:35 -07:00
vjiaoblack
7b145120f2 Revert of Moving SkBlurImageFilter into core (patchset #8 id:140001 of https://codereview.chromium.org/2255803003/ )
Reason for revert:
Fixed it wrong, needs to revert to re-discuss and re-land.

Original issue's description:
> Moving SkBlurImageFilter into core
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003
>
> Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
> Committed: https://skia.googlesource.com/skia/+/e426babe7552b1cb4e27cdf4e90826feabb9e3b0

TBR=reed@google.com,fmalita@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2266063002
2016-08-22 11:30:40 -07:00
vjiaoblack
e426babe75 Moving SkBlurImageFilter into core
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003

Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48
Review-Url: https://codereview.chromium.org/2255803003
2016-08-22 10:51:27 -07:00
msarett
0f0c4f0902 Detect all named gammas
Our DstColorSpace UMA is showing some named gammas that are
not appropriately detected and placed in named categories.
https://uma.googleplex.com/p/chrome/histograms?endDate=latest&dayCount=1&histograms=Blink.ColorSpace.Destination&fixupData=true&showMax=true&filters=isofficial%2Ceq%2CTrue&implicitFilters=isofficial

This CL should fix that.

I'm not sure (yet) how I feel about this landing permanently.
Seems a little messy.

But it will be interesting to see how this affects the UMA.
My best guess is that we are hitting this case when all
three gammas are "invalid" in different ways.  I'm expecting
to see some profiles end up in the "invalid" category now.

It's also possible that we'll see these cases being absorbed
into sRGB or somewhere else.

BUG=skia:5656
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2261213002

Review-Url: https://codereview.chromium.org/2261213002
2016-08-22 09:44:35 -07:00
mtklein
a61b6d4f9e compress_r11eac_blocks() required more alignment than dst has.
This shouldn't change any behavior except that the stores to dst
will no longer require 8-byte alignment.

Empirically it seems like we can use 4-byte alignment here,
but u8 (i.e. 1-byte alignment) is always safe.

BUG=skia:5637
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2264103002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2264103002
2016-08-22 09:30:54 -07:00
mtklein
2ec417257b Revert of Moving SkBlurImageFilter into core (patchset #6 id:100001 of https://codereview.chromium.org/2255803003/ )
Reason for revert:
It looks like this breaks our roll into Google3:
https://test.corp.google.com/ui#id=OCL:130943857:BASE:130944046:1471881622765:61dbdd3

Original issue's description:
> Moving SkBlurImageFilter into core
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003
>
> Committed: https://skia.googlesource.com/skia/+/dd3259eb95c3b47e11eefa3b176365a112a32b48

TBR=reed@google.com,fmalita@chromium.org,vjiaoblack@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2263283002
2016-08-22 09:25:59 -07:00
mtklein
78559a78f9 Use ARMv8 CRC32 instructions for SkOpts::hash().
For large inputs, this runs ~11x faster than Murmur3.
My bench drops from 1µs to 88ns.

Like x86-64, this runs fastest if we work in 24 byte chunks.  16 byte chunks
run at about 0.75x this speed, 8 byte chunks at about 0.4x (which would still
be about 5x faster than Murmur3).

This'll require plumbing support for opts_crc32 into Chrome first before it can roll.

perf.skia.org charts we want to watch: https://perf.skia.org/#5490

Seach for compute_hash in these logs to see the difference:
baseline: https://luci-milo.appspot.com/swarming/task/30ba22f3dfe30e10/steps/nanobench/0/stdout
trybot: https://luci-milo.appspot.com/swarming/task/30bbc406cbf62d10/steps/nanobench/0/stdout

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2260823002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2260823002
2016-08-22 08:53:45 -07:00
vjiaoblack
dd3259eb95 Moving SkBlurImageFilter into core
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255803003

Review-Url: https://codereview.chromium.org/2255803003
2016-08-22 08:50:20 -07:00
msarett
dcd5e65340 Support color xforms for kIndex8 pngs
This change started as: "Always use color xforms to
premultiply".  We need to be in a linear space to
premultiply correctly.

It became clear that we also need to support kIndex8
color xforms in order to make this change.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246143002

Review-Url: https://codereview.chromium.org/2246143002
2016-08-22 08:48:40 -07:00
brianosman
7fd64e7e67 Supply a color space in sRGB/F16 mode of SampleApp
Ganesh now uses this to decide if it should perform gamma-correct
rendering, so the color space is necessary to get correct results in
S32/F16.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2266763004

Review-Url: https://codereview.chromium.org/2266763004
2016-08-22 08:23:09 -07:00
msarett
35bb74b444 Fix color xform width bug when scaling/subsetting
This was not caught by the bots because we don't test
color correct modes with our many image decoding tests
(takes too long).

Adding a unit test.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2247743002

Review-Url: https://codereview.chromium.org/2247743002
2016-08-22 07:41:28 -07:00
reed
a39667c848 add SkMatrixPriv for specialized helpers
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2268443002

Review-Url: https://codereview.chromium.org/2268443002
2016-08-22 06:39:49 -07:00
fmalita
582a6564f3 Simplify the gradient color stop optimizer
We're just discarding the leftmost/rightmost stops -- this can be
achieved by simply adjusting the start offset and count.

R=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2265803002

Review-Url: https://codereview.chromium.org/2265803002
2016-08-22 06:28:57 -07:00
reed
deb8136c9c remove unused field from SkDrawIter
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2267553002

TBR=

Review-Url: https://codereview.chromium.org/2267553002
2016-08-20 11:32:48 -07:00
reed
589a39eb81 store info in basedevice, change getter to non-virtual const&
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2261003003

Review-Url: https://codereview.chromium.org/2261003003
2016-08-20 07:59:19 -07:00
halcanary
e2348ccb47 src/utils/SkBitSet: simplify
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2265623002

Review-Url: https://codereview.chromium.org/2265623002
2016-08-19 16:23:23 -07:00
csmartdalton
02fa32c6d1 Move GrFixedClip into src directory
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2254343003

Review-Url: https://codereview.chromium.org/2254343003
2016-08-19 13:29:27 -07:00
bsalomon
ac3aa245ac Plumb drawArc to SkDevice.
Plumbs the drawArc canvas method down to SkDevice without converting to a path. Plumbs through the various recording canvas classes.

BUG=skia:5227
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2257023003

Review-Url: https://codereview.chromium.org/2257023003
2016-08-19 11:25:20 -07:00
dvonbeck
af0f6efa35 Added SkColor4f::FromColor3f(SkColor3f, float a)
Planning to use this for the ColorDisplay widget in https://codereview.chromium.org/2259183003/

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2264643002

Review-Url: https://codereview.chromium.org/2264643002
2016-08-19 11:23:15 -07:00
mtklein
cbdf007bc2 Fast path translate() in SkCanvas and SkLiteDL.
This adds didTranslate() so that SkLiteDL (and other canvas recorders)
can record the translate rather than the full concat.

It also adds a case to SkMatrix::preTranslate() to fast path
translate x translate -> translate (i.e. +=).

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255283002

Committed: https://skia.googlesource.com/skia/+/5fa47f4fd13b3158de4599414c86d17649c2dd1c

Misc bots failing in pictureimagefilter replay modes.
https://luci-milo.appspot.com/swarming/task/30b8e53f3a1f4f10/steps/dm/0/stdout

Problem is FMA vs. not.

CQ_INCLUDE_TRYBOTS=master.client.skia:
Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast-Trybot

Review-Url: https://codereview.chromium.org/2255283002
2016-08-19 09:05:27 -07:00
fmenozzi
68d952cf40 Implement gradient simplification for 0,0,1 and 0,1,1 gradients
Depends on https://codereview.chromium.org/2259823005/

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256843004

Review-Url: https://codereview.chromium.org/2256843004
2016-08-19 08:56:56 -07:00
bungeman
01a16992cc Simplify embeddability test.
There is no reason to read the whole OS/2 table, and no need to spell
out the full names of all the types over and over.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256783002

Review-Url: https://codereview.chromium.org/2256783002
2016-08-19 08:45:37 -07:00
msarett
9da5a5a198 Fix bug, always keep fIsScaleTranslate in correct state
BUG:639179
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2263513003

Review-Url: https://codereview.chromium.org/2263513003
2016-08-19 08:38:36 -07:00
senorblanco
b6a40b83f3 Some assert fixes for running the Fuzzer sample in GPU mode.
quadraticPointCount, cubicPointCount: passing NaN to GrNextPow2 causes
it to assert, so detect that and return the max points per curve
instead.

Passing a zero scale to GrStyle::applyToPath() makes it assert, so
draw nothing (likely what drawing with a zero scale is going to do
anyway).

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2257423002

Review-Url: https://codereview.chromium.org/2257423002
2016-08-19 08:07:22 -07:00
fmenozzi
e9fd0f8eaf Return color shader instead of 2-color gradient when color count is 1
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259823005

Committed: https://skia.googlesource.com/skia/+/da082a5767d7edfd3abe74fc683392422565a606
Review-Url: https://codereview.chromium.org/2259823005
2016-08-19 07:50:57 -07:00
caryclark
429428660b fix fuzzes
TBR=reed@google.com
BUG=639157, 638783
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255243003

Review-Url: https://codereview.chromium.org/2255243003
2016-08-19 07:01:33 -07:00
bungeman
83b24ff082 SkFontMgr_android clean up.
This removes the never used defaultTypeface, uses 'StyleSet' in field
names consistently, fixes potential leaks of names, and moves fields to
sk_sp.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256253003

Review-Url: https://codereview.chromium.org/2256253003
2016-08-19 05:03:26 -07:00
mtklein
954df2fe9f Revert of Fast path translate() in SkCanvas and SkLiteDL. (patchset #5 id:80001 of https://codereview.chromium.org/2255283002/ )
Reason for revert:
speculative

Original issue's description:
> Fast path translate() in SkCanvas and SkLiteDL.
>
> This adds didTranslate() so that SkLiteDL (and other canvas recorders)
> can record the translate rather than the full concat.
>
> It also adds a case to SkMatrix::preTranslate() to fast path
> translate x translate -> translate (i.e. +=).
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255283002
>
> Committed: https://skia.googlesource.com/skia/+/5fa47f4fd13b3158de4599414c86d17649c2dd1c

TBR=herb@google.com,reed@google.com,mtklein@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2264433002
2016-08-18 17:43:59 -07:00
reed
4a16717bc7 quick check to not use AutoDrawLooper
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2248373004

Review-Url: https://codereview.chromium.org/2248373004
2016-08-18 17:15:25 -07:00