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
Uh, so hey, I just noticed that while the CommandBuffer Test bot runs
with --config commandbuffer, the Perf bot just runs as a vanilla GPU bot.
Shouldn't we pass --config commandbuffer?
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2364483002
CQ_INCLUDE_TRYBOTS=master.client.skia:Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer-Trybot
Review-Url: https://codereview.chromium.org/2364483002
(The failing NexusPlayer bot is a demo.)
This should make stack traces more useful, turning this sort of thing
09-20 11:29:39.536 2978 2978 F DEBUG : #00 pc 00970fd0 /data/local/tmp/dm
into something like this
09-20 11:29:39.536 2978 2978 F DEBUG : #00 pc 00970fd0 adjust_bounds_to_granularity(SkIRect*, SkIRect const&, VkExtent2D const&, int, int) at /b/work/skia/out/Build-Ubuntu-Clang-x86-Debug-GN_Android_Vulkan/Debug/../../../src/gpu/vk/GrVkGpu.cpp:1803 /data/local/tmp/dm
Some bots like the S7 already have good enough stack traces, e.g.
09-20 11:35:12.567 936 936 F DEBUG : #00 pc 00000000000bed6c /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN13QglManagedBuf14ConfirmEntriesEv+108)
09-20 11:35:12.567 936 936 F DEBUG : #01 pc 00000000000b098c /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN9QglBltLib6FillHwEPK10QglBltFillPK15QglBltColorFillPK15QglBltDepthFillPjP12QglBltStatusSB_+588)
09-20 11:35:12.567 936 936 F DEBUG : #02 pc 00000000000b23bc /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN9QglBltLib9FillImageEPK10QglBltFillPK15QglBltColorFillPK15QglBltDepthFillPjP12QglBltStatusSB_+348)
09-20 11:35:12.567 936 936 F DEBUG : #03 pc 000000000009bb00 /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN16A5xCommandBuffer22PerformConditionalFillEiiP10QglBltFillPK15QglBltColorFillP15QglBltDepthFillP12QglBltStatusS8_+256)
09-20 11:35:12.567 936 936 F DEBUG : #04 pc 000000000009c0c0 /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN16A5xCommandBuffer23HwWriteSubpassInitClearEP10QglBltFillPK15QglBltColorFillP15QglBltDepthFillP12QglBltStatusS8_+224)
09-20 11:35:12.567 936 936 F DEBUG : #05 pc 0000000000072610 /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN16QglCommandBuffer18WriteSubpassClearsEv+464)
09-20 11:35:12.567 936 936 F DEBUG : #06 pc 0000000000073ae0 /system/vendor/lib64/hw/vulkan.msm8996.so (_ZN16QglCommandBuffer12BeginSubpassEv+32)
09-20 11:35:12.567 936 936 F DEBUG : #07 pc 0000000000063120 /system/vendor/lib64/hw/vulkan.msm8996.so (vkCmdBeginRenderPass+224)
09-20 11:35:12.567 936 936 F DEBUG : #08 pc 0000000000635f60 /data/local/tmp/nanobench (_ZN24GrVkPrimaryCommandBuffer15beginRenderPassEPK7GrVkGpuPK14GrVkRenderPassjPK12VkClearValueRK16GrVkRenderTargetRK7SkIRectb+132)
or
09-20 11:42:24.557 937 937 F DEBUG : backtrace:
09-20 11:42:24.557 937 937 F DEBUG : #00 pc 0000000000069404 /system/lib64/libc.so (tgkill+8)
09-20 11:42:24.557 937 937 F DEBUG : #01 pc 0000000000066b94 /system/lib64/libc.so (pthread_kill+68)
09-20 11:42:24.557 937 937 F DEBUG : #02 pc 0000000000023a28 /system/lib64/libc.so (raise+28)
09-20 11:42:24.557 937 937 F DEBUG : #03 pc 000000000001e358 /system/lib64/libc.so (abort+60)
09-20 11:42:24.557 937 937 F DEBUG : #04 pc 000000000076430c /data/local/tmp/dm (_Z17sk_abort_no_printv+8)
These won't be affected.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2351243002
NOTREECHECKS=true
Review-Url: https://codereview.chromium.org/2351243002
GN is now far more capable than our CMake builds.
Time to officially end that experiment.
Reminder how this lands:
1) this CL
2) remove the bots from the masters
3) remove the CMake recipe files
4) remove the CMake files
I'm willing to wait on 4) until we can do GN -> CMake generation, but I don't want the bots to hold us back.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2350073002
Review-Url: https://codereview.chromium.org/2350073002
Android API >= 24 implies Vulkan support, so we can have a more useful default here than 'false'. If for some reason you wanted to turn it off, you can still override skia_use_vulkan.
The defined(ndk_api) guards other users of our GN files (Fuchsia) who may not have an ndk_api argument defined in their BUILDCONFIG.gn.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347843003
Review-Url: https://codereview.chromium.org/2347843003
- swap the N5 experiment over to the new GN N5 bot
- cut down on the Windows build duplication: the other two bots
cover x86, x86-64, Release, Debug, _and_ Vulkan already.
- remove the Release-Shared tester: I added this bot to act as a proxy
for the also Shared-build Android bots, but 1) they're fast enough
to no longer need a proxy (see N5 above) and 2) they're no longer
Shared builds. I intend to completely drop support for dm and
nanobench in Shared builds, so this bot will not just drop from the
CQ but completely disappear.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2346463002
Review-Url: https://codereview.chromium.org/2346463002
These were intended to prevent GN and GYP Android bots from stomping on
each other. Turns out, they don't, even without this... they're writing
most files to completely separate paths:
- GYP puts most data under $EXTERNAL_STORAGE, generally /sdcard
and its binaries (libdm.so, libnanobench.so, libskia.so, skia_launcher)
in /data/local/tmp;
- GN puts everything under /data/local/tmp, and its binaries (dm, nanobench)
don't overlap GYP's.
So clearing /data/local/tmp was essentially just removing GN's data; GYP's
data file caching was never affected and can't conflict with GN's.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2340473002
Review-Url: https://codereview.chromium.org/2340473002