Commit Graph

262 Commits

Author SHA1 Message Date
Ethan Nicholas
a6ae1f7cda wired up SPIR-V validator
Change-Id: I33dfd5e7ea3ea048b88c6db2f14389b16a0af7c8
Reviewed-on: https://skia-review.googlesource.com/9688
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-16 14:42:20 +00:00
Ben Wagner
462c4bd6eb Roll freetype.
08fd250e1a..447a0b6263

Change-Id: I5406cd19cb7484c2cc1e24dc01bd37671f2456ec
Reviewed-on: https://skia-review.googlesource.com/9689
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2017-03-15 14:16:22 +00:00
Matthew Leibowitz
3150ec6be9 Added support for building for tvOS
This change is just to add support for building for tvOS.
It is exactly the same as iOS, just using a different SDK.

I had to change the two lines for libjpeg-turbo so that
it will run for both tvOS and iOS.

BUG=skia:

Change-Id: I6ae5fc4257df74c0f321e5d2d71584f6a52ec3a6
Reviewed-on: https://skia-review.googlesource.com/9660
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-14 22:55:04 +00:00
Matt Sarett
b733320ab1 Delete yasm config files
These aren't currently being used.

Our clients typically compile libjpeg-turbo themselves and use their
own yasm to build the .asm files.

For the libjpeg-turbo that we use to test, we don't compile the
.asm optimizations.  Maybe we should do this...  But while we don't
there is no need for the yasm config files.

BUG=skia:

Change-Id: I903a47ce444b6740b32fe8d99472c4d959058f7b
Reviewed-on: https://skia-review.googlesource.com/9238
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-04 21:54:29 +00:00
Mike Klein
e459afd6ce Strengthen is_official_build, update docs.
This makes is_official_build turn off all development targets and
features in Skia, including building third-party dependencies from
source.

This will intentionally break some external users, who will find
themselves no longer able to find third-party headers or link against
third-party libraries.  These users have been building with our testing
third-party dependencies unknowingly.  They'll need to either explicitly
turn back on building each dependency from source
(skia_use_system_foo=false) or disable that dependency entirely
(skia_use_foo=false).

is_skia_standalone is now basically !is_official_build, so I've
propagated that through, removing is_skia_standalone.  In a few places
we were using it as a stand-in for defined(ndk), so I've just written
defined(ndk) there.  Duh.

