Commit Graph

19387 Commits

Author SHA1 Message Date
aleksandar.stojiljkovic
7600183ba7 SkScan_Antihair: assert in debug and potentialy lost last pixels
alpha: (uint8_t) 256 is clamped to 255 before static cast to
uint8_t in SkToU8.

BUG=4406

Review URL: https://codereview.chromium.org/1424253002
2015-11-02 13:28:51 -08:00
senorblanco
29a440d2d6 Make SkBlurImageFilter capable of cropping during blur (raster path)
SkBlurImageFilter can currently only process a source image
which is larger than or equal to the destination rect. If
the source image (or crop rect) is smaller, it is padded
out to dest size with transparent black via the 6-param
version of applyCropRect().

Fixing this requires modifying all the flavours of RGBA
box_blur() to accept a src crop rect.

BUG=skia:4502, skia:4526
CQ_EXTRA_TRYBOTS=client.skia.android:Test-Android-GCC-Nexus5-CPU-NEON-Arm7-Release-Trybot;client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Committed: https://skia.googlesource.com/skia/+/1b82ceb737c73327412f2e8a91748481e1aec9e4

Review URL: https://codereview.chromium.org/1415653003
2015-11-02 12:55:47 -08:00
bsalomon
9c58654fa2 Add bleed GM variants for bmp backed by an oversized texture
Review URL: https://codereview.chromium.org/1426253002
2015-11-02 12:33:21 -08:00
reed
4a21602982 stop using drawSprite (at least w/ no filters) as it is going away
BUG=skia:

