Commit Graph

230 Commits

Author SHA1 Message Date
Brian Osman
50ea3c06b8 Add support for MSVC run-time checks (and control flow guard)
This enables four different options in the compiler, described
below. I also added enough masks to satisfy RTCc when running
all GMs in both 8888 and gl configs.

---

/RTCc - Detects when a value is assigned to a smaller data
type and results in data loss. This happens even when casting.
Masking is required to suppress this.

/RTCs - Various stack-related checks, including uninitialized
data (by initializing locals to a non-zero value), array bounds
checking, and stack pointer corruption that can occur with a
calling convention mismatch.

/RTCu - Reports when a variable is used without having been
initialized. Mostly redundant with compile-time checks.

/guard:cf - This is more of a security option, that computes
all possible targets for indirect calls at compile time, and
verifies that those are the only targets reached at compile
time. Also generates similar logic around switch statements
that turn into jump tables.

Bug: skia:
Change-Id: I7b527af8fd67dec0b6556f38bcd0efc3fd505856
Reviewed-on: https://skia-review.googlesource.com/c/188625
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-02-04 20:55:24 +00:00
Mike Klein
cae020ae5f use ghash linking on Windows
Should be the same symbol level, but linked faster.

see
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/c7Ecb7NF5Ik

and
https://bugs.chromium.org/p/chromium/issues/detail?id=904324

and
http://blog.llvm.org/2018/01/improving-link-time-on-windows-with.html

Change-Id: I67d1b14488f5238a1e658d3e05d94809e69957a1
Reviewed-on: https://skia-review.googlesource.com/c/180100
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-12-27 13:31:03 +00:00
Brian Osman
7142ae58cc Generate debug information during link with Windows-Clang
Bug: skia:
Change-Id: I09c2312c3678bdb1c48b427f446cb5865acb92a2
Reviewed-on: https://skia-review.googlesource.com/c/177074
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2018-12-12 22:05:10 +00:00
Mike Klein
a6e0c2b19c use lld-link any time we have it
Might open up some neat options like LTO builds.
If nothing it's nice to use each whole toolchain consistently.

Move around some bonus quotes a bit.

LLD doesn't understand /DEBUG:FASTLINK.

Change-Id: I27e3c97acea6980c5bd006394aebb1e103007edd
Reviewed-on: https://skia-review.googlesource.com/c/175981
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-12-10 14:59:44 +00:00
Mike Klein
a4c277b07f make float divide-by-zero fatal
Change-Id: I9ba1caa4862bdf9ffc9c0e637bd69cce91fd8468
Reviewed-on: https://skia-review.googlesource.com/c/168740
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-11-06 21:56:27 +00:00
Mike Klein
3674336c33 Reland "make enum santizer fatal"
This is a reland of 166dbd3135

Since last attempt,
   - update SkPath::Direction docs
   - kIllegal is not an advanced blend mode

Original change's description:
> make enum santizer fatal
>
> This enum sanitizer checks that all the values of the enum we use fall
> within the range of the enumerated values.
>
> The main thing this helps point out is that the size of enum types in
> C++ need only be large enough to hold the largest declared value; larger
> values are undefined.  In practice, most enums are implemented as ints
> for compatibility with C, so while this hasn't pointed out anything
> egregiously broken, the sanitizer has found a couple possibly dangerous
> situations in our codebase.
>
> For most types using values outside the enum range, we can just
> explicitly size them to int.  This makes their de facto size de jure.
>
> But we need to actually make GrBlendEquation and GrBlendCoeff not store
> values outside their enumerated range.  They're packed into bitfields
> that really can't represent those (negative) values.  So for these I've
> added new kIllegal values to the enums, forcing us to deal with our
> once-silent illegal values a bit more explicitly.
>
> Change-Id: Ib617694cf1aaa83ae99289e9e760f49cb6393a2f
> Reviewed-on: https://skia-review.googlesource.com/c/168484
> Reviewed-by: Brian Osman <brianosman@google.com>

Cq-Include-Trybots: skia.primary:Housekeeper-PerCommit-Bookmaker,Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Debug-All-Android
Change-Id: Id93b80bbeae11872542c9b76715e3c3cb10609fd
Reviewed-on: https://skia-review.googlesource.com/c/168582
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-11-06 17:31:00 +00:00
Mike Klein
f2b35e4fb8 Revert "make enum santizer fatal"
This reverts commit 166dbd3135.

Reason for revert: illegal is not advanced, docs

Original change's description:
> make enum santizer fatal
> 
> This enum sanitizer checks that all the values of the enum we use fall
> within the range of the enumerated values.
> 
> The main thing this helps point out is that the size of enum types in
> C++ need only be large enough to hold the largest declared value; larger
> values are undefined.  In practice, most enums are implemented as ints
> for compatibility with C, so while this hasn't pointed out anything
> egregiously broken, the sanitizer has found a couple possibly dangerous
> situations in our codebase.
> 
> For most types using values outside the enum range, we can just
> explicitly size them to int.  This makes their de facto size de jure.
> 
> But we need to actually make GrBlendEquation and GrBlendCoeff not store
> values outside their enumerated range.  They're packed into bitfields
> that really can't represent those (negative) values.  So for these I've
> added new kIllegal values to the enums, forcing us to deal with our
> once-silent illegal values a bit more explicitly.
> 
> Change-Id: Ib617694cf1aaa83ae99289e9e760f49cb6393a2f
> Reviewed-on: https://skia-review.googlesource.com/c/168484
> Reviewed-by: Brian Osman <brianosman@google.com>

TBR=mtklein@chromium.org,mtklein@google.com,brianosman@google.com

Change-Id: I691c08092340a6273e442c0f098b844f7d0363ba
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/168581
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-11-06 16:30:19 +00:00
Mike Klein
166dbd3135 make enum santizer fatal
This enum sanitizer checks that all the values of the enum we use fall
within the range of the enumerated values.

The main thing this helps point out is that the size of enum types in
C++ need only be large enough to hold the largest declared value; larger
values are undefined.  In practice, most enums are implemented as ints
for compatibility with C, so while this hasn't pointed out anything
egregiously broken, the sanitizer has found a couple possibly dangerous
situations in our codebase.

For most types using values outside the enum range, we can just
explicitly size them to int.  This makes their de facto size de jure.

But we need to actually make GrBlendEquation and GrBlendCoeff not store
values outside their enumerated range.  They're packed into bitfields
that really can't represent those (negative) values.  So for these I've
added new kIllegal values to the enums, forcing us to deal with our
once-silent illegal values a bit more explicitly.

