Hash :
f3d5dac3
Author :
Date :
2021-08-23T17:25:15
Vulkan: SPIR-V Gen: Drop dependency to glslang
The SPIR-V gen path is now made default. Compilation through glslang is
still supported for debugging, and is enabled on the GLSL* end2end tests
for smoke testing. On release builds, glslang is not supported.
To test with glslang, add the following gn arg (only necessary if dcheck
is disabled):
angle_enable_spirv_gen_through_glslang = true
Then enable the generateSPIRVThroughGlslang feature. This can be done
by setting an environment variable:
ANGLE_FEATURE_OVERRIDES_ENABLED=generateSPIRVThroughGlslang ./angle_deqp_gles2_tests
Binary size saving:
- 1.3MB on Linux (SPIR-V gen itself: 240KB)
- 730KB on Android (SPIR-V gen itself: 140KB)
Perf tests:
- LinkProgramBenchmark.Run/vulkan_compile_single_thread
* Through glslang:
truncated mean: 1287033.36
* Direct SPIR-V Gen:
truncated mean: 244495.91 (~80% reduction)
- LinkProgramBenchmark.Run/vulkan_compile_multi_thread
* Through glslang:
truncated mean: 4565894.83
* Direct SPIR-V Gen:
truncated mean: 1158164.10 (~75% reduction)
Bug: angleproject:4889
Bug: angleproject:6210
Change-Id: I486342702977c8114e90073b97183aba115a8b2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3115140
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
ANGLE runs hundreds of thousands of tests on every change before it lands in the tree. We scale our pre-commit and post-commit testing to many machines using Chromium Swarming. Our testing setup heavily leverages existing work in Chromium. We also run compile-only Standalone Testing that does not depend on a Chromium checkout.
Also see the documentation on ANGLE Wrangling for more info.
See the pre-commit try waterfall here:
https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders
We currently run pre-commit tests on:
Looking at an example build shows how tests are split up between machines. See for example:
https://ci.chromium.org/ui/p/angle/builders/ci/mac-rel/8123/overview
This build ran 68 test steps across 3 GPU families. In some cases (e.g.
angle_deqp_gles3_metal_tests) the test is split up between multiple machines to
run faster (in this case 2 different machines at once). This build took 23
minutes to complete 72 minutes of real automated testing.
For more details on running and working with our test sets see the docs in Contributing Code.
In addition to the ANGLE try bots using Chrome, and the GPU.FYI bots, ANGLE has standalone testing on the Chrome infrastructure. Currently these tests are compile-only. This page is for maintaining the configurations that don’t use Chromium. Also see the main instructions for ANGLE Wrangling.
It’s the ANGLE team’s responsibility for maintaining this testing infrastructure. The bot configurations live in four different repos and six branches.
Continuous builders for every ANGLE revision are found on the CI console:
https://ci.chromium.org/p/angle/g/ci/console
Try jobs from pre-commit builds are found on the builders console:
https://ci.chromium.org/p/angle/g/try/builders
bugs.chromium.org/p/chromium/issues/entry?template=Build+Infrastructure:
chrome-internal.googlesource.com/infradata/config:
configs/chromium-swarm/starlark/bots/angle.star with either Mac slaves requested in the previous step or increase the amount of Windows or Linux GCEs.
chromium.googlesource.com/chromium/tools/build:
scripts/slave/recipes/angle.py with new the config. ./scripts/slave/recipes.py test train to update checked-in golden files. This might no longer be necessary.
chromium.googlesource.com/angle/angle:
infra/config/global/cr-buildbucket.cfg to add the new builder (to ci and try), and set the new config option. infra/config/global/luci-milo.cfg to make the builders show up on the ci and try waterfalls. infra/config/global/luci-scheduler.cfg to make the builders trigger on new commits or try jobs respectively. infra/config/global/commit-queue.cfg to add the builder to the default CQ jobs (if desired). There are other places where configuration for ANGLE infra lives. These are files that we shouldn’t need to modify very often:
chrome-internal.googlesource.com/infradata/config:
configs/luci-token-server/service_accounts.cfg (service account names) configs/chromium-swarm/pools.cfg (swarming pools)
chromium.googlesource.com/chromium/tools/depot_tools:
recipes/recipe_modules/gclient/config.py (gclient config)