Commit Graph

835 Commits

Author SHA1 Message Date
Greg Daniel
2cf8e9b602 Reland "Update VMA to latest version."
This is a reland of commit f33cf451a2

Original change's description:
> Update VMA to latest version.
>
> This is needed so that we can use non skia supplied vk_mem_alloc.h on
> clients that have already updated to newest version. As we transition
> to Bazel builds this helps to make it so we can set the rules for
> specific clients around VMA without things breaking
>
> Bug: skia:13211
> Change-Id: I5d38a3a91a44f6b3fdf75894a3248ee3991dd5d9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/531157
> Reviewed-by: Kevin Lubick <kjlubick@google.com>

Bug: skia:13211
Change-Id: Ia4a863819a7d0bb4763f1b516acfa1cc76c47a8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/531548
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2022-04-20 00:07:47 +00:00
Derek Sollenberger
d5c047004d Revert "Update VMA to latest version."
This reverts commit f33cf451a2.

Reason for revert: breaking the android roller

Original change's description:
> Update VMA to latest version.
>
> This is needed so that we can use non skia supplied vk_mem_alloc.h on
> clients that have already updated to newest version. As we transition
> to Bazel builds this helps to make it so we can set the rules for
> specific clients around VMA without things breaking
>
> Bug: skia:13211
> Change-Id: I5d38a3a91a44f6b3fdf75894a3248ee3991dd5d9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/531157
> Reviewed-by: Kevin Lubick <kjlubick@google.com>

Bug: skia:13211
Change-Id: Ibd621aa2f07359f9b72e1a35df0f50ca3c063e86
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/531543
Auto-Submit: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2022-04-19 14:49:08 +00:00
Greg Daniel
f33cf451a2 Update VMA to latest version.
This is needed so that we can use non skia supplied vk_mem_alloc.h on
clients that have already updated to newest version. As we transition
to Bazel builds this helps to make it so we can set the rules for
specific clients around VMA without things breaking

Bug: skia:13211
Change-Id: I5d38a3a91a44f6b3fdf75894a3248ee3991dd5d9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/531157
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2022-04-18 20:28:30 +00:00
Kevin Lubick
a45e3ca967 Add missing Dawn deps
Leftover from the roll https://skia-review.googlesource.com/c/skia/+/530180

Change-Id: I1e00b85c7c374f4ddccff7e8bff451a04c97b6de
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/530338
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: Arman Uguray <armansito@google.com>
2022-04-14 22:40:05 +00:00
Kevin Lubick
1d3fe5b289 Roll Dawn from 088a600b0367 to 17b1a4525363 (147 revisions)
https://dawn.googlesource.com/dawn.git/+log/088a600b0367..17b1a4525363