Change-Id: Ib617694cf1aaa83ae99289e9e760f49cb6393a2f
Reviewed-on: https://skia-review.googlesource.com/c/168484
Reviewed-by: Brian Osman <brianosman@google.com>
2018-11-06 15:39:50 +00:00
Mike Klein
7ea977bc5e Reland "always optimize third_party code"
This is a reland of c766370d86

Original change's description:
> always optimize third_party code
> 
> Change-Id: I5b2244460a4760e9336640f597d0f74c374a0d04
> Reviewed-on: https://skia-review.googlesource.com/155641
> Commit-Queue: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Auto-Submit: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Change-Id: I63e7f9ca852fc99728d7a01d9987b3506115d266
Reviewed-on: https://skia-review.googlesource.com/155760
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-09-20 23:21:01 +00:00
Mike Reed
5d032ecb8f Revert "always optimize third_party code"
This reverts commit c766370d86.

Reason for revert: speculative -- trying to fix Debian breaks (pdf?)

Original change's description:
> always optimize third_party code
> 
> Change-Id: I5b2244460a4760e9336640f597d0f74c374a0d04
> Reviewed-on: https://skia-review.googlesource.com/155641
> Commit-Queue: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Auto-Submit: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

TBR=mtklein@google.com,brianosman@google.com

Change-Id: I5467c95f9487c31e6f538f13579e490cdaeeee2e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/155607
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-09-19 19:55:58 +00:00
Mike Klein
c766370d86 always optimize third_party code
Change-Id: I5b2244460a4760e9336640f597d0f74c374a0d04
Reviewed-on: https://skia-review.googlesource.com/155641
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-09-19 18:09:55 +00:00
Brian Osman
0ab568463b For Windows-Clang-Debug, use -fstandalone-debug to get better debug info
Without this, debug clang builds on windows have very little debug info.
Fix is based on Chromium's handling of this (they have several tactics,
depending on linker, etc...)

https://cs.chromium.org/chromium/src/build/config/compiler/BUILD.gn?l=2194

Change-Id: Ib1b3aa4cdf4e2daa762d994bea94dc3c691cf359
Reviewed-on: https://skia-review.googlesource.com/154540
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-09-13 20:07:58 +00:00
Mike Klein
d84c1e65a6 drop warnings and -Werror from is_official_builds
People using is_official_build don't really want to see warnings.
They're for devs, not users.

The somewhat odd update to gn/BUILDCONFIG.gn keeps command
line flag precedence (later == more important) unchanged.

Change-Id: I1a04a35f066b7408021d474535f0dbf4928e21d3
Reviewed-on: https://skia-review.googlesource.com/151380
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-09-04 15:46:42 +00:00
Mike Klein
02046a7e2d switch ubsan to blacklist
We're close enough that it's easier to use "undefined"
to turn on all supported UBSAN sanitizers and then
keep a couple in fyi_sanitizers as a blacklist.

I'm going to try to fix "enum" next too, so hopefully
that won't be in there too long.

I did a little flag cleanup too.  -fno-omit-frame-pointer
was harmlessly in there twice for Android builds.

Change-Id: I8216fb0685423b2ff56db2e2be5bbeb4b48f932f
Reviewed-on: https://skia-review.googlesource.com/146760
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2018-08-10 18:19:56 +00:00
Mike Klein
8da9fbf89c add bounds sanitizer to ASAN/UBSAN bots
Change-Id: Ibe93cd564a4dcc5b9a4f88ff93770935d560e24f
Reviewed-on: https://skia-review.googlesource.com/146705
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-08-10 17:11:45 +00:00
Mike Klein
94c4f41ab8 in MS land, -include is /FI
Change-Id: Ibfead1121f22277297e16196b37e6e86dc2d2166
Reviewed-on: https://skia-review.googlesource.com/146649
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-08-09 22:03:27 +00:00
Mike Klein
475c5e93fe turn on alignment sanitizer
This sanitizer checks for overaligned reads and writes,
or put another way, use of underaligned pointers.

This usually happens when you cast, e.g. char* to int*
without checking that the char* is 4-byte aligned.  Each
of the changes under src/ fixes something just like that.

The unusual setup for tools/xsan.blacklist is there to
force a rebuild whenever tools/xsan.blacklist changes.
I spent a good few minutes debugging rebuilds not happening
this morning, perhaps from some strange ccache interaction.

