Commit Graph

23346 Commits

Author SHA1 Message Date
borenet
ed696276fd More fixes for SwarmBucket
BUG=skia:5581
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2202053005
NOTRY=true

Review-Url: https://codereview.chromium.org/2202053005
2016-08-02 06:50:50 -07:00
reed
320a40d773 Always return ImageShader, even from SkShader::MakeBitmapShader
Lessons learned

1. ImageShader (correctly) always compresses (typically via PNG) during serialization. This has the surprise results of
- if the image was marked opaque, but has some non-opaque pixels (i.e. bug in blitter or caller), then compressing may "fix" those pixels, making the deserialized version draw differently. bug filed.
- 565 compressess/decompresses to 8888 (at least on Mac), which draws differently (esp. under some filters). bug filed.

2. BitmapShader did not enforce a copy for mutable bitmaps, but ImageShader does (since it creates an Image). Thus the former would see subsequent changes to the pixels after shader creation, while the latter does not, hence the change to the BlitRow test to avoid this modify-after-create pattern. I sure hope this prev. behavior was a bug/undefined-behavior, since this CL changes that.

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

Review-Url: https://codereview.chromium.org/2195893002
2016-08-02 06:12:06 -07:00
borenet
d6dd44140d Roll recipe DEPS
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2205863002

Review-Url: https://codereview.chromium.org/2205863002
2016-08-02 05:11:16 -07:00
mtklein
7c1ae7af4f GN: add some missing SkCodec defines
TURBO_HAS_...
    WEBP_SWAP_16BIT_CSP

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

Review-Url: https://codereview.chromium.org/2196413003
2016-08-01 15:50:27 -07:00
msarett
6fd4c05aaf Fix SkJpegCodec::onSkipScanlines when TURBO_HAS_SKIP is not defined
I think I just broke this in:
https://codereview.chromium.org/2174493002/

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

Review-Url: https://codereview.chromium.org/2202763002
2016-08-01 15:08:03 -07:00
msarett
c213f0df22 Hide (mostly) unused SkColorSpace writeToICC() function
This originally was intended to be used for serialization, but
we've chosen another approach.

Includes a revert of:
https://codereview.chromium.org/2012133003/

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

Review-Url: https://codereview.chromium.org/2193223002
2016-08-01 14:23:32 -07:00
mtklein
1bb5fecbea Sketch SkPictureRecorder::optimizeFor(GrContext*).
I'm open to API suggestions.
We can pass this in finishAs(), up front, whatever.

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

Review-Url: https://codereview.chromium.org/2203453002
2016-08-01 13:17:47 -07:00
mtklein
7a34b1cd02 GN: use the correct fontconfig font mugger.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2202733002

Review-Url: https://codereview.chromium.org/2202733002
2016-08-01 13:08:46 -07:00
bungeman
d783e08004 Replace 'Ulta' with 'Ultra'.
Start fixing a typo in an enum name.

TBR=reed
This is just a typo fix.

Review-Url: https://codereview.chromium.org/2202703002
2016-08-01 12:37:13 -07:00
herb
35f3e59d1c Pick the right download tool for windows.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197423002

Review-Url: https://codereview.chromium.org/2197423002
2016-08-01 12:26:51 -07:00
dvonbeck
68f2f7dc42 Added distance vector support for CircleGeometryProcessor
This CL's base is the CL that sets up the distance vector field req. exposure: https://codereview.chromium.org/2114993002/

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

Committed: https://skia.googlesource.com/skia/+/779e1924eaf7c5652dee93e0e8e975bbf5723b37
Review-Url: https://codereview.chromium.org/2190023002
2016-08-01 11:37:45 -07:00
reed
f1ac18229c implement isABitmap for imageshader, return localmatrix for bitmap's impl
For imageshader, I only return true if the image is explicitly raster-backed. I do not return true for texture, nor for generator (i.e. lazy/picture) backed. Is that ok?

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