Review URL: https://codereview.chromium.org/1411173010
2015-11-02 12:11:13 -08:00
senorblanco
8de01c642c Revert of Make SkBlurImageFilter capable of cropping during blur (patchset #16 id:400001 of https://codereview.chromium.org/1415653003/ )
Reason for revert:
ASAN failures (see https://codereview.chromium.org/1415653003/)

Original issue's description:
> Make SkBlurImageFilter capable of cropping during blur (raster path)
>
> SkBlurImageFilter can currently only process a source image
> which is larger than or equal to the destination rect. If
> the source image (or crop rect) is smaller, it is padded
> out to dest size with transparent black via the 6-param
> version of applyCropRect().
>
> Fixing this requires modifying all the flavours of RGBA
> box_blur() to accept a src crop rect.
>
> BUG=skia:4502, skia:4526
> CQ_EXTRA_TRYBOTS=client.skia.android:Test-Android-GCC-Nexus5-CPU-NEON-Arm7-Release-Trybot;client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/1b82ceb737c73327412f2e8a91748481e1aec9e4

TBR=mtklein@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:4502, skia:4526

Review URL: https://codereview.chromium.org/1428053002
2015-11-02 11:56:18 -08:00
bsalomon
8c07b7ab53 Allow max tile size to be overridden separately from max texture size.
This allows internal Gr texture creation code to succeed for extraneous textures while running the bleed GM. This means we can turn on the shader variants.

Review URL: https://codereview.chromium.org/1418473004
2015-11-02 11:36:52 -08:00
iroth
8b99ef4347 Enable building Skia for iOS with bazel.
BUG=skia:

Review URL: https://codereview.chromium.org/1429863002
2015-11-02 11:11:21 -08:00
senorblanco
1b82ceb737 Make SkBlurImageFilter capable of cropping during blur (raster path)
SkBlurImageFilter can currently only process a source image
which is larger than or equal to the destination rect. If
the source image (or crop rect) is smaller, it is padded
out to dest size with transparent black via the 6-param
version of applyCropRect().

Fixing this requires modifying all the flavours of RGBA
box_blur() to accept a src crop rect.

BUG=skia:4502, skia:4526
CQ_EXTRA_TRYBOTS=client.skia.android:Test-Android-GCC-Nexus5-CPU-NEON-Arm7-Release-Trybot;client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review URL: https://codereview.chromium.org/1415653003
2015-11-02 11:09:05 -08:00
halcanary
1f17364dc8 bin/sync-and-gyp: gclient hackery
Review URL: https://codereview.chromium.org/1427183003
2015-11-02 10:22:43 -08:00
mtklein
1ee76510f5 Start making all .cpp files compile-able on all platforms.
I sometimes dream to hone our build process down to something as simple as
    $ find src -name '*.cpp' | xargs c++ <some cflags> -c -o skia.o

To start, it helps if we can compile all files on all platforms.  Each
non-portable file guards itself with defines provided by SkTypes.h.  This does
not convert all non-portable code, but it's a good representative chunk.

E.g. instead of having to remember which SkDebug_*.cpp to compile on which
platform we can just compile all three and let the code itself sort it out.

This has the nice side effect of making non-portable code declare the
conditions under which it can compile explicitly.

I've been testing mostly with the CMake build as it's easiest, but this should
apply equally to BUILD, Gyp, and GN files... to any build system really.

BUG=skia:4269
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot

Review URL: https://codereview.chromium.org/1411283005
2015-11-02 10:20:27 -08:00
fmalita
3f0424ff57 [SkDebugger] Remove unneeded SkDebuggerGUI includes
R=robertphillips@google.com,mtklein@google.com

Review URL: https://codereview.chromium.org/1411963006
2015-11-02 09:32:54 -08:00
mtklein
d1f7e354a1 SkRemote: all paint effects except typeface
Changes:
https://gold.skia.org/search2?issue=1408383007&unt=true&query=source_type%3Dgm&master=false&include=true

BUG=skia:

Review URL: https://codereview.chromium.org/1408383007
2015-11-02 09:08:17 -08:00
egdaniel
c8a66eb633 Fix assert in GrGLShaderBuilder regarding shader outputs
Fixes crashing bot.

BUG=skia:

Review URL: https://codereview.chromium.org/1408063009
2015-11-02 07:46:25 -08:00
caryclark
952ebfe228 path ops: fix fuzz-found divide by zero
TBR=reed@google.com
BUG=542391

Review URL: https://codereview.chromium.org/1427913005
2015-11-02 07:32:58 -08:00
egdaniel
574a4c153d Move shader compiling to ProgramBuilder and various ShaderBuilder cleanups.
An additional positive of this CL is that GrGLShaderBuilder is now GL independent besides GrGLProgramBuilder

BUG=skia:

Review URL: https://codereview.chromium.org/1431433003
2015-11-02 06:22:44 -08:00
benjaminwagner
9dbec09251 In BUILD.public, specify alwayslink for skia library.
Some Skia classes use SkTRegistry, which requires the source files be linked in order to be registered.

Also replace "*CG*" with "SkImageDecoder_CG.cpp" for clarity.

BUG=skia:

Review URL: https://codereview.chromium.org/1405023013
2015-11-02 05:53:39 -08:00
update-skps
02cb37309c Update SKP version
Automatic commit by the RecreateSKPs bot.

TBR=
NO_MERGE_BUILDS

Review URL: https://codereview.chromium.org/1423633004
2015-11-01 00:47:37 -07:00
caryclark
2d9c59fa8c path ops; remove obsolete reduce
Cubics and quads tried to detect
linearness directly, once. This
is handled later in the pipeline
and need not be handled here.

TBR=reed@google.com

Review URL: https://codereview.chromium.org/1421553010
2015-10-30 13:56:50 -07:00
senorblanco
a8bd38e178 Add cropped-then-expanded test cases to blur_image_filter tests.
These are benches similar to the imagefilterscropexpand GM: an
input filter is cropped to a smaller size, then the blur is re-expanded
out to a larger size.

BUG=skbug:4502

Review URL: https://codereview.chromium.org/1412373004
2015-10-30 13:17:20 -07:00
caryclark
ef784fb7f5 More conic-specific tests revealed a few conic-specific bugs. Because javascript / canvas make visualizing conics tricky, new native tools are required.
The utility SubsetPath removes parts of a potentially very large path to isolate a minimal test case. SubsetPath is very useful for debugging path ops, but is not path ops specific.

PathOpsBuilderConicTest compares the output of the Path Ops Builder, sequential calls to Simplify, and SkRegions for some number of rotated ovals.

Some tests caused path ops to hang. It was caught adding a loop of curves because the head was not found by the tail. Even though the root cause has been fixed, SkSegment::addCurveTo callers now abort the path op if the same curve was added twice.

The subdivided conic weight was been computed anew. Fortunately, it's a simpler computation that the one it replaces.

Some Simplify() subroutines returned false to signal that the results needed assembling. Change these to abort the current operation instead.

Coincident curve intersection triggered two small bugs; one where no perpendicular could be found for coincident curves, and one where no coincident curves remain after looping.

The SixtyOvals test can be run through multiple processes instead of multiple threads. This strategy allows a 48 core machine to saturate all cores at 100%.

The DEBUG_VISUALIZE_CONICS code in PathOpsConicIntersectionTest acknowleges that it is easier to visualize conics with Skia than with script and html canvas. This test also verifies that path ops subdivision matches geometry chopping.

TBR=reed@google.com

Review URL: https://codereview.chromium.org/1405383004
2015-10-30 12:03:06 -07:00
robertphillips
498d7ac86b Dependencies are now added between the drawTargets in GrPipeline
This CL relies on https://codereview.chromium.org/1414773002/ (Add the machinery to GrDrawTarget to enable topological sorting)

BUG=skia:4094

Committed: https://skia.googlesource.com/skia/+/45a1c34f607a970933e5cd05e1df6cd8090db1be

Committed: https://skia.googlesource.com/skia/+/869c5e82a725a6928a45cd1fa6945ac783b8b3d8

Review URL: https://codereview.chromium.org/1414903002
2015-10-30 10:11:30 -07:00
bsalomon
f93982a477 Don't run nvpr on TSAN bot
Review URL: https://codereview.chromium.org/1405223006
2015-10-30 09:05:32 -07:00
halcanary
21adcb9fa0 DEPS: roll zlib: 20 new commits
List of changes at
4ba7cdd0e7..c4e33043fb

Of particular interest is
"Fix VC++ 2015 64-bit truncation warning in zlib".

Review URL: https://codereview.chromium.org/1416043007
2015-10-30 08:40:55 -07:00
mtklein
c2e2977014 Dedup SkPaths by gen-ID when going to .skp
We're all set up to serialize and deserialze paths by an integer ID,
but we're just not deduping any paths (every path gets a new ID).

This turns on deduping.  This should mean the number of paths in a
deserialized SkPicture are the same as when it was recorded.

No diffs:
https://gold.skia.org/search2?issue=1409373011&unt=true&query=source_type%3Dgm&master=false

BUG=skia:4527

Review URL: https://codereview.chromium.org/1409373011
2015-10-30 05:24:59 -07:00
robertphillips
13391dd972 Minor cleanup of clip mask manager
Follow up to https://codereview.chromium.org/1418073005/ (Remove gpu-side clip mask merging from clip mask manager).

The path renderer chain is only ever allocated when it is about to be used (so the delayed initialization doesn't buy us anything).

We can now reduce the lifetime of the pipelineBuilder in createAlphaClipMask

Review URL: https://codereview.chromium.org/1416113006
2015-10-30 05:15:11 -07:00
benjaminwagner
8a3760f8b2 For BUILD.public, let SkPreConfig.h set SK_RELEASE based on NDEBUG.
Use DumpStackTrace in SkASSERT in GOOGLE3.

There are extra assertions enabled in debug mode that cause RecordDraw_TextBounds to fail.

New include causes a naming conflict with global name "base".

Corresponding internal cl/106495354

No public API changes.

TBR=reed@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1423013004
2015-10-29 13:40:28 -07:00
bsalomon
c75be34b46 Clarify subrect semantics for GrTextureAdjuster and handle mip maps correctly.
Review URL: https://codereview.chromium.org/1410383008
2015-10-29 12:34:32 -07:00
fmalita
7361bf096e [SkDebugger] Show detailed drawImage info
R=robert.phillips@google.com

Review URL: https://codereview.chromium.org/1409393007
2015-10-29 12:13:48 -07:00
robertphillips
687378229a Remove GrPipelineBuilder from getPathRenderer call
Logically this CL:

Moves the PathRendererChain from GrContext to GrDrawManager
   - this was needed to untangled the Path-Chain/Renderer header mess
   - this entailed adding getDrawingMgr so the CMM could access the PathRenderingChain
   - this also entailed re-adding freeGpuResources to the GrDrawingMgr
Moves the CanDrawArgs struct up stack
Removes the GrPipelineBuilder from the CanDrawArgs struct

Review URL: https://codereview.chromium.org/1407883004
2015-10-29 12:12:21 -07:00
bsalomon
89fe56bb98 Pull texture-backed bitmap resampler out of GrTextureParamsAdjuster code into its own class.
Review URL: https://codereview.chromium.org/1420963008
2015-10-29 10:49:28 -07:00
senorblanco
05527a65e0 Remove SK_SAVE_LAYER_BOUNDS_ARE_FILTERED #define.
It's no longer used in Chrome.

BUG=skbug:3194

Review URL: https://codereview.chromium.org/1422183008
2015-10-29 10:24:38 -07:00
robertphillips
fe8d5f65ac Add generationID to debugger's path information
Review URL: https://codereview.chromium.org/1412013005
2015-10-29 09:45:27 -07:00
bungeman
ef27ce3730 Use only one CGFont/CTFont per scaler context on Mac.
The unrotated CTFont was introduced to fix color emoji scaling.
Use only the unrotated CTFont and apply the rotations manually.
This allows removal of one CTFont and allows us to apply (correctly)
the transformation CoreText would otherwise need to apply
(which it appears to do inconsistently).

Review URL: https://codereview.chromium.org/1360663002
2015-10-29 09:30:32 -07:00
pkasting
129319ff55 Attempt to update Xfermode comments to have parallel structure.
BUG=none
TEST=none

Review URL: https://codereview.chromium.org/1406413003
2015-10-29 08:41:15 -07:00
egdaniel
7dc4bd06fc Remove GrGLProcessor and create GrGLSLTextureSampler class.
Part ??? of separating glsl and gl

BUG=skia:

Review URL: https://codereview.chromium.org/1425013003
2015-10-29 07:57:02 -07:00
joshualitt
cc92b4a7ec Initial gyp files for SDL
BUG=skia:

Review URL: https://codereview.chromium.org/1411033003
2015-10-29 07:09:53 -07:00
senorblanco
6a6229e0b0 Protect apply_paint_to_bounds_sans_imagefilter() with an #ifdef.
Its only caller is protected by the same #ifdef.

NOPRESUBMIT=true
TBR=reed@google.com
BUG=skia:

Review URL: https://codereview.chromium.org/1404353010
2015-10-28 17:01:00 -07:00
senorblanco
d5b9211d8d SkBlurImageFilter_opts: optimize NEON box_blur_double in separate loops.
Stop leaning so hard on the branch predictor, and pull the conditionals
out of the loops for box_blur_double() (NEON).  This is conceptually
the same change as https://codereview.chromium.org/1426583004/ for
the NEON double-pixel loop.

R=mtklein@google.com

BUG=skia:4526
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review URL: https://codereview.chromium.org/1412793009
2015-10-28 15:39:33 -07:00
senorblanco
4449398b32 Make SkImageFilter::applyCropRect() optionally compute srcBounds.
BUG=skia:4526

Review URL: https://codereview.chromium.org/1410553007
2015-10-28 14:17:17 -07:00
scroggo
a3f792d4d4 Rename SkScaledCodec.cpp to SkSampledCodec.cpp
Review URL: https://codereview.chromium.org/1413363008
2015-10-28 14:06:10 -07:00
mtklein
7de63d50d4 Android framework builds can't see cpu-features.h
Don't try to do NEON detection for Android framework builds.

BUG=skia:

Review URL: https://codereview.chromium.org/1423953004
2015-10-28 13:45:59 -07:00
joshualitt
b5068fce36 Update deps to pull sdl
BUG=skia:

Review URL: https://codereview.chromium.org/1425033003
2015-10-28 13:28:54 -07:00
mtklein
bbba16878f nanobench: fix and simplify --samplingTime
Recent changes to WallTimer broke --samplingTime.  In particular, this idiom became nonsensical:
   WallTimer timer;
   timer.start();
   do {
     ...
     timer.end();
   } while(timer.fWall < ...);

WallTimer started making private use of fWall between when start() and end() were called, so the second time around the loop we end up with nonsense.

If that makes no sense, don't worry.  The code here using now_ms() is just as fast, just as precise, and clearer.

I took the opportunity to simplify --samplingTime <complicated string parsing> to --ms <int>, and to simplify the code that depends on it.

BUG=skia:

Review URL: https://codereview.chromium.org/1419103004
2015-10-28 11:36:30 -07:00
senorblanco
87e066ee80 Change saveLayer() semantics to take unfiltered bounds.
For optimizing saveLayer() offscreens, it is useful to know the
bounds of the primitive being drawn. Currently, the bounds passed to
saveLayer() are filtered, which makes it difficult to know the original
bounds of the primitive. This CL changes the semantics to accept
unfiltered bounds. This actually simplifies the callsites too. In
order to result in the correct pixels being produced, we then call
computeFastBounds() inside clipRectBounds().

The old behaviour is wrapped in #ifdef SK_SAVE_LAYER_BOUNDS_ARE_FILTERED,
until we can update Chrome's callsites (see
https://codereview.chromium.org/1316243002/).

This change will affect the following GMs:
testimagefilters: saveLayer bounds no longer cause clipping
imagefiltersbase: slight pixel diffs
resizeimagefilter: slight pixel diffs on the "high quality" test case
imagefilterscropexpand: displacement results are now correct
filterfastbounds: slight pixel diffs
matriximagefilter: slight pixel diffs

BUG=skia:3194 skia:4526

Review URL: https://codereview.chromium.org/1304883004
2015-10-28 11:23:36 -07:00
robertphillips
544b9aa9e7 Remove gpu-side clip mask merging from clip mask manager
In the clip mask merging path, the CMM creates new renderTargets and draws to them. In the non-MDB world this is okay b.c. all the draws land in the same drawTarget anyway. In the MDB world the draws for the new renderTargets have to land in different drawTargets.

This can be resolved by a lot of plumbing and refactoring to create drawContexts for the created renderTargets or by removing the mask-merging drawing path.

Since, https://codereview.chromium.org/1424853002/ (Disable gpu-side clip mask merging in the clip mask manager), appears to have stuck, this CL removes the clip mask merging code.

BUG=skia:4094
BUG=skia:4519

Review URL: https://codereview.chromium.org/1418073005
2015-10-28 11:01:41 -07:00
senorblanco
d5fa77ff6a SkBlurImageFilter_opt.h: break conditions into separate loops.
This gives ~15% improvement on blur_image on Linux Z620,
and should allow me to implement cropping without
incurring a perf hit.

BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review URL: https://codereview.chromium.org/1426583004
2015-10-28 10:26:06 -07:00
mtklein
e4881b6f2b add a note
BUG=skia:

Review URL: https://codereview.chromium.org/1405083008
2015-10-28 10:02:06 -07:00
mtklein
72815e9b15 move reinterpret_cast into SK_PREFETCH
no public API changes
TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/1419573011
2015-10-28 09:52:20 -07:00
mtklein
bdef140b50 Send SkDebugf through stderr and flush on Windows too.
This makes it consistent with Linux/Mac.  There, stderr is not buffered, so the flush is not needed / implicit.

BUG=skia:

Review URL: https://codereview.chromium.org/1419073003
2015-10-28 09:50:31 -07:00
mtklein
24a592c2ef Make bin/c and bin/compare work on Windows.
- Call python explicitly.
  - Drop numpy dependency (on numpy.mean.... come on.)
  - Make scipy dependency optional.

Depends on https://codereview.chromium.org/1419073003 to really work.

BUG=skia:

Doesn't change code.
NOTRY=true

Review URL: https://codereview.chromium.org/1416833004
2015-10-28 09:45:44 -07:00