Align SkTextBlobs as void* (today they're just 4-byte) so the
SkTextBlob::RunRecords we put after them in SkTextBlobBuilder
buffers are properly aligned (for the SkTypeface* inside).

There's no obvious error in void SkRRect::computeType(),
but one bot seems to have seen some sort of issue with

    SK_AT_SCOPE_EXIT(SkASSERT(this->isValid()));

I can't reproduce it locally, so I'm just going to unroll it.

Change-Id: I904d94f65f695e1b626b684c32216a4930b72b0c
Reviewed-on: https://skia-review.googlesource.com/146104
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2018-08-09 21:13:15 +00:00
Cary Clark
eb1d9004f5 build for gdb on linux
build debug on linux for gdb

Building with this define enables additional
checks for standard library functions when
running gdb, and allows printing std::string.

R=halcanary@google.com

Bug: skia:
Change-Id: I7f2dc12336f9239443328f13264be7a6b285c4b5
Reviewed-on: https://skia-review.googlesource.com/140786
Commit-Queue: Cary Clark <caryclark@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-on: https://skia-review.googlesource.com/141083
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-07-17 18:09:41 +00:00
Robert Phillips
28987a418a Revert "build debug on linux for gdb"
This reverts commit 3c3db72e69.

Reason for revert: I suspect this is breaking the Build-Debian9-Clang-arm-Debug-Chromebook_GLES bot

Original change's description:
> build debug on linux for gdb
> 
> Building with this define enables additional
> checks for standard library functions when
> running gdb, and allows printing std::string.
> 
> R=​halcanary@google.com
> 
> Bug: skia:
> Change-Id: Ib71c179d8cbacbcd7f17a1c85f912072918e6be8
> Reviewed-on: https://skia-review.googlesource.com/140786
> Commit-Queue: Cary Clark <caryclark@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,halcanary@google.com,caryclark@google.com

Change-Id: I56ae1c6c02032e6445f5585de51c48423d283636
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/140840
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-07-12 00:55:20 +00:00
Cary Clark
3c3db72e69 build debug on linux for gdb
Building with this define enables additional
checks for standard library functions when
running gdb, and allows printing std::string.

R=halcanary@google.com

Bug: skia:
Change-Id: Ib71c179d8cbacbcd7f17a1c85f912072918e6be8
Reviewed-on: https://skia-review.googlesource.com/140786
Commit-Queue: Cary Clark <caryclark@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-07-12 00:16:48 +00:00
Brian Salomon
7258e97e8e C++14
Change-Id: I4bbf3e5e6d9d4e11e968a0bc88ce43444047a382
Reviewed-on: https://skia-review.googlesource.com/130903
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-06-04 13:22:49 +00:00
Hal Canary
a083404838 Revert "Added support for visual debugging on Android Studio"
This reverts commit 222c9cfd1b.

Reason for revert: Breaks documented workflow.

Original change's description:
> Added support for visual debugging on Android Studio
> 
> Change-Id: Icaf848c31167db10d6fbb13d74c7287b03628fb6
> Bug: skia:
> Reviewed-on: https://skia-review.googlesource.com/130144
> Reviewed-by: Derek Sollenberger <djsollen@google.com>

TBR=djsollen@google.com,mtklein@google.com,bsalomon@google.com,halcanary@google.com,bungeman@google.com,ziadb@google.com

Change-Id: I6e7ac2d16d9a0f267d75cd202fd4975be36da4f5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/131601
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-06-01 20:22:37 +00:00
Mike Klein
804d0f28ba turn on pointer-overflow on ASAN/UBSAN bots
I know SkRasterPipelineBlitter will add back offsets
to the mask pointer to make these fMaskPtr.pixels safe.

SkImageInfo wasn't making out-of-bounds pointers, but was moving
between two in-bounds pointers by subtracting large (negative)
size_t.  Switching to explicit negate and add quiets this down.

Bug: chromium:836282

Change-Id: Ia65e380ec41dbfedce0659106830fbacb1a5cf4a
Reviewed-on: https://skia-review.googlesource.com/131147
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-06-01 20:15:46 +00:00
ziadb
222c9cfd1b Added support for visual debugging on Android Studio
Change-Id: Icaf848c31167db10d6fbb13d74c7287b03628fb6
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/130144
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2018-06-01 14:56:24 +00:00
Brian Osman
9061ffc4f1 Suppress bad-function-cast warning
Bug: skia:
Change-Id: Ic5efe371b6365913a47d833c698958cc842d16ae
Reviewed-on: https://skia-review.googlesource.com/128685
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-05-16 20:22:12 +00:00
Mike Klein
8803ebb470 update to NDK r17
We haven't done this in a while.

The only interesting change I've noticed so far is that we no longer
need to link libandroid_support when targeting API 21+.

Change-Id: I6506fbe7bd02534f1ea136f2164acab7f44c29e0
Reviewed-on: https://skia-review.googlesource.com/128009
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-05-14 18:48:19 +00:00
Ben Wagner
9bd736b9b4 Add loongson3a Build jobs.
Change-Id: I4a0259f82272099e08df0e7dea91489f6d641ca4
Reviewed-on: https://skia-review.googlesource.com/113670
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-04-04 20:37:28 +00:00
Mike Klein
4d4b3aaa20 small ABI + narrow/wide code updates
The only tangible effect this CL should have is to use __vectorcall on
all Windows builds, including scalar ones.  The code generation is a
little better there with __vectorcall than not, so might as well.  This
is a baby step towards vector stages with MSVC, but a very baby step
indeed.

Mostly this refactors and regroups a bunch of logic to reflect my
current thoughts.  The BUILD.gn changes are essentially no-ops, but they
simplify things and make our flags more similar to how those targets are
built in Chromium.

(And I cleaned up other /arch: uses so this works.)

Change-Id: I73dd39d15cdc7b3d268231a707952bbbfd91496e
Reviewed-on: https://skia-review.googlesource.com/115644
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-21 19:40:00 +00:00
Kevin Lubick
d095040ae9 Add in float-divide-by-zero as an FYI sanitizer
Bug: skia:
Change-Id: Iacf9bcf10c69d3d6e2a1a2bdcce62bdd364582a1
Reviewed-on: https://skia-review.googlesource.com/115078
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-03-20 14:36:36 +00:00
Ben Wagner
f8a131dd47 Compile with GCC 7.2.0.
This suppresses the noexcept-type warning, since Skia doesn't have a
stable ABI in any event. GCC now warns on more printf style formats,
so we have to hide our bad test formats a little better. GCC now
also warns on implicit enum to bool conversions, which did catch two
issues.

Change-Id: Ib81769c421757186506873f0fe298ecd0106ae87
Reviewed-on: https://skia-review.googlesource.com/114263
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-03-13 22:18:18 +00:00
Ben Wagner
df574048f5 Add Win Clang x86 builds.
Enable /arch:SSE2 for Win x86 builds (both MSVC and Clang).

Change-Id: I0618e938b6542b60fae3947b7e0dcde22650ba54
Reviewed-on: https://skia-review.googlesource.com/56721
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-03-13 20:30:28 +00:00
Mike Klein
ee77da2c0b set -Wno-implicit-fallthrough on GCC too
Bug: skia:7643

Change-Id: Ieeca5414f51c7c113c54b47578ec840fc7d684e0
Reviewed-on: https://skia-review.googlesource.com/109520
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-02-22 21:05:45 +00:00
Kevin Lubick
aa59d61646 Remove XSAN blacklist
Bug: skia:
Change-Id: I97bf83ca001acc762a42d26207a394faee6d90fb
Reviewed-on: https://skia-review.googlesource.com/107782
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-20 13:51:28 +00:00
Kevin Lubick
5798c9fe57 Fix Android ASAN build
Android+ASAN was already using libc++, so don't confuse it with the host
library.

Bug: skia:
Change-Id: Ibdeb40007f9d346a84adb39de240299049c0c55e
Reviewed-on: https://skia-review.googlesource.com/107721
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-15 15:04:39 +00:00
Kevin Lubick
43bd25983b Use libc++ for all XSAN builds
Docs-Preview: https://skia.org/?cl=107306
Bug: oss-fuzz:6347
Change-Id: I59c3b1b2e693fd97be0091ba2df406f51461fd10
Reviewed-on: https://skia-review.googlesource.com/107306
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-15 14:04:38 +00:00
Kevin Lubick
3cda39f270 No omit-frame-pointer on Win
Bug: skia:
Change-Id: I0dda67283b32aaf06a34463847e760158bf47392
Reviewed-on: https://skia-review.googlesource.com/102422
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-01 17:36:00 +00:00
Kevin Lubick
82a4c055d1 Get better stacktraces for *SAN builds
Bug: skia:7566
Change-Id: I89f662b6493fee4d9f8a10ba6aa791634cb39bba
Reviewed-on: https://skia-review.googlesource.com/102621
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-01 16:48:49 +00:00
Kevin Lubick
4f0f933579 Add Android ASAN bot
It should work on 32 and 64 bit android running M or newer.

Bug: skia:
Change-Id: I7e6d4000f4fee8f2704b84b7174174dd0e68d21c
Reviewed-on: https://skia-review.googlesource.com/93700
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-01-12 19:57:33 +00:00
Mike Klein
042827980b fix x86 Android builds
After tinkering with libstdc++ -> libc++, looks like we need this
warning again.  We already turn it on in Android's own x86 builds;
see gn_to_bp.py for that.

Change-Id: I7b7a76d1c22dd3f3b7712e9ce89b78d9a229a302
Reviewed-on: https://skia-review.googlesource.com/92360
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-01-08 23:48:21 +00:00
Mike Klein
21b620c37b switch android builds to libc++
All other options are going away real soon now.

Change-Id: I57051fdabc2b0fd18fd133c9fb345ffa5a46e5db
Reviewed-on: https://skia-review.googlesource.com/92300
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-01-08 22:52:41 +00:00
Kevin Lubick
4284613cfe Enable conditional-uninitialized flag
Bug: skia:7462
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SKNX_NO_SIMD
Change-Id: I1c0a09984bf28a5c620a89af56040f018bae6310
Reviewed-on: https://skia-review.googlesource.com/90941
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-01-05 18:03:25 +00:00
Kevin Lubick
511c5d45dd Re-enable 3 clang warnings
Bug: skia:7462
Change-Id: Iba0af2f0ff8ef646f93a0e2ced083d99020a38c9
Reviewed-on: https://skia-review.googlesource.com/90842
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-01-04 21:25:56 +00:00
Ben Wagner
314d7c267f Add Win UBSAN jobs.
Bug: skia:2679
Change-Id: Ia462af01b9832da90206b9e9be2278cb48c6c502
Reviewed-on: https://skia-review.googlesource.com/86401
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
2018-01-03 17:36:19 +00:00
Brian Osman
a99d982e0d Add FASTLINK to windows builds
From my local testing, this brings incremental link times back where
they were before switching to Z7 (55s -> 15s). It also speeds up full
builds times by a similar margin (so no real impact on per-translation
unit build time).

https://blogs.msdn.microsoft.com/vcblog/2016/10/05/faster-c-build-cycle-in-vs-15-with-debugfastlink/

Bug: skia:
Change-Id: I83a3b8a3d6492eb9a6bd7fe8b6893b2dd6970b06
Reviewed-on: https://skia-review.googlesource.com/89800
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2017-12-31 14:55:39 +00:00
Mike Klein
67a86d50f3 Try /Z7 on Windows builds.
Right now /FS and /Zi together serialize debug information
into .pdb files through another process.

I tried just dropping /FS, so that each cl.exe instance
writes to the .pdb file directly, but the bots don't like that.

Instead, let's try switching /Zi to /Z7, to embed debug information
directly into the object file instead of alongside in a .pdb.

This is all about trying to improve build times.

https://docs.microsoft.com/en-us/cpp/build/reference/z7-zi-zi-debug-information-format
https://docs.microsoft.com/en-us/cpp/build/reference/fs-force-synchronous-pdb-writes

Change-Id: If636f8fa21c639eff81d9c335c5223908c0fdcea
Reviewed-on: https://skia-review.googlesource.com/85661
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-12-15 14:34:38 +00:00
Mike Klein
2b4bc3c316 Don't set /GS- on Windows builds.
I'm not sure why we're setting this... it disables buffer overrun
protection.  That seems like something we'd like on all test bots,
not just the Debug ones.

https://docs.microsoft.com/en-us/cpp/build/reference/gs-buffer-security-check

Change-Id: I0bc3ec146812b4ad3d1d39488caf6e78633830fc
Reviewed-on: https://skia-review.googlesource.com/85660
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2017-12-15 14:11:08 +00:00
Brian Osman
852ca318a1 Updated MSVC toolchain to 2017, and further refactored GN
'windk' is no longer a thing. There are two separate variables to point
at your compiler (win_vc), and SDK (win_sdk).

'msvc' is no longer a thing, either. By default, we look for 2017 and
then 2015 (in the default locations). If neither is located, use an
assert to let users know they should set win_vc. Then, detect if win_vc
points at a 2017 or 2015 installation, and configure it automatically.

Because the toolchain is now 2017, update the GN files to handle building
x86 in that configuration. In fact, we only support x86 builds (with 2017
or 2015) using the toolchain assets. Keep a 2015 toolchain around as a
new asset, so we can add bot coverage.

Docs-Preview: https://skia.org/?cl=81841
Bug: skia:
Change-Id: I8c68a6f949e54c0e798a219450bbb9406f8dc6ac
Reviewed-on: https://skia-review.googlesource.com/81841
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-12-08 01:46:30 +00:00
Mike Klein
15f46c3c1f quiet down Mac linker warnings
Change-Id: I9a2a061e7a021587441f3f39427306309e0341e8
Reviewed-on: https://skia-review.googlesource.com/82042
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-12-07 20:03:40 +00:00
Brian Osman
5f87262595 Reland "Always use the Win 10 SDK, and optionally detect/use the latest version"
This is a reland of 6da1d32c16
Original change's description:
> Always use the Win 10 SDK, and optionally detect/use the latest version
> 
> For bot toolchain builds, we were already using the Win 10 SDK. Local
> 2015 builds were using a strange hybrid of Win 10 and Win 8 SDKs. Now
> we always use the Win 10 SDK exclusively.
> 
> This adds two new GN arguments: win_sdk, which points at the top level
> Windows 10 SDK directory, and win_sdk_version, which can be used to
> pin to a specific version. (Otherwise we use a script to detect the
> most recent version).
> 
> Bug: skia:
> Change-Id: I5aabb5eb9e7f483e3676b67b50356ddd0421cf7d
> Reviewed-on: https://skia-review.googlesource.com/81304
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Commit-Queue: Brian Osman <brianosman@google.com>

Bug: skia:
Change-Id: Ide0d6bd3413c4fe7a8bada7d3d32bdba9709d11b
Reviewed-on: https://skia-review.googlesource.com/81501
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2017-12-06 22:32:59 +00:00
Ravi Mistry
f5ab269a9d Revert "Always use the Win 10 SDK, and optionally detect/use the latest version"
This reverts commit 6da1d32c16.

Reason for revert:
Caused Build-Win-Clang-arm64-Release-Android to fail.
Eg: https://chromium-swarm.appspot.com/task?id=3a467f1ddd15fb10&refresh=10

Original change's description:
> Always use the Win 10 SDK, and optionally detect/use the latest version
> 
> For bot toolchain builds, we were already using the Win 10 SDK. Local
> 2015 builds were using a strange hybrid of Win 10 and Win 8 SDKs. Now
> we always use the Win 10 SDK exclusively.
> 
> This adds two new GN arguments: win_sdk, which points at the top level
> Windows 10 SDK directory, and win_sdk_version, which can be used to
> pin to a specific version. (Otherwise we use a script to detect the
> most recent version).
> 
> Bug: skia:
> Change-Id: I5aabb5eb9e7f483e3676b67b50356ddd0421cf7d
> Reviewed-on: https://skia-review.googlesource.com/81304
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Commit-Queue: Brian Osman <brianosman@google.com>

TBR=mtklein@chromium.org,borenet@google.com,bungeman@google.com,brianosman@google.com

Change-Id: Id044114fc685d570741e3f5ed003c4be2ffa84a3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/81500
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2017-12-06 21:51:30 +00:00
Brian Osman
6da1d32c16 Always use the Win 10 SDK, and optionally detect/use the latest version
For bot toolchain builds, we were already using the Win 10 SDK. Local
2015 builds were using a strange hybrid of Win 10 and Win 8 SDKs. Now
we always use the Win 10 SDK exclusively.

This adds two new GN arguments: win_sdk, which points at the top level
Windows 10 SDK directory, and win_sdk_version, which can be used to
pin to a specific version. (Otherwise we use a script to detect the
most recent version).

Bug: skia:
Change-Id: I5aabb5eb9e7f483e3676b67b50356ddd0421cf7d
Reviewed-on: https://skia-review.googlesource.com/81304
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-12-06 21:02:09 +00:00
Brian Osman
d34c4a3727 Add win_toolchain_version to support MSVC 2017 Updates
To make this simpler in the future, add a python script that finds the
most recent 2017 toolchain, and use that. If/when we update the bot
toolchain, this will be even more helpful, because the Chromium toolchain
isn't perfectly in sync with the general update channel, so people are
likely to have a newer/older release locally.

Note that explicitly setting win_toolchain_version in your GN args
suppresses the python script, so you can choose to build with whatever
version you need.

Bug: skia:
Change-Id: Iaf6d0dd9be2623472118c3ad27b20023a205d67c
Reviewed-on: https://skia-review.googlesource.com/81162
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-12-06 19:15:55 +00:00
Mike Klein
f32b27d2e4 remove mips support and bots
The NDK has deprecated mips and mips64:
https://developer.android.com/ndk/guides/abis.html

Might as well clean this up now while I remember.

Change-Id: Ie4b2334c75208082067cc16fe355d0349c7e0904
Reviewed-on: https://skia-review.googlesource.com/80560
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2017-12-05 17:19:45 +00:00
Chris Dalton
d1ec4105f7 Fix ANGLE build with extended clang warnings
Add newline-eof to the list of ignroed warnings.
Fix shadowed fields.

Bug: skia:
Change-Id: I4985ce2495194a7f805af98c4f42c44691086e36
Reviewed-on: https://skia-review.googlesource.com/79681
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-12-04 20:54:40 +00:00
Chris Dalton
1ef80942b3 turn on extended Clang warnings on Windows too
Plus some small rearrangements of the various warning lists.

Change-Id: Ied58f940341d69ddab971a529fd01b1e96b65641
Reviewed-on: https://skia-review.googlesource.com/67720
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-12-04 19:29:51 +00:00
Ben Wagner
bee6cacc54 Merge UBSAN_float_cast_overflow into ASAN.
The new check was a different config while we fixed the errors. Most
errors are now fixed, and merging these will help with running both on
the CQ.

No-Try: true
Change-Id: I5804ecea84a8dbbaacf6a4ea96e2af9505641d49
Reviewed-on: https://skia-review.googlesource.com/79323
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-12-04 17:08:09 +00:00
Brian Osman
9dd4ae1a7a Support cc_wrapper with MSVC toolchain
Bug: skia:
Change-Id: I0433105c4a0e064e5cc228b7f6bec1ef3c66909c
Reviewed-on: https://skia-review.googlesource.com/62744
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-10-23 16:34:29 +00:00
Leon Scroggins III
53418dbb6a Remove "-Wno-over-aligned" from x86 Android builds
We now build without requiring disabling this warning. Came up in
https://android-review.googlesource.com/498211

Bug: b/66996870
Change-Id: Ife596240507b3c055d2fabd08330828f8a5dbb9c
Reviewed-on: https://skia-review.googlesource.com/60530
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-10-17 21:15:20 +00:00
Mike Klein
46d6c683c1 disable object-size santizer in debug builds
This avoids a warning-as-error:

 clang-5.0: error: the object size sanitizer has no effect at -O0, but
 is explicitly enabled:

Change-Id: I53a16acc3e743b42fe9c2f35919d3c09d5d601b7
Reviewed-on: https://skia-review.googlesource.com/55720
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-10-05 15:58:34 +00:00
Mike Klein
e4781e934a function santizer is not available on Mac
Change-Id: Id2ae524f765414e4c3d990066fcd3ebcea693657
Reviewed-on: https://skia-review.googlesource.com/52781
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-09-28 16:46:17 +00:00
Kevin Lubick
ebf648e57a [WASM] Add POC compile bot for WebAssembly
Fix core.gni to use not use Assembler for none cpu.

Right now, there are no outputs because we aren't compiling
dm or nanobench.  However, this still compiles the skia
library and creates two executables, so it's a good canary
for a real WASM build.

Additional note: the two executables in question don't draw
anything to the screen via GL, which is still not possible with
Skia+WASM.

Bug: skia:
Change-Id: I0d767467e94e40d01070e34223dd90e96f1c96f2
Reviewed-on: https://skia-review.googlesource.com/49540
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Eric Boren <borenet@google.com>
2017-09-21 18:24:43 +00:00
Mike Klein
bc7b1eab6c update clang_linux package to Clang 5
Disable some new warning flags to get us building.

Change-Id: I10299d667b06fb61d03e52329883c634bd42f45c
Reviewed-on: https://skia-review.googlesource.com/44341
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-09-10 13:20:49 +00:00
Mike Klein
1b4602bd9b ok, backtrace support on Android
This adds a fallback backtracer for use on Android where <execinfo.h>
ins't present, instead using <unwind.h> to unwind and <dlfcn.h> to
lookup function names and addresses.

lockf() wasn't available until NDK API 24, so I've just no-op'd file
locking on older targets.  I tried switching from lockf() to flock(),
but flock() didn't see to _do_ anything, neither on Android nor on my
Mac laptop.  I think I should be able to use the lower-level fcntl()
APIs to restore file locking uniformly in a follow-up.  The upshot is
until then, we'll have interlaced logs and stack traces on Android
devices unless you set ndk_api=24 in GN.

We need to add a couple build flags to make backtraces useful:

   * -funwind-tables makes the call to _Unwind_Backtrace() actually
     traverse the call stack.  This is a small extra binary size cost.
   * -rdynamic makes symbols linked into the main executable visible
     to dladdr().  We do this on Linux already for the same reason.

Here's an example where I made aaxfermodes call SK_ABORT():

    650 ok, 1 crashed
    caught signal SIGABRT while running 'aaxfermodes'
        0x76ed936288 [unknown]+308
        0x76eec014e0 [unknown]+510811706592
        0x76ed367b2c tgkill+8
        0x76ed364f50 pthread_kill+68
        0x76ed31ff5c raise+28
        0x76ed318814 abort+56
        0x76edebd070 sk_out_of_memory()+12
        0x76ed99f664 AAXfermodesGM::draw_pass(SkCanvas*, AAXfermodesGM::DrawingPass)+96
        0x76ed99f4e4 AAXfermodesGM::onDraw(SkCanvas*)+36
        0x76ed9e8550 skiagm::GM::drawContent(SkCanvas*)+224
        0x76ed9e82ac skiagm::GM::draw(SkCanvas*)+288
        0x76ed93b10c GMStream::GMSrc::draw(SkCanvas*)+96
        0x76ed937b08 SWDst::draw(Src*)+284
        0x76ed936ca0 [unknown]+112
        0x76ed939b4c ForkEngine::spawn(std::function<Status ()>)+88
        0x76ed934d00 main+2200
        0x76ed316598 __libc_init+92
        0x76ed93434c [unknown]+510791992140

Change-Id: Ica4849d99a3b97f48d778f4c15a7fa36275b8133
Reviewed-on: https://skia-review.googlesource.com/40802
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-08-30 17:50:07 +00:00
Mike Klein
228276dabf Revert "Turn on exceptions in test tools."
This reverts commit c667dff58d.

Reason for revert: temporary while I fix Android, Google3.

Original change's description:
> Turn on exceptions in test tools.
> 
> This allows us to test things that, e.g., throw std::bad_alloc.
> 
> Change-Id: I6409159b89f1d93d403b1a1f40539cf2531a8b68
> Reviewed-on: https://skia-review.googlesource.com/34982
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Mike Klein <mtklein@chromium.org>

TBR=mtklein@chromium.org,herb@google.com

Change-Id: Iafdc34c5f70f99f7df3cd0bbad65eed0828453a1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/35081
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2017-08-16 13:20:29 +00:00
Mike Klein
c667dff58d Turn on exceptions in test tools.
This allows us to test things that, e.g., throw std::bad_alloc.

Change-Id: I6409159b89f1d93d403b1a1f40539cf2531a8b68
Reviewed-on: https://skia-review.googlesource.com/34982
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-08-16 01:49:07 +00:00
Mike Klein
a91ec58b4e Tell clang/win to emulate MSVC 2015
By default it emulates your installed cl.exe, but the bots don't have
one.  I think the fallback is 2013, which causes all sorts of pre-C++11
problems.

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Win-Clang-x86_64-Release

Change-Id: I2556abe68825e58762b4172d067ba6826de5c133
Reviewed-on: https://skia-review.googlesource.com/29021
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-07-31 20:58:55 +00:00
Mike Klein
98adfa8726 use -imsvc (~= -isystem) with win/clang
This should shut up any warnings in the win toolchain headers?

Change-Id: I7d17bf6d63d56e66afffa557d0ed06bc3994200d
Reviewed-on: https://skia-review.googlesource.com/28981
Reviewed-by: Ben Wagner <bungeman@google.com>
2017-07-31 19:53:24 +00:00
Mike Klein
c722f79b6c clang on windows support
1) Run python bin/fetch-clang-win
2) Set clang_win = "../bin/clang_win"
3) ???
4) Profit