2022-04-14 bsheedy@google.com Split large CTS logs
2022-04-14 bclayton@google.com Roll CTS and update expectations
2022-04-14 yunchao.he@intel.com Add data verification for e2e tests in RequiredBufferSizeInCopyTests.cpp
2022-04-14 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from de965415a139 to 1d450ae99a0f (2 revisions)
2022-04-14 bclayton@google.com tools: Add resultsdb package
2022-04-14 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 01c0bc215f4a to 871878352630 (4 revisions)
2022-04-14 bclayton@google.com tools: Add buildbucket package
2022-04-14 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from c9be322642fb to 7e9ab0686bf4 (5 revisions)
2022-04-14 shaobo.yan@intel.com Skip Unneccessary GetPendingCommandContext() Call To Save An Extra Fence
2022-04-14 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 011bba68c819 to de965415a139 (2 revisions)
2022-04-14 lokokung@google.com Reland "Add render pipeline cache key generation for Vulkan."
2022-04-13 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from eeb396535317 to 01c0bc215f4a (22 revisions)
2022-04-13 rharrison@chromium.org Fix path for stamp file in fuzzer corpuse generation
2022-04-13 lokokung@google.com Changes dependency on vulkan-tools typemap header.
2022-04-13 cwallez@chromium.org Roll third_party/webgpu-cts/ dcba3ac6b..5e83d8349 (25 commits)
2022-04-13 enga@chromium.org Revert "Add render pipeline cache key generation for Vulkan."
2022-04-13 enga@chromium.org Add WebGPU Adapter tags to the expectations file
2022-04-13 dsinclair@chromium.org Fixup CQ and Kokoro lint mismatches.
2022-04-13 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 9c0d5b64c767 to c9be322642fb (4 revisions)
2022-04-13 cwallez@chromium.org Change Dawn samples to use surface-based swapchains.
2022-04-13 dsinclair@chromium.org Fixup kokoro lint issue
2022-04-13 bajones@chromium.org Refactored how debug labels are set with Vulkan
2022-04-13 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 3f37fd8e4fbe to 011bba68c819 (3 revisions)
2022-04-13 dsinclair@chromium.org Remove redundant virtual.
2022-04-13 lokokung@google.com Add render pipeline cache key generation for Vulkan.
2022-04-12 lokokung@google.com Adds device-side cache key generation.
2022-04-12 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 9b2a1bfa4434 to 9c0d5b64c767 (5 revisions)
2022-04-12 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 620982155d55 to 3f37fd8e4fbe (1 revision)
2022-04-12 bclayton@google.com tools: Add gitiles package
2022-04-12 dsinclair@chromium.org Remove redundant override in include/dawn.
2022-04-12 dsinclair@chromium.org Fix build/include_order in include/dawn.
2022-04-12 dsinclair@chromium.org Remove fuzzer CPPLINT file.
2022-04-12 dsinclair@chromium.org Fixup explicit on some constructors.
2022-04-12 dsinclair@chromium.org Add explicit in include/dawn
2022-04-12 cwallez@chromium.org Rework dawn/native/ProcTable.cpp's template to better handle functions.
2022-04-12 ukai@google.com use stamp file for tint_generate_wgsl_corpus
2022-04-12 bclayton@google.com tools: Minor improvements to the git package
2022-04-12 bclayton@google.com tools: Flesh out the gerrit package
2022-04-12 cwallez@chromium.org Make WebGPU CTS scripts use Python3
2022-04-12 bclayton@google.com kokoro: Check go tool unit tests
2022-04-12 bclayton@google.com tools: Remove old tint test runner
2022-04-12 bclayton@google.com tint: Fix doxygen failure
2022-04-12 cwallez@chromium.org dawn.node: Make run-cts --print-stdout print the run's stdout/err
2022-04-12 dsinclair@chromium.org Remove extra CPPLINT.cfg files.
2022-04-12 dsinclair@chromium.org Fix copyright issues in src/include forwarding headers.
2022-04-12 dsinclair@chromium.org Fix missing copyrights in src/dawn.
2022-04-12 dsinclair@chromium.org Add missing include/webgpu copyrights.
2022-04-12 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from ca8ce3e715c2 to 9b2a1bfa4434 (6 revisions)
2022-04-12 ynovikov@chromium.org Revert "Ignore VUID-vkCmdDraw-None-06538 VVL message"
2022-04-12 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from b120ab6d49f4 to eeb396535317 (12 revisions)
2022-04-12 enga@chromium.org Mark webgpu:shader,execution,shader_io,compute_builtins:inputs:* failing on Windows x86 NVIDIA
2022-04-12 senorblanco@chromium.org GLES: revert part of the view format reinterpretation on GLES.
2022-04-12 bajones@chromium.org Enable Queue, Device labels to be set. (Take 2)
2022-04-11 bclayton@google.com tint: Re-enable doxygen
2022-04-11 bclayton@google.com dawn/node: Fix GCC warning
2022-04-11 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from d15c42482560 to 620982155d55 (2 revisions)
2022-04-11 amaiorano@google.com tint: Make GLSL backend consistent with the others
2022-04-11 amaiorano@google.com tint: spirv writer: add a GeneralImpl to be consistent with HLSL and MSL backends
2022-04-11 bclayton@google.com dawn/node: Define NAPI_DISABLE_CPP_EXCEPTIONS
2022-04-11 bclayton@google.com tint: More doxygen fixes
2022-04-11 bclayton@google.com Roll CTS and update expectations
2022-04-11 dsinclair@chromium.org Enable build/header_guard
2022-04-11 bclayton@google.com tint: Fix doxygen errors
2022-04-11 cwallez@chromium.org CMake: Add support with Swiftshader with DAWN_ENABLE_SWIFTSHADER
2022-04-11 cwallez@chromium.org Move samples/ under src/dawn/samples/
2022-04-11 amaiorano@google.com tint: Simplify backend Sanitize functions by passing in Options
2022-04-11 dsinclair@chromium.org Fixup include directory errors in src/dawn.
2022-04-11 dsinclair@chromium.org Enable empty_if_body lint.
2022-04-11 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 60e6ec01372a to ca8ce3e715c2 (1 revision)
2022-04-11 amaiorano@google.com Add ifdefs for Tint API usage that may not be available
2022-04-11 dsinclair@chromium.org Fix build/include lint in samples/
2022-04-11 bclayton@google.com tint: Standardize the way we forward-declare
2022-04-11 dsinclair@chromium.org Fixup readability/braces lint warning.
2022-04-11 dsinclair@chromium.org Enable runtime/printf
2022-04-11 dsinclair@chromium.org Fixup build/include issues in src/dawn
2022-04-11 dsinclair@chromium.org Create more targeted CPPLINT.cfg files.
2022-04-11 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 1b94c585682b to b120ab6d49f4 (1 revision)
2022-04-11 bclayton@google.com tools: Add src/cts/result
2022-04-11 bclayton@google.com tools: Simplify gerrit-stats and snippets
2022-04-10 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 727cd8ef6634 to 1b94c585682b (1 revision)
2022-04-10 dsinclair@chromium.org Combine contributing files.
2022-04-10 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 19082e8adae0 to 60e6ec01372a (2 revisions)
2022-04-09 senorblanco@chromium.org OpenGLES: simulate glTextureView() with texture-to-texture copies.
2022-04-09 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from d4572ee122d4 to 19082e8adae0 (1 revision)
2022-04-09 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 09a24f3d53cd to 727cd8ef6634 (3 revisions)
2022-04-09 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 2ce1d878f9c9 to d4572ee122d4 (6 revisions)
2022-04-09 lokokung@google.com Add compute pipeline cache key generation for Vulkan.
2022-04-08 amaiorano@google.com tint: Fix copy instead of move of ArrayLengthFromUniform::used_size_indices
2022-04-08 dsinclair@chromium.org Fixup whitespace/comments issues.
2022-04-08 amaiorano@google.com tint: handle CRLF on Windows when splitting WGSL source
2022-04-08 bclayton@google.com CMake: Fix sanitizer builds
2022-04-08 bclayton@google.com Kokoro: Ensure that no CRLF creep in
2022-04-08 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 3cea7fcc01ce to 09a24f3d53cd (2 revisions)
2022-04-08 cwallez@chromium.org dawn.node: Detach buffer mappings on GPUBuffer.destroy.
2022-04-08 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from acc216fde2a5 to 2ce1d878f9c9 (4 revisions)
2022-04-08 bclayton@google.com Normalize all line endings to LF
2022-04-08 bclayton@google.com Kokoro: install GLFW dependencies
2022-04-08 dsinclair@chromium.org Re-enable lint presubmit
2022-04-08 jiawei.shao@intel.com Always use 0 for the Depth operand of OpTypeImage
2022-04-08 cwallez@chromium.org Validate that alignment limits are powers of two.
2022-04-08 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 17311a73f6fb to acc216fde2a5 (7 revisions)
2022-04-08 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from d09282e5c609 to d15c42482560 (2 revisions)
2022-04-08 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from ba04fcfd10c7 to 3cea7fcc01ce (6 revisions)
2022-04-07 rharrison@chromium.org Clean up contributing documentation post tint merge
2022-04-07 bclayton@google.com CMake: Fix building of tint with fuzzers enabled
2022-04-07 dsinclair@chromium.org Minor formatting changes.
2022-04-07 enga@chromium.org Make texture view default format robust against invalid aspects
2022-04-07 bclayton@google.com Remove standalone.gclient
2022-04-07 bclayton@google.com Move kokoro dir under infra
2022-04-07 bclayton@google.com .vscode/tasks.json - Add 'cmake gen'
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/reader.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/reader/spirv.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/ast.
2022-04-07 bclayton@google.com tools: Replace copy-pasta scripts
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/inspector.
2022-04-07 cwallez@chromium.org Add top-level OWNERS and scope Tint owners more tightly.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/reader/wgsl.
2022-04-07 amaiorano@google.com Ignore tools/cmake*
2022-04-07 bclayton@google.com tools/src: Fix up paths post-tint-merge
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/fuzzers.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/resolver.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/diagnostic.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/utils.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/transform.
2022-04-07 amaiorano@google.com spirv: Remove AssembleFailure() tests
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/sem.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/writer.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/val
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/writer/glsl.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/writer/hlsl.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/writer/spirv.
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/writer/msl.
2022-04-07 jrprice@google.com Add support for increment/decrement statements
2022-04-07 jrprice@google.com wgsl: Add support for increment/decrement statements
2022-04-07 jrprice@google.com resolver: Validate increment/decrement statements
2022-04-07 jrprice@google.com ast: Add an IncrementDecrementStatement node
2022-04-07 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 746dd371204b to 17311a73f6fb (9 revisions)
2022-04-07 enga@chromium.org Implement rendering with view format reinterpretation
2022-04-07 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 9c16e141823e to d09282e5c609 (3 revisions)
2022-04-07 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 152616eedcfd to ba04fcfd10c7 (6 revisions)
2022-04-07 cwallez@chromium.org Remove lintcpp from presubmits since it fails on all Dawn files
2022-04-07 dsinclair@chromium.org Condense namespaces in tint/writer/wgsl.
2022-04-07 cwallez@chromium.org DEPS: add the clang-format hook on windows back.
2022-04-07 bclayton@google.com OWNERS: Move bclayton to core owners
2022-04-06 rharrison@chromium.org Remove hooks that are causing *-rel builds to fail
2022-04-06 jrprice@google.com Add Tint's .clang-format file to src/tint

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dawn-skia-autoroll
Please CC bajones@google.com,brianosman@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Dawn: https://bugs.chromium.org/p/dawn/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: bajones@google.com,brianosman@google.com
Test: Test: tint_unittests
Change-Id: Ib0786ce79bc994d7228d6967b27f11554cd9dfbb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/530180
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-04-14 19:38:26 +00:00
Kevin Lubick
83cee23c98 [bazel] Run buildifier on BUILD.bazel files
buildifier --lint=fix -r .