Review-Url: https://codereview.chromium.org/2197323002
2016-08-01 11:24:14 -07:00
mtklein
da574d17f8 Replace old SkRecords RefBox with sk_sp.
The main differences are that RefBox's constructor reffed and sk_sp's doesn't,
and that RefBox auto-casts to the underlying pointer while sk_sp doesn't.

I've added a bunch of sk_ref_sp() and .get() to compensate.

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

Review-Url: https://codereview.chromium.org/2197243003
2016-08-01 11:24:03 -07:00
reed
2dad769dc9 make an image from a mutable bitmap
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2199813002

Review-Url: https://codereview.chromium.org/2199813002
2016-08-01 11:12:58 -07:00
dvonbeck
9b03e7b29d GrFP can express distance vector field req., program builder declares variable for it
This update allows fragment processors to require a field of vectors to the nearest edge. This requirement propagates:

- from child FPs to their parent
- from parent FPs to the GrPaint
- from GrPaint through the PipelineBuilder into GrPipeline
- acessed from GrPipeline by GrGLSLProgramBuilder

GrGLSL generates a variable for the distance vector and passes it down to the GeometryProcessor->emitCode() method.

This CL's base is the CL for adding the BevelNormalSource API: https://codereview.chromium.org/2080993002

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

Committed: https://skia.googlesource.com/skia/+/4ef6dfa7089c092c67b0d5ec34e89c1e319af196
Review-Url: https://codereview.chromium.org/2114993002
2016-08-01 11:01:56 -07:00
mtklein
6be452c800 GN: only include headers in echo_headers.py
This keeps things like VIM .swp files out of skia.h.

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

Review-Url: https://codereview.chromium.org/2202643002
2016-08-01 10:39:10 -07:00
vjiaoblack
53da5ba619 adding new GM to demostrate new shadows
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2118553002

Review-Url: https://codereview.chromium.org/2118553002
2016-08-01 10:02:31 -07:00
msarett
abbd6d5e02 Add SkColorSpace::Equals() API
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196743002

Review-Url: https://codereview.chromium.org/2196743002
2016-08-01 09:43:08 -07:00
mtklein
8d7f5c3f29 Default fake gamma to sRGB.
No one appears to be using the default 2.2.
This makes SK_GAMMA_SRGB the default / a no-op, which seems more realistic.

Chrome's explicitly setting SK_GAMMA_EXPONENT or SK_GAMMA_SRGB.
We set Android platform explicitly to 1.4.

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

Review-Url: https://codereview.chromium.org/2198073002
2016-08-01 09:22:12 -07:00
mtklein
9be6866e95 GN: define fake-gamma configuration to match our bots.
This should fix many of the GN text diffs in Gold.

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

Review-Url: https://codereview.chromium.org/2195393002
2016-08-01 08:37:48 -07:00
mtklein
150d113db5 GN: Define SK_HAS_... in all Skia-private code, not just libskia.
SkForceLinking wasn't force-linking the WEBP encoder, or any encoder.
(The others must be explicitly used.)

This should help the GN Debug Perf bots progress past

    Running Encode_color_wheel.jpg_WEBP nonrendering
    ../../../bench/EncoderBench.cpp:58: fatal error: "assert(data)"

On my laptop, a debug nanobench run now finishes.

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

Review-Url: https://codereview.chromium.org/2196243002
2016-08-01 06:56:41 -07:00
robertphillips
12e9662cf7 Remove some ancillary users of SkSurface::MakeRenderTargetDirect
calved off of: https://codereview.chromium.org/2176333002/ (Remove SkSurface::MakeRenderTargetDirect)

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

Review-Url: https://codereview.chromium.org/2198433003
2016-08-01 05:53:23 -07:00
borenet
f5b675efbe Stop running nanobench on Test.*Debug bots
We'll need to add Perf.*Debug bots to achieve the same coverage.