Most changes here are to pass the right -mfoo flags to Clang
to enable advanced instruction sets, or fixed warning-as-errors.

BUG=skia:2679

Change-Id: Ieed145d35c209131c7c16fdd3ee11a3de4a1a921
Reviewed-on: https://skia-review.googlesource.com/28740
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-07-31 18:39:23 +00:00
Greg Daniel
6b7e0e2c74 Add arc support to gpu Obj c++ code
This is mainly for getting ready to start adding lots of metal backend code.
I've also update the "gpu tools" target to require ARC with involved updating
one IOS file in there.

Bug: skia:
Change-Id: Ied22e8fe7532445cc274efb529e3450654a6614b
Reviewed-on: https://skia-review.googlesource.com/22484
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2017-07-12 20:49:32 +00:00
Ethan Nicholas
762466e9fe Re-re-land sksl fragment processor support
This reverts commit 5ce3972055.

Bug: skia:
Change-Id: I88260c90004610a1cf8ad1a87c2b4b222525bbb6
Reviewed-on: https://skia-review.googlesource.com/21108
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2017-06-29 14:57:47 +00:00
Mike Klein
5ce3972055 Revert "Re-land sksl fragment processor support"
This reverts commit c070939fd1.

Reason for revert: 

This has some knock-on effects in the generation of Android.bp from our GN files.  See gn/gn_to_bp.py?  We're seeing things like "tmp/tmpsBVycx/gen/" end up in the include search path in Android.bp, which obviously don't exist there...