Change-Id: I6a41858270d20137978f8271c8f6160b51120777
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529751
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-04-14 18:13:43 +00:00
Kevin Lubick
458f4ded2b [bazel] Consolidate skylib loads
For importing into G3, this will simplify the regex needed
and allow us to stub out things not supported (e.g. gazelle)

Change-Id: I770f5dee6f29e555356742dae36212ad6cfb713a
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529836
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-04-14 11:37:08 +00:00
skia-autoroll
3aa6ec7bbd Roll skcms from 0ff18ebed22b to dcb0286a1e17 (1 revision)
https://skia.googlesource.com/skcms.git/+log/0ff18ebed22b..dcb0286a1e17

2022-04-13 lovisolo@google.com [bazel] Use hermetic Android NDK C++ toolchain in CI tasks.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC armansito@google.com,brianosman@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: armansito@google.com,brianosman@google.com
Change-Id: Ia65a51f237365353540527c936de91150c548002
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529891
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-04-14 00:20:15 +00:00
skia-autoroll
35f80d69e8 Roll skcms from 5394ae3ed6c8 to 0ff18ebed22b (1 revision)
https://skia.googlesource.com/skcms.git/+log/5394ae3ed6c8..0ff18ebed22b

2022-04-13 lovisolo@google.com [bazel] Add hermetic Android NDK C++ toolchain.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC armansito@google.com,brianosman@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: armansito@google.com,brianosman@google.com
Change-Id: I9519d90a799bf6c1e75bb7dee7531baccc09326e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529673
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-04-13 22:14:15 +00:00
Kevin Lubick
b98328a27b [bazel] Add license to all our BUILD.bazel files
find -name "BUILD.bazel" -exec sed -i -e '1i licenses(["notice"])\n' {} +

Change-Id: Ie48f163b7d8d6ede9ba5f952e87232dd5c9fa8e6
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529808
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-04-13 19:50:29 +00:00
skia-autoroll
319f38e9f7 Roll skcms from 30c8e303800c to 5394ae3ed6c8 (1 revision)
https://skia.googlesource.com/skcms.git/+log/30c8e303800c..5394ae3ed6c8

2022-04-13 lovisolo@google.com Ignore .vscode.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC armansito@google.com,brianosman@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: armansito@google.com,brianosman@google.com
Change-Id: Ia82a4c2072a951e1b2fad286e5cd4b0812813ca1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529571
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-04-13 14:59:11 +00:00
Kevin Lubick
a9f6ceebed [bazel] Add executable for skslc
This ports the GN skia_executable [1] and adds third_party
Bazel rules for spirv_cross, translated from [2]. spirv_cross,
unlike spirv_tools, did not have pre-made Bazel rules.

This binary compiles and links with

    bazelisk build //tools/skslc --config=clang

[1] ad324a31e6/BUILD.gn (L712)
[2] ad324a31e6/third_party/spirv-cross/BUILD.gn (L10)

Change-Id: I4abd51889552153fc7e64a5f7f3d9f0f597524e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/528044
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-04-08 17:25:24 +00:00
Kevin Lubick
503a2bd982 Update Skia to use the new combined Dawn+Tint repo
Includes a manual roll of Dawn, as well as tweaks to the Tint build
overrides.

Dawn needs git in order to generate a header that has the
version of Dawn compiled in. If we use Dawn's GN rules to
build it, we need git to generate that file.

Our (now updated) Bazel rules to build Dawn do not need to
do this because we (Skia) do not use this file [1]

[1] https://dawn.googlesource.com/dawn/+/088a600b03679cd20991f145173a573ed9c03480/src/dawn/common/BUILD.gn#177

Change-Id: Id19fdbb9b53fdad2397a0044a4a314b1444faeb0
Cq-Include-Trybots: luci.skia.skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn,Build-Win-Clang-x86_64-Release-Dawn
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/528157
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-04-07 20:31:14 +00:00
Kevin Lubick
fed97e8f40 [bazel] Add RBE support using hermetic Linux Clang toolchain
A new RBE worker-pool called gce_linux was created in
conjunction with this CL. See
https://docs.google.com/document/d/14xMZCKews69SSTfULhE8HDUzT5XvPwZ4CvRufEvcZ74/edit#
for some details on that.

Note: everything under bazel/rbe/gce_linux was autogenerated
and can be ignored from manual review. It basically specifies
what files are on the RBE image that are necessary for running
Bazel.

Testing it out can be done by authenticating for RBE
gcloud auth application-default login --no-browser

Then, run make -C bazel rbe_known_good_builds
to test it out.

On my 4 core laptop with an empty local cache, but a
warm remote cache, the build took <2 min instead of the
10+ minutes it would have [1].

The folder structure in //bazel/rbe is meant to let us
have multiple remote configurations there, e.g.
//bazel/rbe/gce_windows.