gn_to_bp:

    is_offical_build's new strength also makes gn_to_bp.py simpler to
    write.  In spirit, Android builds are official Skia builds that also
    build DM and nanobench.

    It seems that SkJumper (src/jumper/*) is (unintentionally) enabled
    on Android.  Switching to an is_official_build would have disabled
    that.  But as that accidental launch seems to have gone fine, I've
    kept it explicitly enabled.

    In the end, no changes to Android.bp or its SkUserConfig.h.

The -Mini builder no longer needs to explicitly disable tools.
CQ_INCLUDE_TRYBOTS=skia.primary:Build-Ubuntu-Clang-x86_64-Release-Mini

Change-Id: Id06e53268a5caf55c6046ada354a0863c3031c73
Reviewed-on: https://skia-review.googlesource.com/9190
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-03-03 15:41:24 +00:00
Ben Wagner
fc497343cb Add SkTypeface::getVariationDesignPosition.
Allow users to query a typeface's position in variation design space.

Change-Id: Id7cae439e795b8c9586394f11359fb7fe55e1c0b
Reviewed-on: https://skia-review.googlesource.com/8861
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2017-02-24 16:59:05 +00:00
Ben Wagner
97043299cb Revert "Add SkTypeface::getVariationDesignPosition."
This reverts commit 0f3d0c37db.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Add SkTypeface::getVariationDesignPosition.
> 
> Allow users to query a typeface's position in variation design space.
> 
> Change-Id: I173ee9eefdddee6b2613435ebcc6b08c25b382ed
> Reviewed-on: https://skia-review.googlesource.com/8684
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> 

TBR=bungeman@google.com,reed@google.com,reviews@skia.org,drott@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I484fe52c1f89e7b6d0024dcabf7c59d0e8b5b5e7
Reviewed-on: https://skia-review.googlesource.com/8929
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2017-02-23 20:48:53 +00:00
bungeman
0f3d0c37db Add SkTypeface::getVariationDesignPosition.
Allow users to query a typeface's position in variation design space.

Change-Id: I173ee9eefdddee6b2613435ebcc6b08c25b382ed
Reviewed-on: https://skia-review.googlesource.com/8684
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2017-02-23 18:41:57 +00:00
Ben Wagner
7d07d46638 Revert "Add SkTypeface::getVariationDesignPosition."
This reverts commit 87e7f820f7.

Reason for revert: Failed a test on Mac

Original change's description:
> Add SkTypeface::getVariationDesignPosition.
> 
> Allow users to query a typeface's position in variation design space.
> 
> Change-Id: I5d80c8ff658708a5d1aa386ec5b7396dcb621198
> Reviewed-on: https://skia-review.googlesource.com/7130
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> 

TBR=bungeman@google.com,reed@google.com,reviews@skia.org,drott@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ia65792083642dbe9333a62eb75d162931b57cffd
Reviewed-on: https://skia-review.googlesource.com/8670
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2017-02-17 18:39:09 +00:00
Ben Wagner
87e7f820f7 Add SkTypeface::getVariationDesignPosition.
Allow users to query a typeface's position in variation design space.

Change-Id: I5d80c8ff658708a5d1aa386ec5b7396dcb621198
Reviewed-on: https://skia-review.googlesource.com/7130
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2017-02-17 18:05:47 +00:00
Herb Derby
3bf12c60e2 Remove third_party/ktx from Skia.
Change-Id: I3a1f68b0528f8789af5ccc0704b0a68fe14f52d3
Reviewed-on: https://skia-review.googlesource.com/8319
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2017-02-16 20:03:46 +00:00
scroggo
1e532d3ad3 Update libwebp to 0.6.0
Corresponds with Android change
https://android-review.googlesource.com/#/c/326439/

"this version includes encoder and performance improvements"

Update build file
* Many files have been renamed from
    src/<subdir>/<name>.c
      to
    src/<subdir>/<name>_<subdir>.c

* Build new files (*_msa.c, *_neon.c, predictor_enc.c)

This should fix issue 5876, which was caused by a compiler bug.
With the added NEON implementation, we will no longer trigger
the bug.

BUG=skia:5876

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Mac-Clang-arm-Debug-iOS

Review-Url: https://codereview.chromium.org/2689283007
2017-02-16 05:57:41 -08:00
Matt Sarett
9119de64aa Update libjpeg-turbo to 1.5.1, enable arithmetic decoding
BUG=skia:4710

Change-Id: Idac44f7bdf140f1288bc1538f28ab1a4e1ccaae6
Reviewed-on: https://skia-review.googlesource.com/8274
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
2017-02-13 15:36:42 +00:00
Brian Osman
79086b94ed Integrate the ImGui library with viewer
Code and docs are at: https://github.com/ocornut/imgui

ImGui is an open source immediate mode GUI library that's
lightweight and fairly simply to integrate. Widget functions
return their state, and the library emits vertex and index
data to render everything. It's got a huge set of built-in
widgets and really robust layout control.

For the initial integration, I had to fix up event handling
in the viewer's app framework (to get mouse wheel and more
keys, etc...).

The new viewer 'Debug' window is toggled with the space bar.
For this change, I've added one feature to that window: the
slide picker. It's got a list of all slides, with filtering
support, and the ability to click to switch slides.

I also included the ImGui 'Demo' window (toggled with 'g').
This is nicely laid out, and includes examples of pretty
much everything the library can do. It also serves as good
documentation - find something that looks like what you want,
and then go look at the corresponding code (all of it is in
imgui_demo.cpp).

I have other CLs with other features (like directly editing
the primaries of the working color space), but I wanted to
land this chunk first, then start adding more features.

Other than adding new debugging features, there are few
more outstanding work items:

1) Raster doesn't render the GUI correctly, due to non-
invertible pos -> UV matrices. Florin is working on that.
2) Touch inputs aren't being routed yet, so the GUI isn't
usable on Android yet. Might also be tough to work with,
given the size.
3) ImGui has clipboard integration (that's why it wants
the C, X, and V keys), but we need to wire it up to the
OS' clipboard functions.
4) Draw commands can carry a void* payload to support
drawing images (using whatever mechanism the engine has).
I'd like to set that up (probably using SkImage*), which
makes it really easy to add visualization of off-screen
images in GMs, etc...

BUG=skia:

Change-Id: Iac2a63e37228d33141cb55b7e4d60bf11b7e9ae1
Reviewed-on: https://skia-review.googlesource.com/7702
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-02-10 19:17:03 +00:00
Herb Derby
5881e82060 Remove dep from ktx to SkTextureCompressor.
If this breaks anything in google3 revert it.

Change-Id: I35eb588e753a6fad78c1255556daae145533c801
Reviewed-on: https://skia-review.googlesource.com/8275
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2017-02-09 22:10:16 +00:00
Hal Canary
6d75d119dc harfbuzz 1.3.0 → 1.4.2
Change-Id: I0c2f050c70755523abfbe98c17e90a90ecbedff5
Reviewed-on: https://skia-review.googlesource.com/8113
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Hal Canary <halcanary@google.com>
2017-02-07 16:01:57 +00:00
Mike Klein
94151daec4 Remove unused files in third_party/libsdl.
Change-Id: I44c95341e7bc631322a9802bce3fdc5a0e8c4bb5
Reviewed-on: https://skia-review.googlesource.com/8066
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2017-02-06 18:25:22 +00:00
Leon Scroggins III
e4ba1059dd GIF: Only report a frame after knowing dependency
Previously, getFrameInfo might report a frame that was truncated prior
to setting its requiredFrame. As a result, fRequiredFrame may be
different depending on how much data has already been received.

If there is a local color table, do not report the frame until the
color table has been received, since that is used to determine
fRequiredFrame. If there is no local color table, set fRequiredFrame
and report the frame after reading the header.

Add a test.

Replace make_from_resource with GetResourceAsData

Change-Id: I1b697f766c1d0e1e12ab2ae1d27167af5193395d
Reviewed-on: https://skia-review.googlesource.com/7756
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-01-30 21:22:29 +00:00
Leon Scroggins III
6ccd2cabaa Generate Android build targets for dm and nanobench
Generate targets for dm and nanobench from ninja and add them to the
generated Android.bp file.

Remove nanobenchAndroid and SkAndroidSDKCanvas. These rely on HWUI
internals and are currently unused.

Update gyp file references to removed files, just in case.

Change-Id: Ic6ae18a70bfd0c33804e7996d077f2081dfdfe07
Reviewed-on: https://skia-review.googlesource.com/7635
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-01-27 20:02:23 +00:00
Ethan Nicholas
ab23acf4fa Revert "Update libwebp to 0.6.0-pre"
This reverts commit e2f6ffbf49.

Reason for revert:

iOS build failures, see https://luci-milo.appspot.com/swarming/task/33e5e02cf8419d10/steps/build_iOSShell/0/stdout

Original change's description:
> Update libwebp to 0.6.0-pre
> 
> Corresponds with Android change
> https://android-review.googlesource.com/#/c/326439/
> 
> "this prerelease snapshot includes encoder and performance
> improvements"
> 
> Update build file
> * Many files have been renamed from
>     src/<subdir>/<name>.c
>       to
>     src/<subdir>/<name>_<subdir>.c
> 
> * Build new files (*_msa.c, *_neon.c, predictor_enc.c)
> 
> This should fix issue 5876, which was caused by a compiler bug.
> With the added NEON implementation, we will no longer trigger
> the bug.
> 
> BUG=skia:5876
> 
> Change-Id: I0fcce4362ee70138547b1d23aa9ef537a4126e73
> Reviewed-on: https://skia-review.googlesource.com/7376
> Reviewed-by: Matt Sarett <msarett@google.com>
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> 

TBR=msarett@google.com,scroggo@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:5876

Change-Id: Ib81f63861d9f1c6936bd7f790b5e16a9544a4df0
Reviewed-on: https://skia-review.googlesource.com/7420
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2017-01-23 20:47:46 +00:00
Leon Scroggins III
e2f6ffbf49 Update libwebp to 0.6.0-pre
Corresponds with Android change
https://android-review.googlesource.com/#/c/326439/

"this prerelease snapshot includes encoder and performance
improvements"

Update build file
* Many files have been renamed from
    src/<subdir>/<name>.c
      to
    src/<subdir>/<name>_<subdir>.c

* Build new files (*_msa.c, *_neon.c, predictor_enc.c)

This should fix issue 5876, which was caused by a compiler bug.
With the added NEON implementation, we will no longer trigger
the bug.

BUG=skia:5876

Change-Id: I0fcce4362ee70138547b1d23aa9ef537a4126e73
Reviewed-on: https://skia-review.googlesource.com/7376
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-01-23 20:23:59 +00:00
Hal Canary
95e3c058ef SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h
* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).

  * SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h

  * "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"

Revert "Revert 'SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h'"
This reverts commit c456b73fef.

Change-Id: Ie2c1a17c20134b8ceab85a68b3ae3e61c24fbaab
Reviewed-on: https://skia-review.googlesource.com/6886
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2017-01-11 18:55:34 +00:00
Kevin Lubick
c456b73fef Revert "SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h"
This reverts commit a5494f1170.

Reason for revert: Broke Google3

Original change's description:
> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h
> 
>   * SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).
> 
>   * SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h
> 
>   * "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"
> 
> Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
> Reviewed-on: https://skia-review.googlesource.com/4543
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>
> 

TBR=halcanary@google.com,bungeman@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ie8bd176121c3ee83c110d66c0d0ac65e09bfc9c5
Reviewed-on: https://skia-review.googlesource.com/6884
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2017-01-11 17:22:12 +00:00
Hal Canary
a5494f1170 SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h
* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).

  * SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h

  * "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"

Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
Reviewed-on: https://skia-review.googlesource.com/4543
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2017-01-11 15:36:45 +00:00
Brian Osman
21d742dbaf Get latest ANGLE as of January 6, 2017
Also add ANGLE ES3 predefined configs.

BUG=skia:
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Win10-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE

Change-Id: Ib7394afa961da1afe91c6dfefe08528273d3087c
Reviewed-on: https://skia-review.googlesource.com/6698
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-01-11 15:12:40 +00:00
Mike Klein
c0a7a08359 remove xbyak experiment
SkSplicer is better.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I014ec0e9fb00a8a4694d442e672c65402621dc67
Reviewed-on: https://skia-review.googlesource.com/6830
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-01-10 16:25:10 +00:00
Ben Wagner
a55ffa2f06 Roll FreeType past 2.7.1.
ffd8f62236..08fd250e1a

This picks up a number of fixes and an implementation of
FT_Get_Var_Design_Coordinates.

Change-Id: Idac2b3b5d2b0684fa2c13f4f2484c09f39a4eced
Reviewed-on: https://skia-review.googlesource.com/6815
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2017-01-09 20:48:19 +00:00
Mike Klein
7f71d8845c SkXbyak basics
A little JIT proof of concept for SkRasterPipeline, using xbyak, which is a header-only assembler.  It's x86-only, but supports x86 very thoroughly, and it's very user friendly (at least as far as assembler libraries go...).

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ie17e562b0f3fff5914041badfb2c1fe4f86efab8
Reviewed-on: https://skia-review.googlesource.com/5730
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Heather Miller <hcm@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-01-06 17:45:41 +00:00
Leon Scroggins III
b0b625b796 GIF: Better check for frame dependency
If a frame does not have a valid transparent index and it covers the
prior frame, it does not really depend on that frame. Instead, it
depends on the frame that the prior frame depends on.

Determine this once we have parsed the local color map (if any), so a
transparent index out of range of the color map is not considered
valid.

Share code that determines whether a frame has a transparent pixel.

Add a test that we compute the dependencies correctly. randPixelsAnim.gif
has 13 frames. After the first, the frames cover all combinations of

- Whether the prior frame was keep, restoreBG or restoreToPrevious
- Whether the new frame covers the prior frame
- Whether the new frame has a transparent pixel

(It only does so when using a global color table. It may make sense to
expand the test to also cover using local color tables.)

The test caught a bug where we incorrectly reused an existing
SkColorTable for a different frame. Fix that bug by keeping track of
the transparent index associated with the current SkColorTable.

Change-Id: I3cf6be7f612990fa7a00d9e74d116d31bd227526
Reviewed-on: https://skia-review.googlesource.com/6402
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-01-03 19:07:41 +00:00
Chris Blume
d5c5ed556c Make SkGIFLZWBlock modifiable so it is assignable
std::vector needs to be able to assign objects contained inside it. With
const member variables, this isn't possible. Remove the consts so
SkGIFLZWBlock can be assigned.

BUG=skia:6072

Change-Id: I990dc80fb1c49fbd584712c6d0c1154c2da36e85
Reviewed-on: https://skia-review.googlesource.com/6362
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2016-12-21 16:41:43 +00:00
Leon Scroggins III
932efed7c8 GIF: Avoid copying/storing data when possible
If the input SkStream has a length and position, do not copy and store
LZW blocks or ColorMaps. Instead, mark the position and size, and read
from the stream when necessary.

This will save memory in Chromium's use case, which has already
buffered all of its data.

In the case where we *do* need to copy, store it on the SkStreamBuffer.
This allows SkGifImageReader to have simpler code.

Add tests.

Change-Id: Ic65fa766328ae2e5974b2084bc2099e19aced731
Reviewed-on: https://skia-review.googlesource.com/6157
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2016-12-19 15:25:13 +00:00
Leon Scroggins
427da6fcbb Revert "Remove all KTX support"
This reverts commit ada12ab055.

Reason for revert: Google3 needs it:
https://test.corp.google.com/ui#id=OCL:142184832:BASE:142184975:1481839118985:32fde8ef

Original change's description:
> Remove all KTX support
> 
> It is untested and unused.
> 
> Change-Id: I010ff4ad942738f362d42a99af4edbbb1cb0cd71
> Reviewed-on: https://skia-review.googlesource.com/6142
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> 

TBR=mtklein@chromium.org,mtklein@google.com,robertphillips@google.com,scroggo@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I1ea2f9487eb2212efbfcc514122792b70c9e8737
Reviewed-on: https://skia-review.googlesource.com/6181
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2016-12-16 13:52:09 +00:00
Leon Scroggins III
ada12ab055 Remove all KTX support
It is untested and unused.

Change-Id: I010ff4ad942738f362d42a99af4edbbb1cb0cd71
Reviewed-on: https://skia-review.googlesource.com/6142
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2016-12-15 21:15:54 +00:00
Leon Scroggins III
4993b95f53 Do not create SkGifCodec if true size is not known
If there is enough data in the stream to read the reported canvas size,
but not enough to read the first image's header, we do not know the
true canvas size, since we may expand it to fit the first frame. In
that case, return nullptr from NewFromStream.

Add a test.

SkGifCodec.cpp:
Correct a comment - parse returns false if there is a fatal error.
parse() returning true does not guarantee that the size was found.
Instead of checking the width and height, check to see whether the
first frame exists and has its header defined. If not, we do not yet
know the true canvas size. Assert that the canvas size is non-zero,
which is a fatal error from parse.

SkGifImageReader.cpp:
Move the code to set the header defined before the SkGIFSizeQuery exit
condition. This allows SkGifCodec to check the first frame's header to
determine whether the size is known.

GifTest.cpp:
Add a test which truncates the file just before the image header (and
after the global header). Prior to the other changes, this would create
an SkCodec. For an image that needs its canvas size expanded, the
SkCodec would have an incorrect size.

CodecPartialTest.cpp:
randPixels.gif now needs more than half of its data to create an
SkCodec, so set a minimum for test_partial.

Change-Id: I40482f524128b2f1fe59b8f27dd64c7cbe793079
Reviewed-on: https://skia-review.googlesource.com/5701
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2016-12-09 15:04:06 +00:00
Ben Wagner
ee6c368a6d Roll third_party/externals/freetype 4d3f7ca8cedb..ffd8f622360
4d3f7ca8ce..ffd8f62236

Change-Id: Ia9d8af09253d0aff343c2310f5eb8c934b2ebbda
Reviewed-on: https://skia-review.googlesource.com/5685
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2016-12-08 15:22:37 +00:00
Leon Scroggins III
45565b676c GIF: Internal cleanup - remove color map parameter
SkGIFFrameContext::decode() and SkGIFLZWContext::prepareToDecode() do
not need (or use) the global color map, so stop passing it as a
parameter. The parameter was used prior to
https://skia-review.googlesource.com/c/4379/ (different issue!), but we
overlooked removing it then.

Change-Id: I0f477e9db11f7650938d6b868baef69e3b37d86b
Reviewed-on: https://skia-review.googlesource.com/5609
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
2016-12-05 20:28:34 +00:00
Hal Canary
a4d861a5b4 third_party/ktx: put WriteBitmapToKTX back
BUG=skia:

Change-Id: I876e802db370a7812cd53e42cb4927702e6c1fb6
Reviewed-on: https://skia-review.googlesource.com/5418
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2016-12-01 17:45:12 +00:00
Hal Canary
1fcc40474f SkEncodeImage: no more link-time registration
Also, no more SkImageEncoder class.

SK_SUPPORT_LEGACY_IMAGE_ENCODER_CLASS now only guards some
old API shims.

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

Change-Id: I3797f584f3e8e12ade10d31e8733163453725f40
Reviewed-on: https://skia-review.googlesource.com/5006
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2016-11-30 22:48:56 +00:00
Mike Klein
4fea663af4 Apple's Clang can't assemble jsimd_arm_...
This should fix Build-Mac-Clang-arm64-Debug-GN_iOS_NoBuildbot.

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

Change-Id: Ie49ce5642fb2d373102c9309074e13ee3035a569
Reviewed-on: https://skia-review.googlesource.com/4755
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-11-14 15:03:46 +00:00
Mike Klein
e7bd81d0a8 GN: turn on easy libjpeg-turbo SIMD backends (ARMv7 and ARMv8)
These are so easy we might as well...

I did a quick check of relevant-looking defines:
   - GYP defined WITH_SIMD, but it looks like that's already defined (by jconfig.h?);
   - GYP defined RGBX_FILLER_0XFF, but that affects only x86/x86-64;
   - GYP defined STRICT_MEMORY_ACCESS, which does nothing;
   - GYP defined MOTION_JPEG_SUPPORTED, which does nothing (and we'd probably not care anyway).

BUG=skia:5875

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

Change-Id: Ib1f28d354630be472c4d9648d5ade74a452a9e24
Reviewed-on: https://skia-review.googlesource.com/4745
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-11-14 13:50:15 +00:00
Mike Klein
38af9438d7 GN: build Lua tools when skia_use_lua.
When we opt into Lua, this builds SampleLua into SampleApp, and the lua_app and lua_pictures tools.

I've tested this builds with and without skia_use_system_lua on my Mac laptop and Linux desktop.

I've made lua_pictures.cpp's flags static to avoid conflicts with flags in SkCommonFlags.cpp.

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

DOCS_PREVIEW= https://skia.org/?cl=4699

Change-Id: I8176fd51d8a38746e7d730cfcce66da42b9a015a
Reviewed-on: https://skia-review.googlesource.com/4699
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-11-11 17:34:36 +00:00
Mike Klein
d23341bb5e GN: turn on libpng SSE2 filters
I was profiling and remembered GN hasn't turned on much CPU-specific code.  I looked at zlib, then libpng, then libjpeg-turbo:

  - zlib was easy but not useful.  No routine we use in decoding changes significantly.
  - libpng was easy and useful, and we were already using NEON filters on ARM.
  - libjpeg-turbo requires yasm and is annoying.

BUG=skia:5875

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

Change-Id: Ie072a457da41ee6538eebacb5eb5dbe5a6eb585e
Reviewed-on: https://skia-review.googlesource.com/4531
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
2016-11-07 22:36:42 +00:00
Matt Sarett
4ef986db65 Write transparent pixels more often in SkGifImageReader
This stems from a behavior difference between Skia and Chrome.
In Skia, we want to write transparent pixels as often as possible.
(It's faster than checking if we should skip each pixel.)
In Chrome, they avoid writing transparent pixels unless
absolutely necessary.

We were cautious about changing behavior when this first landed,
but this is easier to think about in a smaller change (right now).
(1) We can always write transparent pixels when we are writing
    an independent frame.
(2) There is no need for the progressiveDisplay() check.  We
    only ever use progressive display methods on the first
    frame - and the first frame is always independent.

BUG=skia:

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

Change-Id: I82048a08e2003aac216f483c7db8df997b687149
Reviewed-on: https://skia-review.googlesource.com/4379
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2016-11-03 19:25:39 +00:00
Matt Sarett
a9e9bfc6e4 Delete qcms
This was always intended to be a temporary dependency to use for
testing.  It has served its purpose.

Also, this has already been dropped (accidentally, I think) by
the new GN build.

TBR=reed@google.com

BUG=skia:

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

Change-Id: Ic72ee08bbfaf86ed86a4122fd38be2921eb1327e
Reviewed-on: https://skia-review.googlesource.com/4220
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
2016-11-01 16:45:40 +00:00
Mike Klein
10d665d000 Allow most third_party targets to use system libraries if asked.
This extends the pattern in freetype2 to expat, icu, libjpeg-turbo, libpng, libwebp, and zlib, and gives all these an arg to control which to use.

Homebrew doesn't have dng_sdk, piex, or sftnly, or I'd have done the same for them too.

BUG=skia:

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

DOCS_PREVIEW= https://skia.org/?cl=4260

Change-Id: I82e780502bf2217336e791787f172a6fc8f55460
Reviewed-on: https://skia-review.googlesource.com/4260
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Hal Canary <halcanary@google.com>
2016-11-01 16:17:38 +00:00
scroggo
e71b1a1496 Report repetition count in SkCodec
Add a new accessor to retrieve the repetition count.

Remove constants (and corresponding copyright) in SkCodecAnimation.
These may make sense for the calling code, but are not needed here.

kRepetitionCountInfinite corresponds to Blink's kAnimationLoopInfinite.
Move cLoopCountNotSeen to private. It is used to determine whether we
still need to parse. Add a new enum to the parse query - only parse
enough to determine the repetition count.

Unlike Chromium, SkGifCodec does not account for deleting the reader
(which SkGifCodec does not do) or failed decodes.

Add a test.

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

Review-Url: https://codereview.chromium.org/2447863002
2016-11-01 08:28:28 -07:00
scroggo
f84ad646f9 Reland "Build SkRawCodec in GN"
Add BUILD.gn files for dng_sdk and piex and updated BUILD.gn to
build SkRawCodec.

We stopped testing raw images when we switched to GN, so this will
bring back our testing.

Leave SkRawCodec disabled on Windows, where we've had problems in the
past.

Originally landed in issue 4603. Reverted due to build errors.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2463433002

Review-Url: https://codereview.chromium.org/2463433002
2016-10-31 09:02:57 -07:00
scroggo
2f7068aec9 Treat a GIF with no color table as transparent
When checking to see whether a GIF has transparency to determine its
alpha type, treat an empty color table as having alpha, since we
will draw it as a transparent image.

(This is a separate bug from skbug.com/5883, but the image I used to
verify that bug was drawn to 565 as black. The fix is to not support
565 in that case, by changing its recommended alpha type.)

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

Review-Url: https://codereview.chromium.org/2461813002
2016-10-31 04:45:11 -07:00
Leon Scroggins
2ce47630fe Revert "Build SkRawCodec in GN"
This reverts commit 04b1f461aa.

Reason for revert: Breaking build bots


TBR=mtklein@chromium.org,mtklein@google.com,scroggo@google.com,adaubert@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I26c71116ad19b3c494fd632fcc6309bc2ae0d828
Reviewed-on: https://skia-review.googlesource.com/4100
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2016-10-28 14:09:52 +00:00
Leon Scroggins III
04b1f461aa Build SkRawCodec in GN
Add BUILD.gn files for dng_sdk and piex and updated BUILD.gn to
build SkRawCodec.

We stopped testing raw images when we switched to GN, so this will
bring back our testing.

Leave SkRawCodec disabled on Windows, where we've had problems in the
past.

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

Change-Id: I956949506200b766a2f7efb18e0486f3a2f93a1c
Reviewed-on: https://skia-review.googlesource.com/4063
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-10-28 13:46:29 +00:00
scroggo
6fe16d3f58 Remove SkMovie and giflib
SkMovie is not used in any of our tests or by Chromium. It is also not
supported by GN. It is being moved into Android, its only client, so we
can delete it here.

giflib is only used by SkMovie, so stop pulling/building it.

TBR=reed@google.com

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

Change-Id: I28a8155fd59e139bb21ec2295cc22fdced034284
Review-Url: https://codereview.chromium.org/2449213004
2016-10-27 12:24:43 -07:00
scroggo
53f63b69e8 Fix decoding GIF to 565
565 cannot take the !writeTransparentPixels path, so disable it for
cases where we might have to take that path.

This only affects frames beyond the first. If the first frame has
a transparent pixel, it will be marked as non-opaque, so we cannot
decode to 565 anyway.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2441833002

Review-Url: https://codereview.chromium.org/2441833002
2016-10-27 08:29:13 -07:00
scroggo
1285f41395 Write transparent pixels more often (SkGifCodec)
Writing transparent pixels is faster than the alternative, and we can
skip clearing the frame to transparent. We'll still clear if the image
is incomplete.

I ran

  ./out/Release/nanobench --images <images> --samples 100 --sourceType image --simpleCodec -v

over the GIFs we have on our bots, and found an average ~13% speedup.
Raw data is on sheet 2 of
https://docs.google.com/spreadsheets/d/19V-t9BfbFw5eiwBTKA1qOBkZbchjlTC5EIz6HFy-6RI/
(the sheet is named WriteTransparentPixels).
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2436183002

Review-Url: https://codereview.chromium.org/2436183002
2016-10-26 13:48:03 -07:00
Jim Van Verth
3cfdf6c8b1 Fix some Windows warnings
BUG=skia:

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

Change-Id: Icfc5dfb985b966c625d9bc81f61719ac5549085e
Reviewed-on: https://skia-review.googlesource.com/3980
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2016-10-26 14:16:28 +00:00
scroggo
f9acbe2895 Fix more namespace conflicts in SkGifImageReader
To fix Google3
TBR=benjaminwagner@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2450753003

NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2450753003
2016-10-25 12:43:21 -07:00
scroggo
b1094bc692 Move third_party/gif's license into its own file
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2448573002

Review-Url: https://codereview.chromium.org/2448573002
2016-10-24 13:58:28 -07:00
scroggo
3d3a65c488 Rename GIFImageReader to SkGifImageReader
The former could violate One Definition Rule in Google3, since other
projects that are based on Chrome/webkit also have GIFImageReader.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2445653004

Review-Url: https://codereview.chromium.org/2445653004
2016-10-24 12:28:30 -07:00
scroggo
19b91531e9 Add support for multiple frames in SkCodec
Add an interface to decode frames beyond the first in SkCodec, and
add an implementation for SkGifCodec.

Add getFrameData to SkCodec. This method reads ahead in the stream
to return a vector containing meta data about each frame in the image.
This is not required in order to decode frames beyond the first, but
it allows a client to learn extra information:
- how long the frame should be displayed
- whether a frame should be blended with a prior frame, allowing the
  client to provide the prior frame to speed up decoding

Add a new fields to SkCodec::Options:
- fFrameIndex
- fHasPriorFrame

The API is designed so that SkCodec never caches frames. If a
client wants a frame beyond the first, they specify the frame in
Options.fFrameIndex. If the client does not have the
frame's required frame (the frame that this frame must be blended on
top of) cached, they pass false for
Options.fHasPriorFrame. Unless the frame is
independent, the codec will then recursively decode all frames
necessary to decode fFrameIndex. If the client has the required frame
cached, they can put it in the dst they pass to the codec, and the
codec will only draw fFrameIndex onto it.

Replace SkGifCodec's scanline decoding support with progressive
decoding, and update the tests accordingly.

Implement new APIs in SkGifCodec. Instead of using gif_lib, use
GIFImageReader, imported from Chromium (along with its copyright
headers) with the following changes:
- SkGifCodec is now the client
- Replace blink types
- Combine GIFColorMap::buildTable and ::getTable into a method that
  creates and returns an SkColorTable
- Input comes from an SkStream, instead of a SegmentReader. Add
  SkStreamBuffer, which buffers the (potentially partial) stream in
  order to decode progressively.
  (FIXME: This requires copying data that previously was read directly
  from the SegmentReader. Does this hurt performance? If so, can we
  fix it?)
- Remove UMA code
- Instead of reporting screen width and height to the client, allow the
  client to query for it
- Fail earlier if the first frame AND screen have size of zero
- Compute required previous frame when adding a new one
- Move GIFParseQuery from GIFImageDecoder to GIFImageReader
- Allow parsing up to a specific frame (to skip parsing the rest of the
  stream if a client only wants the first frame)
- Compute whether the first frame has alpha and supports index 8, to
  create the SkImageInfo. This happens before reporting that the size
  has been decoded.

Add GIFImageDecoder::haveDecodedRow to SkGifCodec, imported from
Chromium (along with its copyright header), with the following changes:
- Add support for sampling
- Use the swizzler
- Keep track of the rows decoded
- Do *not* keep track of whether we've seen alpha

Remove SkCodec::kOutOfOrder_SkScanlineOrder, which was only used by GIF
scanline decoding.

Call onRewind even if there is no stream (SkGifCodec needs to clear its
decoded state so it will decode from the beginning).

Add a method to SkSwizzler to access the offset into the dst, taking
subsetting into account.

Add a GM that animates a GIF.
Add tests for the new APIs.

*** Behavior changes:
* Previously, we reported that an image with a subset frame and no transparent
index was opaque and used the background index (if present) to fill the
background. This is necessary in order to support index 8, but it does not
match viewers/browsers I have seen. Examples:
- Chromium and Gimp render the background transparent
- Firefox, Safari, Linux Image Viewer, Safari Preview clip to the frame (for
  a single frame image)
This CL matches Chromium's behavior and renders the background transparent.
This allows us to have consistent behavior across products and simplifies
the code (relative to what we would have to do to continue the old behavior
on Android). It also means that we will no longer support index 8 for some
GIFs.
* Stop checking for GIFSTAMP - all GIFs should be either 89a or 87a.
This matches Chromium. I suspect that bugs would have been reported if valid
GIFs started with "GIFVER" instead of "GIF89a" or "GIF87a" (but did not decode
in Chromium).

*** Future work not included in this CL:
* Move some checks out of haveDecodedRow, since they are the same for the
  entire frame e.g.
- intersecting the frameRect with the full image size
- whether there is a color table
* Change when we write transparent pixels
- In some cases, Chromium deemed this unnecessary, but I suspect it is slower
  than the fallback case. There will continue to be cases where we should
  *not* write them, but for e.g. the first pass where we have already
  cleared to transparent (which we may also be able to skip) writing the
  transparent pixels will not make anything incorrect.
* Report color type and alpha type per frame
- Depending on alpha values, disposal methods, frame rects, etc, subsequent
  frames may have different properties than the first.
* Skip copies of the encoded data
- We copy the encoded data in case the stream is one that cannot be rewound,
  so we can parse and then decode (possibly not immediately). For some input
  streams, this is unnecessary.
  - I was concerned this cause a performance regression, but on average the
    new code is faster than the old for the images I tested [1].
  - It may cause a performance regression for Chromium, though, where we can
    always move back in the stream, so this should be addressed.

Design doc:
https://docs.google.com/a/google.com/document/d/12Qhf9T92MWfdWujQwCIjhCO3sw6pTJB5pJBwDM1T7Kc/

[1] https://docs.google.com/a/google.com/spreadsheets/d/19V-t9BfbFw5eiwBTKA1qOBkZbchjlTC5EIz6HFy-6RI/

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

Review-Url: https://codereview.chromium.org/2045293002
2016-10-24 09:03:26 -07:00
Jim Van Verth
4e56a91393 Add Android viewer to GN
BUG=skia:

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

Change-Id: If971e275ed377cd733d01f62622d408479632465
Reviewed-on: https://skia-review.googlesource.com/3761
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-10-21 15:19:32 +00:00
Mike Klein
43c2526665 Viewer on Mac.
- Support ObjC / ObjC++
  - Build SDL on Mac.
  - Build viewer on Mac.

Patched from Jim's CL.

BUG=skia:

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

Change-Id: I12663f2ed2969e22f51aefed560fbc22b2524167
Reviewed-on: https://skia-review.googlesource.com/3760
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-20 14:57:49 +00:00
Mike Klein
a2c2fdd49b GN: ANGLE build completes now on Windows
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-ANGLE-Trybot

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

Change-Id: I5f2c7efeed77775b25d623de98894858a5458d50
Reviewed-on: https://skia-review.googlesource.com/3537
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-17 16:45:39 +00:00
Mike Klein
1a8d675148 GN: get Angle compiling on Windows.
Angle does not yet link, but it does compile.

I chickened out and wrote cp.py to be the copy tool on Windows.  I've got all platforms using it for consistency.


CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-ANGLE-Trybot


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

Change-Id: I15f4b63a47121528b2fd2672c26c62765966147c
Reviewed-on: https://skia-review.googlesource.com/3533
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-17 16:16:16 +00:00
Mike Klein
c7165c239a GN/Win: warnings and warn-as-error
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86-Debug-Exceptions-Trybot,Build-Win-MSVC-x86_64-Debug-GN-Trybot,Build-Win-MSVC-x86_64-Release-GN-Trybot

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

Change-Id: Ia2b85904bed1e6ca72c68abaecf6c2854795342c
Reviewed-on: https://skia-review.googlesource.com/3258
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-13 04:17:38 +00:00
Mike Klein
2148052ebc GN/Win: everything links on my machine.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3267

Change-Id: I9879e3e33104a4eea6e5a87573a1b081dcc5ed54
Reviewed-on: https://skia-review.googlesource.com/3267
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-12 16:39:42 +00:00
Mike Klein
4b167fc850 GN/Win: everything but skiaserve links.
BUG=skia:

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

Change-Id: I85c306f89f3a7faa7f50dadf465122844d015604
Reviewed-on: https://skia-review.googlesource.com/3240
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 22:37:40 +00:00
Mike Klein
3eb71216d2 More steps toward GN/Windows.
I think I'm now at the point of needing to just resolve missing symbols.

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

Change-Id: Ib908bd72c23f2d4bafd17182eedcb2fc85c422e5
Reviewed-on: https://skia-review.googlesource.com/3201
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 21:31:19 +00:00
Mike Klein
0f61faa7b7 GN: windows compiles locally.
Not yet linking.  Ignoring bots for now.

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

Change-Id: Idd75033313df60844c2ba602f7845b3c52987bc2
Reviewed-on: https://skia-review.googlesource.com/3200
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 20:48:25 +00:00
benjaminwagner
2b7394b9fb Fix obvious bug in KTX encoder.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2383523002

Review-Url: https://codereview.chromium.org/2383523002
2016-09-29 08:20:41 -07:00
mtklein
d68f9b0038 GN: ANGLE
Angle's existing GN files only work in Chrome, so I've written a new one.

This won't work on Windows, but our GN build doesn't work on Windows anyway.  So this CL is an attempt to get a ahead of that curve on ANGLE.  It looks large but fairly straightforward.

Now working on Linux:
  $ gn gen angle --args=skia_use_angle=true
  $ ninja -C angle
  $ angle/dm --config angle-gl --src gm -w dm-out

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

Review-Url: https://codereview.chromium.org/2361983002
2016-09-23 13:18:41 -07:00
mtklein
ecbc526418 GN: build skiaserve
I trimmed the libmicrohttpd sources and defines down to the minimum needed to build and run.  This builds and runs on Linux and Android for me.

Request.h was missing an include for SkTypes.h, which supplies the default for SK_GPU_SUPPORTED if not otherwise defined.

To build on Android, exit() -> _exit().

build.py was unused.

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

NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2367513002
2016-09-22 11:51:24 -07:00
herb
b6318bf44d Compile the skia library for windows using gn.
TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347443002

Review-Url: https://codereview.chromium.org/2347443002
2016-09-16 13:29:57 -07:00
mtklein
2b3c2a3ff9 GN: add sanitize arg
Attempt to take over all *SAN builds.

MSAN has a lot of coordination required between gn/BUILD.gn and gn_flavor.py.
I'd like to follow up to move more of this into gn/BUILD.gn, to make it easier
to use locally.

The compile steps should be much faster now.  We no longer build CMake
and Clang for every run, instead using the clang_linux CIPD package.  This
removes the need for all the third_party/externals/llvm/... dependencies.

Similarly, since we're using the clang_linux package, we no longer depend
on Chrome's Clang, and thus no longer need to sync chromium on these bots.

Instead of packaging up MSAN libraries and llvm-symbolizer in the compile
output, I have the test / perf bots also depend on the clang_linux package.
These do not vary from build to build.

No more need for the xsan.blacklist -include hack: Clang, GN, and Ninja
all track changes to xsan.blacklist without our help.

This has the incidental effect of upgrading the compiler used by *SAN
bots from Clang 3.8 to Clang 3.9.

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

Review-Url: https://codereview.chromium.org/2289343002
2016-09-08 08:39:34 -07:00
hcm
005327b9dd BUG=skia:5602
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2302913002

Review-Url: https://codereview.chromium.org/2302913002
2016-09-02 11:19:34 -07:00
bungeman
41a8f323f7 Update FreeType dependency from 2.6.1 to 2.6.5.
- 6a19a7d332c5446542196e5aeda0ede109ef097b
+ 4d3f7ca8cedbddad40b9e93a82926618e3fb4265

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

Review-Url: https://codereview.chromium.org/2302493002
2016-08-31 12:48:18 -07:00
mtklein
349cecefe2 GN: mac host and armv7 target
Just when I thought it wouldn't be useful to override ar...

Tested by building 32- and 64-bit DM on my MBP and running it on my N5x.

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

Review-Url: https://codereview.chromium.org/2279703003
2016-08-26 08:13:04 -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
mtklein
0a8efd7355 GN: _turbo -> -turbo to match Fuchsia
We might as well match the folks who are using our GN files now.

We've got plenty of strategies in our pocket for when we try to move Chrome
onto our GN files (and who knows, there may be even a new better way by then):
  * Same sort of rename in Chrome's third_party
  * Aliased targets via //build/secondary in Chrome.
  * Indirection via build_overrides

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

Review-Url: https://codereview.chromium.org/2265503002
2016-08-22 06:32:39 -07:00
mtklein
3896effcad GN: make libjpeg_turbo target Chrome-compatible
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2257903002

Review-Url: https://codereview.chromium.org/2257903002
2016-08-18 12:04:13 -07:00
jvanverth
1ba1d372c2 Get Mac viewer working with SDL
Also fixes SkiaSDLExample.

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

Review-Url: https://codereview.chromium.org/2210603003
2016-08-04 12:30:31 -07:00
mtklein
7a1f45f9e5 spin off easy stuff from Herb's windows GN CL
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2209533004

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

Review-Url: https://codereview.chromium.org/2209533004
2016-08-04 06:19:33 -07:00
halcanary
19a9720978 GN: build sfntly, icu, harfbuzz
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2200833010

Review-Url: https://codereview.chromium.org/2200833010
2016-08-03 15:08:04 -07:00
bungeman
ffae30db4a Convert SkAutoTUnref<SkData> to sk_sp<SkData>.
With the move from SkData::NewXXX to SkData::MakeXXX most
SkAutoTUnref<SkData> were changed to sk_sp<SkData>. However,
there are still a few SkAutoTUnref<SkData> around, so clean
them up.

Review-Url: https://codereview.chromium.org/2212493002
2016-08-03 13:32:32 -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
mtklein
2b6870ccb2 GN: nanobench
Add nanobench, and while we're at it monobench to show off how cool
source_sets are... the bench files are only built once then linked
into both binaries.  With GYP we build them twice. :/  Same deal
for GMs between nanobench and DM... build once, link twice.

nanobench uses SkImageEncoder to encode its .pngs, which requires
we link in the image encoders, which requires we get them all in.
That's the bulk of this.

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

Review-Url: https://codereview.chromium.org/2193513002
2016-07-28 14:17:33 -07:00
mtklein
0634317cbe GN: fix mac build again
Hoping to land these using the other GN bots as trybots.

Don't know what magic was letting us get to webp's headers yesterday on Linux.  Might have been using /usr/include's ?

The other change is the difference between some setups using #define SK_BUILD_FOR_MAC and others #define SK_BUILD_FOR_MAC 1.  We want either to mean "we're Mac".

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

Review-Url: https://codereview.chromium.org/2190713004
2016-07-28 09:58:44 -07:00
mtklein
25c81d4e65 GN: dm
This builds, links, and runs on Linux.  Have not tried Mac.

I've tested is_debug={true,false} and is_component_build.
It's neat that the component build DM works, but it's also an indication I've missed an essential flag or two... it shouldn't work. :)

The GPU backend isn't working yet, but all the software configurations I've tried look good.

This fleshes out all the other parts of SkCodec too... I noticed we weren't able to decode gifs or webp.

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

Review-Url: https://codereview.chromium.org/2188643002
2016-07-27 13:55:27 -07:00
mtklein
7d10b9f6e6 GN: fixes for Mac
- Make fiddle build on Mac (skipping GL).
 - Now that we're building in SkCodec, we depend on libpng and libjpeg-turbo unconditionally, not just on Linux.
 - Re-arrange third_party a bit so that our targets are Fuchsia/Chrome compatible.

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

NOTREECHECKS=true
This doesn't affect Chrome/Blink, so landing through the closed tree.

Review-Url: https://codereview.chromium.org/2184133002
2016-07-27 11:17:18 -07:00
halcanary
aa7f67c76b DEPS: harfbuzz 1.2.7 → 1.3.0
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2179963005

Review-Url: https://codereview.chromium.org/2179963005
2016-07-27 10:08:39 -07:00
msarett
ae76f49a76 Make yasm-android executable
TBR=mtklein@google.com
NOTRY=true
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188583002

Review-Url: https://codereview.chromium.org/2188583002
2016-07-26 13:46:16 -07:00
msarett
75a5ff63f7 Rename yasm binary and make it executable
TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2187663002

Review-Url: https://codereview.chromium.org/2187663002
2016-07-26 13:33:46 -07:00
msarett
dc2257bfab Fix yasm for Android build
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2180333002

Review-Url: https://codereview.chromium.org/2180333002
2016-07-26 11:24:28 -07:00
mtklein
7fbfbbe8f4 Basic standalone GN configs.
This sketches out what a world without Chrome's GN configs would look like.

Instead of DEPSing in build/, we now host our own gypi_to_gn.py.

The symlink from skia/ to . lets us run gclient hooks when the .gclient file is in the directory above skia/ or inside skia/.  That means we don't need gn.py anymore.

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

Review-Url: https://codereview.chromium.org/2167163002
2016-07-21 12:25:45 -07:00
mtklein
f037d48e29 GN: refactor third_party/gni
This fixes the build on Linux (dep on third_party:zlib -> third_party/zlib).

  I've moved declare_args() {} back to each .gn file... seems like args want
  to be as local as possible in GN land.

  Additionally, refactor all the common third_party config and warning flag
  changes into a template, third_party.  This lets it all live together in a
  .gni: at head unwanted_configs can be in a .gni (it's just a variable) but
  config("no_warnings") (and thus third_party_configs) cannot, as configs
  cannot be part of .gni files.

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

Review-Url: https://codereview.chromium.org/2163653002
2016-07-19 08:25:00 -07:00
abarth
6fc8ff024b Add support for Fuchsia
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2152273002

[mtklein edit from here down]
No public API changes.
TBR=reed@google.com

Review-Url: https://codereview.chromium.org/2152273002
2016-07-15 15:15:15 -07:00
mtklein
c04ff4788c GN
What we've got here is a little GN MVP.  It's lacking any knobs and doesn't yet build anything but libskia, zlib, libpng, and libjpeg-turbo.  I've been hopping back and forth between Linux at work and Mac at home.  These seem to be at least partially working, enough to build and run cmake/example.cpp.

The xcode backend seems to work.  From here, we can start exploring how to handle other backends (cmake,Android make, Google3).  There are a couple things I want to try:
  - add another backend like vs or xcode to GN directly
  - intercept via a custom toolchain
  - reverse from ninja -t commands
That last option seems kind of fun.

This tries to piggyback on Chrome's GN setup as much as possible.  Chrome's got quite a lot figured out, and we're basically required to do this if we want to have a single GN build system shareable by Chrome, our bots, and other clients.

This pulls in some new DEPS:
   - build: Chrome's GN configuration, and much more
   - buildtools: hashes for gn binary, pulled via hooks
   - tools/clang: hashes for Chrome's clang, pulled via hooks into third_party/llvm-build
It additionally symlinks tools/gyp to third_party/externals/gyp.  GN pulls some stuff from tools/gyp on Mac.

Have not yet tried building for Windows, Android, or iOS.

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

Committed: https://skia.googlesource.com/skia/+/1d8de594f126b9a80bd8f8fa2005e90faf3b5b17
Review-Url: https://codereview.chromium.org/2087593002
2016-06-23 10:29:30 -07:00
mtklein
3917cf4ef7 Revert of GN (patchset #12 id:220001 of https://codereview.chromium.org/2087593002/ )
Reason for revert:
gclient not happy on some bots

Original issue's description:
> GN
>
> What we've got here is a little GN MVP.  It's lacking any knobs and doesn't yet build anything but libskia, zlib, libpng, and libjpeg-turbo.  I've been hopping back and forth between Linux at work and Mac at home.  These seem to be at least partially working, enough to build and run cmake/example.cpp.
>
> The xcode backend seems to work.  From here, we can start exploring how to handle other backends (cmake,Android make, Google3).  There are a couple things I want to try:
>   - add another backend like vs or xcode to GN directly
>   - intercept via a custom toolchain
>   - reverse from ninja -t commands
> That last option seems kind of fun.
>
> This tries to piggyback on Chrome's GN setup as much as possible.  Chrome's got quite a lot figured out, and we're basically required to do this if we want to have a single GN build system shareable by Chrome, our bots, and other clients.
>
> This pulls in some new DEPS:
>    - build: Chrome's GN configuration, and much more
>    - buildtools: hashes for gn binary, pulled via hooks
>    - tools/clang: hashes for Chrome's clang, pulled via hooks into third_party/llvm-build
> It additionally symlinks tools/gyp to third_party/externals/gyp.  GN pulls some stuff from tools/gyp on Mac.
>
> Have not yet tried building for Windows, Android, or iOS.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2087593002
>
> Committed: https://skia.googlesource.com/skia/+/1d8de594f126b9a80bd8f8fa2005e90faf3b5b17

TBR=bsalomon@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/2088253002
2016-06-22 10:07:07 -07:00
mtklein
1d8de594f1 GN
What we've got here is a little GN MVP.  It's lacking any knobs and doesn't yet build anything but libskia, zlib, libpng, and libjpeg-turbo.  I've been hopping back and forth between Linux at work and Mac at home.  These seem to be at least partially working, enough to build and run cmake/example.cpp.

The xcode backend seems to work.  From here, we can start exploring how to handle other backends (cmake,Android make, Google3).  There are a couple things I want to try:
  - add another backend like vs or xcode to GN directly
  - intercept via a custom toolchain
  - reverse from ninja -t commands
That last option seems kind of fun.

This tries to piggyback on Chrome's GN setup as much as possible.  Chrome's got quite a lot figured out, and we're basically required to do this if we want to have a single GN build system shareable by Chrome, our bots, and other clients.

This pulls in some new DEPS:
   - build: Chrome's GN configuration, and much more
   - buildtools: hashes for gn binary, pulled via hooks
   - tools/clang: hashes for Chrome's clang, pulled via hooks into third_party/llvm-build
It additionally symlinks tools/gyp to third_party/externals/gyp.  GN pulls some stuff from tools/gyp on Mac.

Have not yet tried building for Windows, Android, or iOS.

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

Review-Url: https://codereview.chromium.org/2087593002
2016-06-22 09:52:13 -07:00
scroggo
09f5cd44ae Prefix png functions
This way multiple copies of libpng can coexist.

Update libpng's README.google
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2046603002

Review-Url: https://codereview.chromium.org/2046603002
2016-06-06 08:57:50 -07:00
scroggo
11450d5ec1 Update pnglibconf.h
It should have been updated when we updated the version.

Update README.google to better reflect the difference from the
original file.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2042833002

Review-Url: https://codereview.chromium.org/2042833002
2016-06-06 08:27:53 -07:00
scroggo
1915b0bab2 Fix undefined behavior in libpng
Check for a null source before calling memcpy.

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

Review-Url: https://codereview.chromium.org/2040433002
2016-06-03 09:36:53 -07:00