Original change's description:
> Re-land sksl fragment processor support
> 
> This reverts commit ed50200682.
> 
> Bug: skia:
> Change-Id: I9caa7454b391450620d6989dc472abb3cf7a2cab
> Reviewed-on: https://skia-review.googlesource.com/20965
> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

TBR=benjaminwagner@google.com,ethannicholas@google.com

Change-Id: I502486b5405923b322429219f4cc396a45a14cea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/20990
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2017-06-27 22:52:10 +00:00
Ethan Nicholas
c070939fd1 Re-land sksl fragment processor support
This reverts commit ed50200682.

Bug: skia:
Change-Id: I9caa7454b391450620d6989dc472abb3cf7a2cab
Reviewed-on: https://skia-review.googlesource.com/20965
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2017-06-27 18:27:57 +00:00
Derek Sollenberger
19b2a56ad7 Upgrade android build (and infrastructure) to use ndk r15.
Bug: 6672
Change-Id: Ia6c6bae8a9adfd75172d7116487dfa63c3d69670
Reviewed-on: https://skia-review.googlesource.com/20904
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Eric Boren <borenet@google.com>
2017-06-27 16:32:15 +00:00
Ethan Nicholas
ed50200682 Revert "sksl fragment processor support"
This reverts commit ccf59917d3.