Suggested Review Order:
 - bazel/rbe/README.md
 - bazel/rbe/gce_linux_container/Dockerfile to see the
   bare-bones RBE image.
 - bazel/rbe/BUILD.bazel to see a custom platform defined.
   It is nearly identical to the autogenerated one
   in bazel/rbe/gce_linux/config/BUILD, with one extra
   field to force the gce_linux pool to be used.
 - .bazelrc to see the settings needed to make
   --config=linux-rbe work. The naming convention was
   inspired by SkCMS's setup [2], and allows us to have
   some common RBE settings (i.e. config:remote) and
   some specialized ones for the given host machine
   (e.g. config:linux-rbe) A very important, but subtle
   configuration, is on line 86 of .bazelrc where we say
   to use our hermetic toolchain and not whatever C++
   compiler and headers are on the host machine (aka
   the RBE container).
 - toolchain/build_toolchain.bzl to see some additional
   dependencies needed in the toolchain (to run IWYU) which
   I had installed locally but didn't realize were important.
 - third_party/BUILD.bazel to see an example of how failing
   to specify all files can result in something that works
   locally, but fails remotely.
   --execution_log_json_file=/tmp/execlog.json helped debug
   these issues.
 - All other files.

[1] http://go/scrcast/NjM1ODE4MDI0NzM3MTc3Nnw3ODViZmFkMi1iOA
[2] https://skia.googlesource.com/skcms/+/30c8e303800c256febb03a09fdcda7f75d119b1b/.bazelrc#20


Change-Id: Ia0a9e6a06c1a13071949ab402dc5d897df6b12e1
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524359
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2022-03-28 13:56:16 +00:00
Kevin Lubick
54bd442fad [bazel] Use hermetic Python with jinja2+MarkupSafe
The file generation logic that dawn [1] uses to make some
source files requires jinja2, which also requires MarkupSafe.

The GN build handles this by specifying those repos in
DEPS, checking them out at a certain git hash, and then
providing them via a command line arg [2].

We do not have to do it this way in Bazel to have reproducible
builds. This CL specifies an exact version (verified by sha256)
of those two deps and then uses a hermetic version of
Python 3.9 to run all py_binary commands.

Previously, we would rely on the system Python (and installed
libraries). That happened to work on my machine, but not on
other machines without jinja2 and MarkupSafe installed. After
this CL, it should work on machines that do not have python
even installed.

I chose the same jinja2 version used by Dawn [3], which was
2.11.3. Then I chose the newest version of MarkupSafe that
was compatible with jinja2 (2.0.1).

If we have other python scripts that need external deps, we
should be able to specify them in the py_binary that needs
them and in requirements.txt. Then, the pip_install() step
in WORKSPACE.bazel will download them and make them available.

[1] https://dawn.googlesource.com/dawn.git/+/refs/heads/main/docs/dawn/overview.md
[2] https://dawn.googlesource.com/dawn.git/+/e45ff6a4b3c2f06dade68ec0f01ddc3bfd70c282/generator/generator_lib.gni#77
[3] ee69aa00ee

Change-Id: I3d0074f3003de179400e239e00107c34f35f4901
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524217
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2022-03-28 13:56:16 +00:00
Kevin Lubick
aab019a15e [bazel] Fix build
Most of these are pretty mechanical generated changes.

IWYU noticed one issue with DSLCore.h, which was fixed here.

Change-Id: I5629565ad3c2817daa71907c62f932d93f9d78ab
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524617
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2022-03-28 13:56:16 +00:00
Kevin Lubick
14abec45f0 [bazel] Add support for Dawn (via Vulkan)
sk_app has existing support for Dawn on top of Vulkan, and
this adds support to build //example:hello_world_dawn and
get this to run on Linux.