BUG=skia:4768
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2189393002
NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2189393002
2016-08-01 05:08:52 -07:00
mtklein
02aed95f9c Revert of GrFP can express distance vector field req., program builder declares variable for it (patchset #20 id:370001 of https://codereview.chromium.org/2114993002/ )
Reason for revert:
UBSAN says we're reading a bad bool here:
bool usesDistanceVectorField() const { return fUsesDistanceVectorField; }

../../../include/gpu/GrPaint.h:83:51: runtime error: load of value 239, which is not a valid value for type 'bool'
SUMMARY: AddressSanitizer: undefined-behavior ../../../include/gpu/GrPaint.h:83:51 in

Seems likely also the root of Valgrind failure:
https://luci-milo.appspot.com/swarming/task/30522e4f2241cb10

Original issue's description:
> GrFP can express distance vector field req.,  program builder declares variable for it
>
> This update allows fragment processors to require a field of vectors to the nearest edge. This requirement propagates:
>
> - from child FPs to their parent
> - from parent FPs to the GrPaint
> - from GrPaint through the PipelineBuilder into GrPipeline
> - acessed from GrPipeline by GrGLSLProgramBuilder
>
> GrGLSL generates a variable for the distance vector and passes it down to the GeometryProcessor->emitCode() method.
>
> This CL's base is the CL for adding the BevelNormalSource API: https://codereview.chromium.org/2080993002
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2114993002
>
> Committed: https://skia.googlesource.com/skia/+/4ef6dfa7089c092c67b0d5ec34e89c1e319af196

TBR=egdaniel@google.com,robertphillips@google.com,bsalomon@google.com,dvonbeck@google.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=skia:

Review-Url: https://codereview.chromium.org/2201613002
2016-07-30 14:21:10 -07:00
mtklein
7c0db75f40 Revert of Tidy up SkNx_neon. (patchset #3 id:40001 of https://codereview.chromium.org/2196773002/ )
Reason for revert:
https://luci-milo.appspot.com/swarming/task/3055149a25621b10

Not Nexus 5 specific.   Reproduces on Pixel C with --gcc -t Debug -d arm_v7_neon.  Not sure about other configs yet.

Original issue's description:
> Tidy up SkNx_neon.
>
> This takes advantage of the fact that all the compilers we use that
> support NEON implement it with their own vector extensions.  This means
> normal things like c = a + b work on the underlying vector types already.
> Odd instructions like min or saturated add need to stay intrinsics.
>
> Also, rearrange functions to a more consistent order.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196773002
> CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/6ad22315eb6eacfcd35497cd118440a619d05b18

TBR=msarett@google.com,mtklein@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=skia:

Review-Url: https://codereview.chromium.org/2196953002
2016-07-30 14:18:49 -07:00
mtklein
570f8af473 Revert of Added distance vector support for CircleGeometryProcessor (patchset #4 id:60001 of https://codereview.chromium.org/2190023002/ )
Reason for revert:
Reverting so I can revert https://codereview.chromium.org/2114993002/

Original issue's description:
> Added distance vector support for CircleGeometryProcessor
>
> This CL's base is the CL that sets up the distance vector field req. exposure: https://codereview.chromium.org/2114993002/
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190023002
>
> Committed: https://skia.googlesource.com/skia/+/779e1924eaf7c5652dee93e0e8e975bbf5723b37

TBR=egdaniel@google.com,robertphillips@google.com,dvonbeck@google.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=skia:

Review-Url: https://codereview.chromium.org/2196053002
2016-07-30 13:31:53 -07:00
mtklein
73106225d1 Docs: ooops, debug is the default in GN.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2195173002
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=2195173002

TBR=jcgregorio@google.com

Review-Url: https://codereview.chromium.org/2195173002
2016-07-30 07:50:15 -07:00
mtklein
fe2042e60f SkRasterPipeline: new APIs for fusion
Most visibly this adds a macro SK_RASTER_STAGE that cuts down on the boilerplate of defining a raster pipeline stage function.

Most interestingly, SK_RASTER_STAGE doesn't define a SkRasterPipeline::Fn, but rather a new type EasyFn.  This function is always static and inlined, and the details of interacting with the SkRasterPipeline::Stage are taken care of for you: ctx is just passed as a void*, and st->next() is always called.  All EasyFns have to do is take care of the meat of the work: update r,g,b, etc. and read and write from their context.

The really neat new feature here is that you can either add EasyFns to a pipeline with the new append() functions, _or_ call them directly yourself.  This lets you use the same set of pieces to build either a pipelined version of the function or a custom, fused version.  The bench shows this off.

On my desktop, the pipeline version of the bench takes about 25% more time to run than the fused one.

The old approach to creating stages still works fine.  I haven't updated SkXfermode.cpp or SkArithmeticMode.cpp because they seemed just as clear using Fn directly as they would have using EasyFn.

If this looks okay to you I will rework the comments in SkRasterPipeline to explain SK_RASTER_STAGE and EasyFn a bit as I've done here in the CL description.

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

Review-Url: https://codereview.chromium.org/2195853002
2016-07-29 14:27:41 -07:00
mtklein
79b59e6a38 simplify neon shifts
These still generate vshr/vshl with immediates with both GCC and Clang.

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

Based on https://codereview.chromium.org/2196773002

Review-Url: https://codereview.chromium.org/2194953002
2016-07-29 12:28:44 -07:00
bsalomon
6d9a213694 If scissor would be empty in GrClipMaskManager::SetupClipping indicate draw can be skipped.
BUG=chromium:632185
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196803002

Review-Url: https://codereview.chromium.org/2196803002
2016-07-29 12:24:29 -07:00
csmartdalton
4c18b62a00 Add ES 3.0 fallback for instanced rendering
Adds the ability for GLInstancedRendering to use
glDrawElementsInstanced when glDrawElementsIndirect is not supported.

The only remaining 3.1 dependency now is EXT_texture_buffer.

Also moves the cap for glDraw*Instanced out of GrCaps and into
GrGLCaps.

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

Review-Url: https://codereview.chromium.org/2193303002
2016-07-29 12:19:28 -07:00
egdaniel
848904e5b3 Fix vulkan build
TBR=bsalomon@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2193883002

Review-Url: https://codereview.chromium.org/2193883002
2016-07-29 11:47:58 -07:00
dvonbeck
779e1924ea Added distance vector support for CircleGeometryProcessor
This CL's base is the CL that sets up the distance vector field req. exposure: https://codereview.chromium.org/2114993002/

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

Review-Url: https://codereview.chromium.org/2190023002
2016-07-29 11:11:51 -07:00
mtklein
6ad22315eb Tidy up SkNx_neon.
This takes advantage of the fact that all the compilers we use that
support NEON implement it with their own vector extensions.  This means
normal things like c = a + b work on the underlying vector types already.
Odd instructions like min or saturated add need to stay intrinsics.

Also, rearrange functions to a more consistent order.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196773002
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/2196773002
2016-07-29 11:11:12 -07:00
jcgregorio
01f696e30f perf: Upload results to gs://skia-perf, not gs://chromium-skia-gm.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197643002

Review-Url: https://codereview.chromium.org/2197643002
2016-07-29 10:54:30 -07:00
bungeman
aa8f39402c Conditionally define SK_SUPPORT_LEGACY_DATA_FACTORIES.
In order to remove this define it will first need to be defined in
Chromium. However, doing so causes redefinition warnings as errors.
Only define this macro if it is not already defined to avoid this.

TBR=reed
This doesn't change any API.

Review-Url: https://codereview.chromium.org/2198453002
2016-07-29 10:47:45 -07:00
egdaniel
31bc7df59b Properly recycle uniform buffers in vulkan
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2195713002

Review-Url: https://codereview.chromium.org/2195713002
2016-07-29 10:46:06 -07:00
mtklein
f6593a68d9 Add some GN builders to the CQ.
This parallels the set of bots we use to gate commits already.

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

Review-Url: https://codereview.chromium.org/2189283003
2016-07-29 10:41:37 -07:00
halcanary
fa25106f02 SkPDF: PDFStream has-a not is-a PDFDict
Motivation:
SkPDFStream and SkPDFSharedStream now work the same.

Also:
- move SkPDFStream into SkPDFTypes (it's a fundamental PDF type).
- minor refactor of SkPDFSharedStream
- SkPDFSharedStream takes unique_ptr to represent ownership

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

Review-Url: https://codereview.chromium.org/2190883003
2016-07-29 10:13:18 -07:00
mtklein
d05a875273 SkNx: add Sk4u
This lets us get at logical >> in a nicely principled way.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197683002
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/2197683002
2016-07-29 10:10:15 -07:00
dvonbeck
4ef6dfa708 GrFP can express distance vector field req., program builder declares variable for it
This update allows fragment processors to require a field of vectors to the nearest edge. This requirement propagates:

- from child FPs to their parent
- from parent FPs to the GrPaint
- from GrPaint through the PipelineBuilder into GrPipeline
- acessed from GrPipeline by GrGLSLProgramBuilder

GrGLSL generates a variable for the distance vector and passes it down to the GeometryProcessor->emitCode() method.

This CL's base is the CL for adding the BevelNormalSource API: https://codereview.chromium.org/2080993002

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

Review-Url: https://codereview.chromium.org/2114993002
2016-07-29 09:53:56 -07:00
mtklein
5db44aa2aa GN: components as static library instead of source set
This also puts the .a in the top-level of the ouptut directory, just
like we do for .so files.  It's less required than for .sos, but it
does make it easier to find the .a.

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

Review-Url: https://codereview.chromium.org/2197633002
2016-07-29 09:10:31 -07:00
msarett
a714bc3929 Fix various SkColorSpace bugs
(1) Fixes serialization/deserialization of wacky SkColorSpaces
(2) Fix gamma equals checking

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

Review-Url: https://codereview.chromium.org/2194903002
2016-07-29 08:58:33 -07:00
egdaniel
00db3fd7a7 Use HashSet instead of Dynamic hash for tracking vulkan resources
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2194823003

Review-Url: https://codereview.chromium.org/2194823003
2016-07-29 08:55:53 -07:00
fmalita
58649ccc75 [SVGDom] Parse style attributes
Dispatch style-encoded (style="foo: bar; ...") attributes via normal
attribute setters.

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

Review-Url: https://codereview.chromium.org/2193663002
2016-07-29 08:52:03 -07:00
halcanary
5abbb44f68 SkPDF: flip saveLayer rightside up
Broken in https://skia.googlesource.com/skia/+/4b1e17e

BUG=632574
TBR=tomhudson@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197623002

Review-Url: https://codereview.chromium.org/2197623002
2016-07-29 08:41:33 -07:00
mtklein
3a88056994 GN: quick doc
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2192203002
NOTRY=true
DOCS_PREVIEW= https://skia.org/user/quick/gn?cl=2192203002

Review-Url: https://codereview.chromium.org/2192203002
2016-07-29 08:35:54 -07:00
robertphillips
1e8761809d Remove GrContext::applyGamma
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2191323002

Review-Url: https://codereview.chromium.org/2191323002
2016-07-29 08:28:25 -07:00
csmartdalton
e0d362929d Add test configs for instanced rendering
Adds the following configs and enables them on select bots:

  glinst, glinst4, glinstdit4, glinst16, glinstdit16,
  esinst, esinst4, esinstdit4

Makes general changes to GrContextOptions, GrCaps, etc. to facilitate
this.

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

Review-Url: https://codereview.chromium.org/2182783004
2016-07-29 08:14:20 -07:00
egdaniel
0d9990f052 Merge ProgramDesc's for GL and Vulkan
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184413002

Review-Url: https://codereview.chromium.org/2184413002
2016-07-29 07:36:52 -07:00