Reason for revert: breaking iOS bots

Original change's description:
> sksl fragment processor support
> 
> Bug: skia:
> Change-Id: Ia3b0305c2b0c78074303831f628fb01852b90d34
> Reviewed-on: https://skia-review.googlesource.com/17843
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,benjaminwagner@google.com,ethannicholas@google.com

Change-Id: I0a33060c7c42c7b44c5c13d443ac42958291c2f1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/20962
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2017-06-27 14:36:44 +00:00
Ethan Nicholas
ccf59917d3 sksl fragment processor support
Bug: skia:
Change-Id: Ia3b0305c2b0c78074303831f628fb01852b90d34
Reviewed-on: https://skia-review.googlesource.com/17843
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2017-06-27 14:20:05 +00:00
Mike Klein
39312c8f82 Describe GCC-like asm steps as "assemble ..."
Oddly, the MSVC toolchain already says "assemble ...".

Change-Id: Iabf06afa1b7c05b5699a26813f1469346be439a5
Reviewed-on: https://skia-review.googlesource.com/14367
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-04-26 14:59:55 +00:00
Mike Klein
28f5b779a3 stop disabling threadsafe statics
Chrome's got threadsafe statics, Android too, Flutter too, and heck, we even have them on all our Windows builds.  No one responded to my mail about them.  Let's stop turning them off on not-Windows!