Dawn depends on Tint and abseil-cpp. Tint further depends on
spirv_tools and spirv_headers (for writing to the SPIR-V format).
Dawn and Tint only have GN and CMake support, so we need to make
our Bazel rules for them (see //third_party/BUILD.bazel).

abseil-cpp and the SPIR-V libraries have Bazel support, so we
can just include them (see //WORKSPACE.bazel). It is important
that @spirv_headers be called that exactly because @spirv_tools
depends on it by that name.

The hand-crafted cc_library rules for Dawn and Tint were produced
by reading the appropriate GN files and using the parts necessary
for a supporting Vulkan+Linux. If we use Dawn for other backends
(e.g. WebGPU), we will need to expand the Bazel rules. One day,
we might contribute the Bazel rules to Dawn and Tint so they
can support them and avoid breaking us if new files are added.

Suggested Review Order
 - bazel/common_config_settings/BUILD.bazel to see introduction
   of new select-able option "has_gpu_backend" which cleans up
   some of our code that is enabled for any GPU backend.
 - src/*/BUILD.bazel to see has_gpu_backend rolled out.
 - WORKSPACE.bazel to see DEPS declared there (using the files
   in third_party/externals, which are brought in via
   tools/git-sync-deps).
 - third_party/BUILD.bazel which adds Dawn and Tint rules.
   It may be helpful to look in third_party/externals for
   the Dawn [1] and Tint [2] GN files. Especially interesting
   are the Python scripts [3] Dawn uses to generate some
   header and source files.
 - All other files.

[1] https://dawn.googlesource.com/dawn/+/d9f22ce0346b222759d5510be3d1cd93caa5ab86/src/dawn/native/BUILD.gn#183
[2] https://dawn.googlesource.com/tint/+/453d5ae84ec30ab51ac592c13d472412ae8b5fc9/src/tint/BUILD.gn#174
[3] https://dawn.googlesource.com/dawn/+/d9f22ce0346b222759d5510be3d1cd93caa5ab86/generator/dawn_json_generator.py#774
Change-Id: Ied5b162045d8e841b9666457f0158457e2b078d4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/516996
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-03-22 13:05:52 +00:00
Kevin Lubick
0364f7b80e [bazel] Fix/update rules
This regenerates the files and fixes the harfbuzz rule so CanvasKit
compiles.

Change-Id: I2db2bddaabf793f360e8a4fa1a6a2b96222dfdf8
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/522816
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-03-21 17:19:54 +00:00
Kevin Lubick
7ac7413f08 [bazel] Support Vulkan
PS1 regenerates BUILD.bazel files

I suggest reviewing the deltas between PS1 and the latest
PS to focus on the interesting bits.

The changes here allow for a Vulkan-only build of HelloWorld
based on sk_app. The toughest change was properly fetching
the VisualID after removing the gl calls that used to
fill that in.

There are a few changes that fix resolution of Dawn
header files, but those won't actually be built until
a follow-on CL.

Change-Id: I54fb58b5dd7ecd4313562aed401759b3eaed53c0
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/516999
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-03-08 21:21:17 +00:00
Ben Wagner
d1b52f58a7 Roll HarfBuzz from a8b7f188 to 8d1b000a (207 commits)
a8b7f18804..8d1b000a3e

Updates to 4.0.0.

Change-Id: Id5fafcb6c811b4f0b2cb5fc5a4fb552979833872
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/514175
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
2022-03-02 22:34:16 +00:00
Kevin Lubick
c13cd6479d Reland "Build CanvasKit using GN/Ninja"
This is a reland of ecac712bec

Changes (best viewed comparing PS1 to latest)
 - Use emsdk 3.1.3 which includes important bug fixes
 - Remove unnecessary steps in compile.sh
 - Fix use of various gn args.
 - Avoid conflicts with Flutter's GN symbols
 - Add/update docs
 - Make activate-emsdk script compatible with our infra.

Original change's description:
> Build CanvasKit using GN/Ninja
>
> Build with
>
> ./bin/gn gen out/wasm_debug '--args=target_cpu="wasm"'
>
> or
>
> ./bin/gn gen out/wasm_release '--args=target_cpu="wasm" is_debug=false'
>
> Change-Id: Ib74586bf8397d57064a3899eaa6da76f9bce9049
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/502036
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>

Change-Id: I601712a8953c2799fa029e782e097905b95e6b59
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507717
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-02-15 16:31:10 +00:00
Kevin Lubick
a59af6e4f2 Revert "Build CanvasKit using GN/Ninja"
This reverts commit ecac712bec.

Reason for revert: possibly breaking flutter, definitely breaking docker wasm builds

Original change's description:
> Build CanvasKit using GN/Ninja
>
> Build with
>
> ./bin/gn gen out/wasm_debug '--args=target_cpu="wasm"'
>
> or
>
> ./bin/gn gen out/wasm_release '--args=target_cpu="wasm" is_debug=false'
>
> Change-Id: Ib74586bf8397d57064a3899eaa6da76f9bce9049
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/502036
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>

Change-Id: I04dbb3b1cff7511064f603d7dc7c8a4168bf0d56
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507616
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2022-02-11 13:35:19 +00:00
Harry Terkelsen
ecac712bec Build CanvasKit using GN/Ninja
Build with

./bin/gn gen out/wasm_debug '--args=target_cpu="wasm"'

or

./bin/gn gen out/wasm_release '--args=target_cpu="wasm" is_debug=false'

Change-Id: Ib74586bf8397d57064a3899eaa6da76f9bce9049
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/502036
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-02-11 13:05:44 +00:00
Kevin Lubick
9cb74e9079 [bazel] Compile gms for wasm and WebGL
PS 1 is re-generating existing BUILD.bazel files
PS 2 is generating BUILD.bazel files for tests/gms
PS 3+ makes modifications to build all of the gms and tests.

It is recommended to view this CL with just a diff between
PS 2 and the end, due to the large amount of generated changes
in PS 1 and 2.

We make a filegroup for the gms and tests because they need
to be compiled as one large blob in order for the registries
to work. Maybe in the future we will break these up, but at least
for WASM/JS, the overhead of starting a browser for each new
test would likely grind things to a halt, so we just group them
all together for now. It's also the most similar to what we
currently do.

In gm/BUILD.bazel and tests/BUILD.bazel, we add a cc_library
that encapsulates all of the deps of the tests, so we can
easily include that the build. These were discovered via
trial and error, not anything automatic or systematic.

The is_skia_dev_build config_setting is very similar to the
GN equivalent from which it was based.

The list of gms and tests to skip (e.g. which are incompatible
with WASM) was determined by building the wasm bundle:

modules/canvaskit$ make bazel_gms_release
tools/run-wasm-gm-tests$ make run_local_debug
# Don't forget to click the button on the screen after the
# browser loads

This way of invoking the tests will be replace soon with
`bazel test <something>`. As such, I didn't bother fully
documenting the current way.

Suggested review order:
 - modules/canvaskit/BUILD.bazel taking note that we always
   use profiling-funcs to make the stacktraces human readable.
 - gm/BUILD.bazel and tests/BUILD.bazel to see the lists of
   gms/tests. Notice the tests are roughly partitioned because
   we don't support things like vulkan/PDF in the wasm build
   and we will want a way to not build certain tests for
   certain configurations
 - tools/* noting some of the cc_libraries added to make
   dependencies easier to add when needed.
 - All other files.

Change-Id: I43059cd93c28af1c4c12b93d6ebd9c46a12d381f
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506256
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-02-09 18:56:17 +00:00
Kevin Lubick
e94b52c442 [canvaskit] Add skottie to Bazel build
PS 1 regenerates existing Bazel files
PS 2 adds generated Bazel files to skottie and its dependencies,
as well as incorporating it into CanvasKit.

This changes the version of Bazel we use to 5.0.0 (recently
released).We had been using a pre-release of 6.0 because we
wanted the new features in one of the 5.0 release candidates,
but not the regression that was there (and reverted before the
full 5.0 release). I'd like to stick to the latest stable Bazel
release where possible.

Suggested Review Order:
 - //modules/skottie/BUILD.bazel (this was hand written
   to encapsulate the skottie library). The files in the
   deps are based on skottie.gni.
 - //modules/skresources/BUILD.bazel and //modules/sksg/BUILD.bazel
   which expose all sources
 - //third_party/file_map_for_bazel.json which ignores the
   ffmpeg libraries (we won't actually build the SkVideoDecoder
   stuff because HAVE_VIDEO_DECODER is not set).
 - //modules/canvaskit/BUILD.bazel which makes use of the skottie
   library and includes the interface skottie.js file.
 - .bazelversion which changes the Bazel version used (e.g. by
   Bazelisk).
 - All other changes should be auto-generated or related to
   deleted files.

Change-Id: Ic26f9a9dea5310f2cbd9cda7d701847924a39a22
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/503828
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
2022-02-04 19:18:27 +00:00
Evgenii Kliuchnikov
0dae2e870d Add MVP implementation of JPEGXL decoder.
Change-Id: I90140348eeb87c849a857a12008c201efc9e328d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482596
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-02-02 15:17:14 +00:00
Kevin Lubick
98d664096d [bazel] Regenerate files and build with c++17
See toolchain/clang_toolchain_config.bzl for the c++17 switch.
Most of the other changes were automatically generated
(with the exception of //third_party).

Change-Id: I8c0f4b29b5967da3f48b17eb298a7e92156277ac
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/502407
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-02-01 13:15:22 +00:00
Ben Wagner
385a90aa9d Quote things in roll-freetype.sh.
A number of strings should be quoted for correctness. This allows for
proper handling of things like paths with spaces in their names.

Change-Id: I81f18d8a6be990733666ea55d20ff2fe9f2bcb34
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/499156
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2022-01-25 16:17:06 +00:00
Ben Wagner
a8ed76ac96 Roll FreeType from cff026d4 to 5e9caaee (77 commits)
cff026d415..5e9caaee78

Change-Id: I13af7c3aff6e440bd2cc8cf1e3e2c0f3f3ba2a9f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498917
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2022-01-24 20:44:11 +00:00
Ben Wagner
f53675554b Roll HarfBuzz from 31607897 to a8b7f188 (180 commits)
3160789701..a8b7f18804

Change-Id: I61d20c372574bf14c6783ce48bbcfecad2c1733a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498618
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2022-01-24 19:40:15 +00:00
skia-autoroll
4350707fe0 Roll skcms from 3fa993c258a9 to 30c8e303800c (2 revisions)
https://skia.googlesource.com/skcms.git/+log/3fa993c258a9..30c8e303800c

2022-01-21 johnstiles@google.com Fix overflow issue in approx_exp2().
2022-01-21 johnstiles@google.com Add .DS_Store to skcms ignore list.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC brianosman@google.com,scroggo@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: brianosman@google.com,scroggo@google.com
Change-Id: Idcdc3b42caa52fc5417ca9b6ecd5a8134c6ef176
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497762
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-22 00:10:20 +00:00
skia-autoroll
ca2980bf0d Roll skcms from 1ea0b89e7a7e to 3fa993c258a9 (1 revision)
https://skia.googlesource.com/skcms.git/+log/1ea0b89e7a7e..3fa993c258a9

2022-01-21 lovisolo@google.com Fix skcms-Linux task.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC brianosman@google.com,scroggo@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: brianosman@google.com,scroggo@google.com
Change-Id: Iff4e3d3d8d4407ad5643b09383f21bf7a98e02da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497722
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-21 21:18:53 +00:00
Ben Wagner
0aad22f568 Make roll_harfbuzz.sh work properly on Mac.
On Mac `find` by default interprets the first parameter literally as a
directory string and does not normalize the resulting file names the way
`find` does on Linux. Remove the unnecessary trailing '/' so that both
Mac and Linux versions produce the expected output.

Change-Id: I40e1e3ea546c572254c3e3b5e9bbaddf430ba191
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/494242
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2022-01-12 22:53:52 +00:00
Kevin Lubick
7a14f783bd [bazel] Sketching out HelloWorld sk_app using GL
bazel run //example:hello_world --config=clang
causes a window to open and draws a circle and a square.
Text to follow in a future CL.

To make this work, I had to get rid of musl and use glibc.
All the shared libraries (.so files) that were pre-built
and available for download (e.g. from https://packages.debian.org/bullseye/amd64/libgl1/download)
were compiled against glibc. When I tried to run a
program statically linked with musl and dynamically linked
against things using glibc, I got a segmentation fault
on things like calloc().

Initial attempts to use glibc had failed because it was thought
that the libc.so.6 file could only be referred to by absolute
path (and thus Bazel would not be happy about it). As it turns out,
that was simply a misconfiguration of the builtin_sysroot
parameter to cc_common.create_cc_toolchain_config_info
(see //toolchain/clang_toolchain_config.bzl). By setting that
to `external/clang_linux_amd64` and not
`external/clang_linux_amd64/usr`, the libc binary which had
been extracted to `external/clang_linux_amd64/lib/x86_64-linux-gnu`
was perfectly reachable from
`external/clang_linux_amd64/usr/usr/lib/x86_64-linux-gnu/libc.so`

To bring in the shared libraries to link against (e.g. X11, GL)
I made build_toolchain.bzl easier to modify in that we simply need
to add a debian download url and sha256 hash to a list (rather than
having to plumb this through via arguments).

Recommended Review Order:
 - example/BUILD.bazel (not sure if we always want to set bare
   link arguments like that or if we want to use "features" to
   pass those along to the toolchain).
 - tools/sk_app/BUILD.bazel to see initial cc_library for
   wrapping sk_app code.
 - toolchain/build_toolchain.bzl to see removal of musl and
   new list of debs.
 - toolchain/clang_toolchain_config.bzl (where use of the
   no-canonical-prefixes was key to compilation success).
   Notice also that we statically linked libc++ (I did not
   have any shared libraries for it locally, so I guessed
   a typical developer might not either).
 - Rest of toolchain/ for trivial renames.
 - bazel/Makefile to see extra docs on those targets and
   a new target that compiles all the exes so far for a
   quick way to test the build.
 - third_party/BUILD.bazel and src/gpu/BUILD.bazel which have
   non-generated changes. (all other BUILD.bazel files do).
 - go.mod, which needed to update the infra repo version in
   order to pick up http://review.skia.org/491736).

Change-Id: I8687bd227353040eca2dffa9465798d8bd395027
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/492117
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-01-11 13:06:19 +00:00
Brian Osman
90263a14b5 Revert "Spruce up SkSL slide with a much nicer editor"
This reverts commit 88c5af7ecd.

Reason for revert: Various input bugs in the new editor make it somewhat unusable.

Original change's description:
> Spruce up SkSL slide with a much nicer editor
>
> Pulls in a new GitHub repo that implements a syntax-highlighting code
> editor ImGui widget.
>
> Change-Id: I968e5eb827c226259eaaad2996eeaad9de592e37
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/491444
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

Change-Id: Ifa5bc87327785d107956201c4d866c7259006ec2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/492359
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-07 15:56:16 +00:00
Kevin Lubick
96e4053be7 Update Bazel files
- Use latest emscripten toolchain (3.1.0)
 - Autogenerate the atoms and manually fix some of the file lists.
 - Add a known_good_builds target to bazel/Makefile to help
   check the things we expect to work with Bazel.

Change-Id: Ia5f51e7b9eb5c108386820ad59180c8f862f5a70
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/491438
Reviewed-by: Ben Wagner <bungeman@google.com>
2022-01-06 18:10:57 +00:00
Brian Osman
88c5af7ecd Spruce up SkSL slide with a much nicer editor
Pulls in a new GitHub repo that implements a syntax-highlighting code
editor ImGui widget.

Change-Id: I968e5eb827c226259eaaad2996eeaad9de592e37
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/491444
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-05 20:19:49 +00:00
John Stiles
45c9eab786 Update ImGui to v1.85.
Change-Id: Ia490c514722b3d23cbf54a5905d301272e7ef161
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481856
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
2021-12-09 15:10:31 +00:00
Kevin Lubick
4bd08c52c0 [infra] Add SkParagraph (harfbuzz, ICU) to Canvaskit Bazel build.
As a follow-up to https://skia-review.googlesource.com/c/skia/+/476219,
this sketches out how we can maybe use cc_library for the things
in //modules to make sure something in //src doesn't depend on
anything in //modules, for example.

The following succeeds:
bazel build //modules/skparagraph:skparagraph --config=clang \
  --shaper_backend=harfbuzz_shaper --with_icu

As does `make bazel_canvaskit_debug` in //modules/canvaskit

Suggested Review Order:
 - third_party/BUILD.bazel for ICU and harfbuzz rules. Pay
   special attention to the genrules used to call the python
   script for turning the icu .dat file into .S or .cpp.
 - bazelrc and bazel/ for new flags and defines that control
   use of ICU and harfbuzz. Unlike GN, with the public_defines
   that get added in automatically if icu or harfbuzz is
   depended upon, we need to set the defines at the top level.
   This necessity might go away if we change the atoms to
   depend on //modules/skshaper, which could define that flag.
 - Top level BUILD.bazel files in //modules/skparagraph,
   //modules/skshaper, //modules/skunicode, //modules/canvaskit
 - All other .bazel file changes are automatic.

Bug: skia:12541
Change-Id: I38a9e0a9261d7e142eeb271c2ddb23f362f91473
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/478116
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2021-11-30 21:01:06 +00:00
Kevin Lubick
6ba9f702ba [bazel] Try adding cc_binary rules that use generated rules
To make the atomic rules a bit easier to work with, in many
of the folders, this adds in cc_library rules to group
together the sources from that folder (and subfolders
where prudent). We only needs sources because those atoms
should have their headers as deps.

One issue that was pointed out is that there is currently
no way to restrict the inclusion of certain packages,
a la, `gn check`. For example, there is no mechanism from
stopping a dev from adding
#include "modules/canvaskit/WasmCommon.h"
to something in //src/core (except circular dependencies).
We can probably address that using Bazel's visibility
rules as needed:
https://docs.bazel.build/versions/main/visibility.html
https://docs.bazel.build/versions/main/be/functions.html#package_group

It is recommended to look at this CL patchset by patchset.
PS1: Update gazelle command to generate rules in more folders.
PS2: A few changes to make generation work better.
PS3: The result of running make generate in //bazel
PS4: Adding the rules to build sksllex, the simplest binary I
     could find in the Skia repo.
PS5: Adding the rules to build skdiff, a more complex binary.
     I tried a few approaches, but ended up gravitating back
     towards the layout where we have each folder/package
     group up the sources. I imagine at some point, we'll have
     skdiff depend on skia_core or something, which will
     have things like //src/core, //src/codecs, //src/pathops
     all bundled together.
PS7: Added in the groupings of sources, similar to what we had
     earlier. I liked these for readability. These helped fix
     up the //:skia_core build, and by extension, the CanvasKit
     build.

Change-Id: I3faa7c4e821c876b243617aacf0246efa524cbde
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/476219
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2021-11-30 18:18:53 +00:00
Ben Wagner
ca7976f799 Roll HarfBuzz from a52c6df3 to 31607897 (132 commits)
a52c6df38a..3160789701

Change-Id: I36ae4f5d2a07dffd944eb3987e757db5c7d22a3d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/476537
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Julia Lavrova <jlavrova@google.com>
2021-11-29 20:00:24 +00:00
Kevin Lubick
9488e0237d [infra] Experiment generating BUILD.bazel files
This uses the gazelle extension from
https://skia-review.googlesource.com/c/buildbot/+/473357

Review Tips:
 - Ignore any changes to .h or .cpp files. Those have been
   pulled out into their own CLs.
 - Start with bazel/macros.bzl.
 - Read the CL with the generation code, if you haven't already.
 - Look at third_party/file_map_for_bazel.json.
 - See experimental/bazel_test for an idea of how a cc_binary
   would be made.
 - Spot check one or two of the BUILD.bazel files.

This CL generates the "atomic" rules for src/, include/ and
modules/skshaper, as a starting point.

`bazel build --config clang //include/...` works

`bazel build --config clang //src/...` starts compiling,
(which verifies that the BUILD.bazel files are all valid),
but runs into errors because not all third_party deps have
been resolved, and there are some files missing from the
toolchain still (e.g. EGL headers).

Change-Id: Ib7e0fb0efdb9f08655f06cbc56e9bb4cf416294b
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474240
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2021-11-23 18:53:16 +00:00
Kevin Lubick
888d4efa77 [canvaskit] Add Freetype/Fonts to Bazel Build
This re-works src/ports/BUILD.bazel to work like our other
BUILD files, i.e. one rule "srcs" that brings in the necessary
private filegroups.

To work around an abort with LLVM [1], we have to go back to an
earlier version of emscripten (temporarily?).

Future work should look at using transitions [2] to allow various
executables (e.g. CanvasKit, DM) to set their own set of Bazel
flags, w/o the build invokers having to specify them.

These transitions might be able to handle more complex cases
that we currently use if statements in GN to deal with.

The Freetype build rule was created by taking the BUILD.gn
rule, adding in all the sources listed there and then playing
compile-whack-a-mole to add in all the headers and included
.c files.

Suggested Review Order:
 - third_party/BUILD.bazel to see freetype build rules
 - bazel/common_config_settings/ to see treatment of fontmgr
   like codecs (many possible) and fontmgr_factory (only one).
 - src/ports/BUILD.bazel
 - BUILD.bazel
 - modules/canvaskit/BUILD.bazel. Take note of the gen_rule that
   calls tools/embed_resources.py to produce the .cpp file
   containing the embedded font data.
 - Everything else.

[1] https://github.com/emscripten-core/emscripten/issues/15528
[2] https://github.com/bazelbuild/examples/tree/main/rules/starlark_configurations/cc_binary_selectable_copts
Bug: skia:12541
Change-Id: I08dab82a901d80507007b354ca20cbfad2c2388f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471636
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2021-11-17 13:06:35 +00:00
skia-autoroll
9f300e4cb1 Roll skcms from 103005b3c336 to 1ea0b89e7a7e (1 revision)
https://skia.googlesource.com/skcms.git/+log/103005b3c336..1ea0b89e7a7e

2021-11-15 lovisolo@google.com [bazel] SkCMS: Android RBE tasks.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC jlavrova@google.com,brianosman@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: jlavrova@google.com,brianosman@google.com
Change-Id: I95d8f456999d48387ce586be3d574ac36238590c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471868
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-16 00:27:10 +00:00
skia-autoroll
1554910206 Roll skcms from 9019104061d8 to 103005b3c336 (1 revision)
https://skia.googlesource.com/skcms.git/+log/9019104061d8..103005b3c336

2021-11-15 lovisolo@google.com [bazel] SkCMS: Android config (32- and 64-bit, local and RBE).

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC brianosman@google.com,jlavrova@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: brianosman@google.com,jlavrova@google.com
Change-Id: I212b3bf001118961a516109f83eb5eccfbe03898
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471814
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-15 22:40:09 +00:00
skia-autoroll
152299ee42 Roll skcms from 0d5496480324 to 9019104061d8 (1 revision)
https://skia.googlesource.com/skcms.git/+log/0d5496480324..9019104061d8

2021-11-12 borenet@google.com [infra] Update Mac dimensions to target MacMinis

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC bsalomon@google.com,brianosman@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: bsalomon@google.com,brianosman@google.com
Change-Id: I8c3f3249a666b179cfa3e606b92e2f292c3e9551
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470781
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-12 16:50:37 +00:00
Brandon DeRosier
c0ff5a8560 Add flag that can be used to disable std::shared_mutex use in VMA.
This is needed for enabling Skia's Vulkan backend for Flutter on Windows and iOS 9, as the standard libraries in both of these contexts don't have `std::shared_mutex`.

When disabled on Windows, VMA falls back to using Win32 SRWLock.
The `vulkan.h` import in `vk_mem_alloc.h` which would normally import `windows.h` is commented out for Skia, and so the relevant symbols need to be declared before importing `vk_mem_alloc.h`.

Relevant Flutter Engine PR: https://github.com/flutter/engine/pull/29520

Change-Id: I2b1a621417155071b21e5c6d3b5ccc375c92a622
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/469207
Reviewed-by: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brandon DeRosier <bdero@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2021-11-12 01:35:08 +00:00
Kevin Lubick
8ed49ea6e3 [infra] Add Bazel rules for codecs.
This ports the third_party BUILD.gn files related to codecs
(with a best-effort on arm/SIMD stuff). This includes:
 - libpng
 - libjpeg-turbo
 - libwebp
 - wuffs (gif)
 - libgifcodec
 - dng_sdk and piex (raw codec)

This expands the string_flag_with_values macro to allow
multiple values to be set at once. This was added in Bazel 5.0.0,
however the latest pre-release version of that has a bug [1]
which slows down compilation dramatically. This was fixed at
ToT, but not released. As a result, I started using the Bazel
6 pre-release (via bazelisk).

The macro select_multi makes writing select() where multiple
elements could be on possible/easier.

One can try compiling certain codecs by running:
bazel build :skia-core --config clang --include_codec=raw_codec --include_codec=png_codec

Suggested Review Order:
 - bazel/macros.bzl
 - bazel/common_config_settings/defs.bzl and its BUILD.bazel
   to see how the codec options are defined.
 - BUILD.bazel to see how the codec settings are used.
 - src/codec/BUILD.bazel to see the inclusion of Skia files to
   deal with specific codecs.
 - third_party/BUILD.bazel (while referencing the corresponding
   BUILD.gn files, such as third_party/libwebp/BUILD.gn)
 - Everything else.

Change-Id: I797375a35fa345d9835e7b2a2ab23371c45953c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/469456
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2021-11-11 20:10:01 +00:00
Kevin Lubick
1f8c31b101 [infra] Add initial Bazel rules and files
These rules can be used to build our GMs on WASM+WebGL and
libskia.a with just the CPU backend (and most other features
turned off).

This can be done with the following commands:
  - bazel build //modules/canvaskit:gm-bindings-wasm --gpu_backend=gl_backend --with_gl_standard=webgl_standard
  - bazel build :skia-core --config clang

This pivots slightly from http://review.skia.org/463517
by using config_settings [1] instead of platforms for
the optional features that we control. This pivot was
suggested in [2]

We have BUILD.bazel files in many of the subdirectories
that specify filegroups for the appropriate files. In
an effort to make //BUILD.bazel more readable, it is
the responsibility of these subfolders to deal with
conditionally including certain .h or .cpp files.
This is done using select statements and config_settings
or platform constraints as necessary.

For example, src/gpu/BUILD.bazel will different private
filegroups for each of the supported gpu backends [3]
and a more-visible filegroup called "srcs" that has
the right selection of the private files to be used
for compilation.

An effort has been made to avoid using glob() in our
BUILD.bazel files. These file lists were made by using
`ls -1` and some regex to add in quotes. We might want
to make a helper script to assist with that, if necessary.

To specify which options we have, the settings in
//bazel/common_config_settings/BUILD.bazel have been
redesigned. They make use of a macro `string_flag_with_values`
that removes the boilerplate. Patchset 36 shows what the
file looks like w/o the macro.

The top level BUILD.bazel file will still need to use
some logic to handle defines, because local_defines is
a list of strings, not a list of labels [4].

Suggested Review Order:
  - WORKSPACE.bazel to see the new dependencies on the
    emsdk toolchain and bazel_skylib
  - bazel/common_config_settings/* to see the few settings
    defined (we have more to define, see BUILD.gn and
    //gn/skia.gni for ideas)
  - BUILD.bazel to see the "skia-core" cc_library rule.
    See also "gms" and "tests"
  - modules/canvaskit/BUILD.bazel to see the use of
    the emscripten "wasm_cc_binary" rule, which depends
    on the "skia-core", "gms", and "tests" rule. Note that
    it only builds some of the gms as a proof of concept.
  - The other BUILD.bazel files. Some of these are not
    platform or feature dependent (e.g. pathops). Others
    are (e.g. gpu).
  - All other files.

[1] https://docs.bazel.build/versions/4.2.1/skylark/config.html#user-defined-build-settings
[2] https://github.com/emscripten-core/emsdk/pull/920
[3] In this CL, that's just the webgl one.
[4] https://docs.bazel.build/versions/main/be/c-cpp.html#cc_library.local_defines

Change-Id: Ieecf9c106d5e3a6ae97d13d66be06b4b3c207089
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/458637
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Owners-Override: Kevin Lubick <kjlubick@google.com>
2021-11-09 12:32:25 +00:00
Kevin Lubick
97284f255b [infra] Add initial platforms and constraint values
This makes use of Bazel's pre-defined platforms
https://github.com/bazelbuild/platforms
and some of our own defined values (see
//bazel/common_config_settings/BUILD.bazel) to customize
the build rules.

I verified this by building bazel_test locally for
linux x64 as well as using the third_party deps for
a WASM build (using build files not seen in this CL).

Suggested Review Order:
 - https://docs.bazel.build/versions/main/platforms.html if not
   already familiar with Bazel Platforms
 - third_party/BUILD.bazel to see that 1) all globs have
   been removed and 2) select() targets various
   platform constants or groups of constants to control
   sources, headers, and local_defines.
 - common_config_settings/ to see the groups of constraints
   created, as well as new constraint_settings defined
   (skdebug_impl)
 - supported_combinations/ to see how we can define supported
   sets of the constraint values (aka Bazel platforms).
   I imagine expanding this more, so we might have platforms
   named "linux_x64_emptyfontmgr_vulkan" or such.
 - //BUILD.bazel and bazel_test.cpp to see use of SkDebugf.
 - Everything else.

Change-Id: I49e4abdbcf7b76f0674efdbb1f53dc8823d110ee
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/463517
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Owners-Override: Kevin Lubick <kjlubick@google.com>
2021-10-26 18:27:13 +00:00