dawn-cmake/webgpu-cts
Ben Clayton 698cd29c77 Roll third_party/webgpu-cts/ 1340d36c8..0439f3ed8 (13 commits)
Update:
 - expectations.txt
 - ts_sources.txt
 - resource_files.txt
 - webtest .html files


1340d36c8f..0439f3ed86
 - 0439f3 Fix insertBits tests to not test overflow cases for const input source (#1955)
 - bc24cc Implement `unpack2x16float` tests (#1934)
 - 1c4d99 Properly handle potential FTZ in quantizeToF16 tests (#1947)
 - 0f0cf4 Implement `unpack4x8snorm` tests (#1950)
 - e113fd Update encoder_state.spec.ts
 - cf33c4 val: Add a control case to 'pass_end_invalid_order' test (#1948)
 - 4df655 wgsl: Add robustness tests for builtin shadowing (#1939)
 - 7fc3ca val: Use doCompute,doRender helpers in empty_bind_group_layouts_requires_empty_bind_groups.* tests (#1919)
 - 23834e GPUBuffer.unmap() shouldn't fail even on unmapped or destroyed buffers (#1929)
 - 3bf23a Implement `unpack2x16snorm` tests (#1935)
 - 608c8a Handle error from division in unpack2x16unorm (#1944)
 - da3915 Implement `unpack4x8unorm` tests (#1943)
 - 41a299 Implement `unpack2x16unorm` tests (#1941)

Created with './tools/run cts roll'

Change-Id: Ifa3d71feac10bee37d84b2f444b90c7ef287a6a9
Cq-Include-Trybots: luci.chromium.try:dawn-try-win10-x86-rel,linux-dawn-rel,mac-dawn-rel,win-dawn-rel
Include-Ci-Only-Tests: true
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108141
Kokoro: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-02 15:07:30 +00:00
..
scripts Don't use incremental build in webgpu-cts/scripts/list.py 2022-05-10 18:17:54 +00:00
webtests Add generated webtest .html files 2022-06-10 22:00:33 +00:00
BUILD.gn Add test list to deps 2022-08-11 15:16:38 +00:00
README.md Update CTS docs 2022-09-14 17:13:17 +00:00
expectations.txt Roll third_party/webgpu-cts/ 1340d36c8..0439f3ed8 (13 commits) 2022-11-02 15:07:30 +00:00
test_page.html Change base directory for CTS runner, part 2 2022-06-24 18:50:19 +00:00
test_runner.js CTS: set noRaceWithRejectOnTimeout 2022-09-13 22:16:42 +00:00
worker_test_globs.txt Move WebGPU worker globs 2022-07-01 01:20:14 +00:00

README.md

Running the WebGPU CTS Locally with Chrome

Running the WebGPU CTS locally with Chrome requires a Chromium checkout.

Follow these instructions for checking out and building Chrome. You'll also need to build the telemetry_gpu_integration_test target.

At the root of a Chromium checkout, run: ./content/test/gpu/run_gpu_integration_test.py webgpu_cts --browser=exact --browser-executable=path/to/your/chrome-executable

If you don't want to build Chrome, you can still run the CTS, by passing the path to an existing Chrome executable to the --browser-executable argument. However, if you would like to use all harness functionality (symbolizing stack dumps, etc.). You will still need to build the telemetry_gpu_integration_test target.

Useful command-line arguments:

  • --help: See more options and argument documentation.
  • -l: List all tests that would be run.
  • --test-filter: Filter tests.
  • --passthrough --show-stdout: Show browser output. See also --browser-logging-verbosity.
  • --extra-browser-args: Pass extra args to the browser executable.
  • --jobs=N: Run with multiple parallel browser instances.
  • --stable-jobs: Assign tests to each job in a stable order. Used on the bots for consistency and ease of reproduction.
  • --enable-dawn-backend-validation: Enable Dawn's backend validation.
  • --use-webgpu-adapter=[default,swiftshader,compat]: Forwarded to the browser to select a particular WebGPU adapter.

Running a local CTS build on Swarming

Often, it's useful to test changes on Chrome's infrastructure if it's difficult to reproduce a bug locally. To do that, we can package our local build as an "isolate" and upload it to Swarming to run there. This is often much faster than uploading your CL to Gerrit and triggering tryjobs.

Note that since you're doing a local build, you need to be on the same type of machine as the job you'd like to trigger in swarming. To run a job on a Windows bot, you need to build the isolate on Windows.

  1. Build the isolate

    vpython3 tools/mb/mb.py isolate out/Release telemetry_gpu_integration_test

  2. Upload the isolate

    ./tools/luci-go/isolate archive -cas-instance chromium-swarm -i out/Release/telemetry_gpu_integration_test.isolate

    This will output a hash like: 95199eb624d8ddb6ffdfe7a2fc41bc08573aebe3d17363a119cb1e9ca45761ae/734

    Save this hash for use in the next command.

  3. Trigger the swarming job.

    The command structure is as follows:

    ./tools/luci-go/swarming trigger -S https://chromium-swarm.appspot.com <dimensions...> -digest <YOUR_ISOLATE_HASH> -- <command> ...

    Say you want to trigger a job on a Linux Intel bot. It's easiest to check an existing task to see the right args you would use. For example: https://chromium-swarm.appspot.com/task?id=5d552b8def31ab11.

    In the table on the left hand side, you can see the bot's Dimensions. In the Raw Output on the right or below the table, you can see the commands run on this bot. Copying those, you would use:

    ./tools/luci-go/swarming trigger -S https://chromium-swarm.appspot.com -d "pool=chromium.tests.gpu" -d "cpu=x86-64" -d "gpu=8086:9bc5-20.0.8" -d "os=Ubuntu-18.04.6" -digest 95199eb624d8ddb6ffdfe7a2fc41bc08573aebe3d17363a119cb1e9ca45761ae/734 -- vpython3 testing/test_env.py testing/scripts/run_gpu_integration_test_as_googletest.py content/test/gpu/run_gpu_integration_test.py --isolated-script-test-output=${ISOLATED_OUTDIR}/output.json webgpu_cts --browser=release --passthrough -v --show-stdout --extra-browser-args="--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu --enable-features=Vulkan" --total-shards=14 --shard-index=0 --jobs=4 --stable-jobs
    

    The command will output a link to the Swarming task for you to see the results.