Change-Id: Iadf00336aa73df3f694ac019c9d54a3f2257a3bd
Reviewed-on: https://skia-review.googlesource.com/11683
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-04-07 14:54:29 +00:00
Mike Klein
9e4d51126f remove -mdspr2
I set -mdspr2 unconditionally on 32-bit MIPS builds only to not have to
deal with setting it conditionally on the source files specifically
requiring those instructions.

Since then, I've deleted all the source files specifically requiring
-mdspr2 (and -mdsp).  No one understood them and they were only
accelerating really uninteresting cases, like 565 blits.

So, we haven't needed -mdspr2 anywhere for a while, and removing it
will unblock running these builds on the CI20 dev boards, which
support neither -mdsp nor -mdsp2.

BUG=skia:1437

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Ubuntu-Clang-mipsel-Debug-Android,Build-Ubuntu-Clang-mipsel-Release-Android

Change-Id: Idda56fd8bb37ba064b78b4cddd8878b37dfe9502
Reviewed-on: https://skia-review.googlesource.com/11284
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-04-04 19:33:43 +00:00
Mike Klein
5f80485a53 make _win.S know if it's 64-bit
I think this is the root of my Windows / Chrome problems.
Even on 32-bit builds, Chrome compiles nacl64.exe in 64-bit mode.

So to make things simple, always put _win.S in the sources,
and no-op it away when assembling for 32-bit.

Change-Id: I19f163491739a6c0cbdedd0ce353f1d2289907ae
Reviewed-on: https://skia-review.googlesource.com/10637
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-03-30 18:45:19 +00:00
Kevin Lubick
2677a9a135 Add extra_asmflags
This makes it easier to cross-compile for non-Android ARM (e.g. Raspberry PI)

Bug: skia:
Change-Id: I4414d933bc38d56009aefcbe10e68f7c70964d9c
Reviewed-on: https://skia-review.googlesource.com/10291
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-28 20:39:17 +00:00
Mike Klein
8cb66485e5 turn on hidden visibility flags on iOS
These new images came up when I turned them off the other day:

https://gold.skia.org/search?blame=eec23d113149569414e325ac6fd5a9253945628b&fdiffmax=-1&fref=false&frgbamax=-1&head=true&include=false&limit=50&match=gamma_correct&match=name&metric=combined&neg=false&pos=false&query=source_type%3Dgm&sort=desc&unt=true

Some sort of ODR problem?  :/

Change-Id: I9b2575948c3bd5710476e6501e8ec27933c277f6
Reviewed-on: https://skia-review.googlesource.com/10287
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-03-28 18:37:09 +00:00
Mike Klein
eec23d1131 focus hidden-visibility flags
This makes things like dladdr and backtrace_symbols not totally useless on Linux.

Change-Id: I26666a76c5b50fbf88aaf9709c869de0a697bb02
Reviewed-on: https://skia-review.googlesource.com/10176
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-03-27 12:50:16 +00:00
Ben Wagner
4e8472c529 Support vs2017.
Change-Id: Icb333d34705c86f6204a5265b645a2a215e60ad6
Reviewed-on: https://skia-review.googlesource.com/9624
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-21 02:37:06 +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
Mike Klein
7a5e0f3847 Add iOS simulator support in GN.
This builds fine on my laptop, but fails to link on the bots,
so I'm leaving out a new Build bot for now.

BUG=skia:6329

Change-Id: I4b33770f13ab9dec914d090b45d9921b19ee2c9d
Reviewed-on: https://skia-review.googlesource.com/9519
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-13 17:21:43 +00:00
Kevin Lubick
5c7780e350 Be able to compile nanobench for Chromecast
Get toolchain from https://goto.google.com/ncoqy and put in 
$CAST_TOOLCHAIN

gn gen out/chromecast --args='cc="$CAST_TOOLCHAIN/armv7a/bin/armv7a-cros-linux-gnueabi-gcc" cxx="$CAST_TOOLCHAIN/armv7a/bin/armv7a-cros-linux-gnueabi-g++" ar="$CAST_TOOLCHAIN/armv7a/bin/armv7a-cros-linux-gnueabi-ar" is_official_build=true skia_use_fontconfig=false extra_ldflags=["-static-libstdc++","-static-libgcc"] target_cpu="arm" skia_enable_gpu=false skia_use_system_freetype2=false'

ninja -C out/chromecast nanobench

We go with is_official_build to minimize binary size, as the chromecast
does not have much onboard storage.

They do not package libstdc++ so we add the link options:
-static-libstdc++ -static-libgcc

-momit-leaf-frame-pointer is not supported, so we delete it, as it is not important.

BUG=skia:

Change-Id: I7b0882ab5d6109f07345a2d59df265efef9b9554
Reviewed-on: https://skia-review.googlesource.com/9338
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-03-07 16:32:31 +00:00
Mike Klein
e632003ca7 Support Android NDK r14.
simpleperf has moved a little since r13.  To support both, remove its
copy step.

Explicitly disable the Clang integrated assembler on MIPS.  It has only
understood the 'usw' (unaligned store) pseudoinstruction for about 4
months, and that won't be part of a Clang release until the upcoming
Clang 4.0.  Must be that -no-integrated-as was the default in r13.

All six platforms build on my laptop with r14 now.
Will follow up with the CL that moves the bots to r14.

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Mac-Clang-arm64-Debug-Android,Build-Ubuntu-Clang-arm-Debug-Android,Build-Ubuntu-Clang-arm64-Debug-Android,Build-Ubuntu-Clang-mips64el-Debug-Android,Build-Ubuntu-Clang-mipsel-Debug-Android,Build-Ubuntu-Clang-x64-Debug-Android,Build-Ubuntu-Clang-x86-Debug-Android,Build-Win-Clang-arm64-Release-Android

Change-Id: Ic00981d534613ebab8f6e7646b967493728b91d9
Reviewed-on: https://skia-review.googlesource.com/9237
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2017-03-06 14:55:38 +00:00
Mike Klein
ed1b9022b3 SkJumper: Windows
- Compile stages with -DWIN to pick up MS-specific start_pipeline().
    - Add SkJumper_generated_win.S with MS-specific assembly.
    - Add a minimal asm tool to our GN Windows toolchain.

The SkRasterPipeline_f16 benchmark run ~4x faster on my desktop.

Change-Id: Ia45afb4ecb6a055e2c0e43f0f54f59e081c23b7f
Reviewed-on: https://skia-review.googlesource.com/8778
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-02-21 19:48:19 +00:00
Mike Klein
4fe2b15c0a Set asmflags when building for iOS.
It's probably best we build iOS assembly with the iOS SDK and the right
architecture settings in Clang...

Change-Id: I68119641b1f86267ca85434b5a7f6ed37838ce23
Reviewed-on: https://skia-review.googlesource.com/8680
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-02-17 21:11:41 +00:00
Mike Klein
bd9be4dec9 Strip dead code on all Release builds.
Today we do this only on Windows (/OPT:REF).

This extends to Mac-likes (-dead_strip) and non-Macs
(-ffunction-sections, -fdata-sections, -Wl,--gc-sections).

Should be no harm passing -ffunction-sections and -fdata-sections on Mac too.

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Ubuntu-Clang-x86_64-Release-Mini

Change-Id: I3a1b41be1d258ff509b0355215cb25dab47db57b
Reviewed-on: https://skia-review.googlesource.com/8307
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-02-10 15:32:48 +00:00
Mike Klein
be28ee2974 Make iOS main() functions normal.
The weird foo_mains are no longer needed when we build with GN.

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

Change-Id: Iae50696741e0dc277d96dda4968a1ae41cb17c8a
Reviewed-on: https://skia-review.googlesource.com/8064
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Stephan Altmueller <stephana@google.com>
2017-02-06 18:02:41 +00:00
Mike Klein
987360687a Make flag parsing work in GN-built iOS nanobench.
Just like DM.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-iOS-Clang-iPadMini4-GPU-GX6450-Arm7-Debug,Build-Mac-Clang-arm64-Debug-GN_iOS

Change-Id: I4af3fa1813e3b7ee48407096e91373b5fee569c7
Reviewed-on: https://skia-review.googlesource.com/7824
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-01-31 20:49:19 +00:00
Mike Klein
6d3b7aaf79 gn: iOS packaging script
This is enough to run DM on my iPad.

I've tweaks DM so that it can run as built by both GN and GYP.
When we kill off GYP, all the dm_main() nonsense goes away.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-iOS-Clang-iPadMini4-GPU-GX6450-Arm7-Debug,Build-Mac-Clang-arm64-Debug-GN_iOS

Change-Id: I59176bc203ee3180618b94ac5f9d291e0ad20b62
Reviewed-on: https://skia-review.googlesource.com/7757
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Hal Canary <halcanary@google.com>
2017-01-31 17:06:21 +00:00
Mike Klein
b48fd3cc89 GN: add 32-bit and Release iOS builders.
And roll recipes to the point where they pass target_cpu to GN,
adding x86_64 as an alias for x64.

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Mac-Clang-arm64-Debug-GN_iOS,Build-Mac-Clang-arm64-Release-GN_iOS,Build-Mac-Clang-arm-Debug-GN_iOS,Build-Mac-Clang-arm-Release-GN_iOS

Change-Id: I1933d5803ec7f59f78576c5a7b16489362905a97
Reviewed-on: https://skia-review.googlesource.com/7403
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-01-23 19:54:49 +00:00
Mike Klein
09008ff8dd Revert "Try /MTd on Debug Windows builds."
This reverts commit 58ce2bc51a.

Reason for revert: warnings / errors when building ANGLE.

Original change's description:
> Try /MTd on Debug Windows builds.
> 
> The people clamor for it!  I doubt we'll care in our testing.
> 
> BUG=skia:5928
> 
> Change-Id: I80d3948fd1f5d0b956c308bc3a6183b8660575ae
> Reviewed-on: https://skia-review.googlesource.com/7364
> Commit-Queue: Mike Klein <mtklein@chromium.org>
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>
> 

TBR=mtklein@chromium.org,bungeman@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:5928

Change-Id: Id6ab3de7ebb5394749233429bada2f5244ff2978
Reviewed-on: https://skia-review.googlesource.com/7372
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-01-21 15:35:24 +00:00
Mike Klein
58ce2bc51a Try /MTd on Debug Windows builds.
The people clamor for it!  I doubt we'll care in our testing.

BUG=skia:5928

Change-Id: I80d3948fd1f5d0b956c308bc3a6183b8660575ae
Reviewed-on: https://skia-review.googlesource.com/7364
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2017-01-21 15:12:07 +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
Brian Osman
3f28933478 Start including 'winrt' in Windows toolchain
Recent versions of ANGLE require this. See:

  https://skia-review.googlesource.com/c/6698/

This also updates us to the latest version of the Windows SDK,
2015 Update 3 (Windows 10 SDK).

BUG=skia:
CQ_INCLUDE_TRYBOTS=skia.primary:Perf-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Debug-GDI,Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan,Test-Win2k8-MSVC-GCE-CPU-AVX2-x86_64-Release

Change-Id: I42c8cabc87717f8695763f2c5573b27ab8ab65be
Reviewed-on: https://skia-review.googlesource.com/6801
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-01-10 18:28:58 +00:00
Matt Sarett
d3ed402617 Disable clang -Wsigned-enum-bitfield warnings
Full error text:
error: enums in the Microsoft ABI are signed integers by default;
consider giving the enum Properties an unsigned underlying type
to make this code portable [-Werror,-Wsigned-enum-bitfield]

BUG=skia:

Change-Id: I1491dd94c894e383fed401880fc04562140f7a66
Reviewed-on: https://skia-review.googlesource.com/6594
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
2017-01-04 22:46:38 +00:00
Ben Wagner
e6b274e402 Specify "/utf-8" with Visual C++.
This sets the source and executable character set to utf-8. This avoids
issues with local code pages and avoids adding an unwanted BOM.

Change-Id: If854c0001c2363f3262d20e28dce30c1e733536a
Reviewed-on: https://skia-review.googlesource.com/6547
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-01-03 22:45:03 +00:00