dawn-cmake/webgpu-cts
Kai Ninomiya 452d6e3cc3 Roll third_party/webgpu-cts/ 09447faf1..0673bb68c (48 commits)
Regenerated:
 - expectations.txt
 - ts_sources.txt
 - test_list.txt
 - cache_list.txt
 - resource_files.txt
 - webtest .html files


09447faf1a..0673bb68c2
 - 0673bb Fix silencing of DOMExceptions (#2102)
 - d85507 Test beginComputePass/RenderPass after encoder.finish() in call_after_successful_finish (#2093)
 - 861b20 Update kMaxQueryCount to 4096 (#2104)
 - 030f44 Add some progress
 - 62dbcc Support dark mode
 - 6a7030 Buffer.mapAsync pending map error shouldn't be a validation error (#2080)
 - 44173e Test all stencil formats, and address some nits in depth_bias/stencil tests (#2096)
 - 172002 op: Update 'stencil_compare_func' test in stencil.spec.ts (#2094)
 - f12820 op: Implement 'depth_bias_24bit_format' test in depth_bias.spec.ts (#2095)
 - 5f2708 Add earlyRejection parameter to testMapAsyncCall() (#2052)
 - dcdcb3 op: Implement 'stencil_depthFailOp_operation' test in stencil.spec.ts (#2092)
 - d13c42 op: Update 'stencil_test_fail' test (#2091)
 - 5daf3c Fix wrong _errorLine in operation/shader_module/compilation_info.spec.ts (#2088)
 - 47d19f op: Introduce depth_bias.spec.ts file with a 'depth_bias' test (#2075)
 - 7a679a Prefix subcase recorder error stacks with the subcase name (#2086)
 - 17522c fix requestAdapter test.
 - 5a5838 Implement CTS requestAdapter test
 - e583fa Add 'skipUndefined' Comparator (#2082)
 - e0e735 Remove usage of Case Cache in `pack2x16float`
 - eb5794 Update copyTextureToTexture tests to allow both encodings of -1 for 8-byte snorm formats (#2073)
 - 516d19 Expect DataCloneError when transferring a detached mapped ArrayBuffer (#2076)
 - 8985b5 Filter inputs that will cause const-eval to fail validation due to OOB
 - 216c8e Remove attempting to emit infinities in WGSL (#2059)
 - b99b81 Adds explicit check that mapAsync rejects when buffer is destroyed. (#2069)
 - ae20ff Add code coverage collection feature to the server
 - 1ff6ae Implement generate*Cases functions and use them (#2062)
 - 7e99a7 op: Implement 'depth_test_fail' test in depth.spec.ts (#2067)
 - b701c5 Add val:*_pipeline,overrides,value,type_error/validation_error (#2061)
 - b6f758 op: Implement 'stencil_reference_initialized' test in stencil.spec.ts (#2063)
 - 89bf5e Also test depthWriteEnabled:true in depth_write_disabled (#2065)
 - 40e3ae op: Implement 'depth_disabled' test in depth.spec.ts (#2050)
 - 677ece op: Implement 'depth_write_disabled' test in depth.spec.ts (#2024)
 - a6b97c Remove infinities from all f32 test inputs (#2056)
 - 41a1e5 Replace usage of vector inputs with fullF32Range for arithmetic tests (#2053)
 - 16bb08 wgsl: Add tests for preservation of padding bytes (#2051)
 - 7d16f8 op: Implmenet 'stencil_pass_operation' test in stencil.spec.ts (#2055)
 - dcc430 op: Implement stencil_read_write_mask test in stencil.spec.ts (#2043)
 - f539a2 op: Implement stencil_fail_operation test in stencil.spec.ts (#2044)
 - 8041ca update deps for various packages (#2041)
 - 09b30e op: Implement 'stencil_compare_func' test in stencil.spec.ts (#2032)
 - c6efbf Except a TypeError when transferring a mapped ArrayBuffer (#2019)
 - dd4316 op: Add more parameters to 'color_write_mask,channel_work' test (#2025)
 - b66a1a Replace calls to F32Interval constructor with toF32Interval (#2037)
 - fdab6c Clean up a couple of .map in f32_interval.spec.ts tests (#2038)
 - 40abc0 Test buffer.mapAsync() early rejection (#2033)
 - 25ddea Handle inputs that are arrays in `cartesianProduct` (#2031)
 - 0e790f Only try to generate errors for testable error filters (#2034)
 - 57304e Fix workgroup array size limit validation test (#2035)

Created with './tools/run cts roll'

Change-Id: I9b6e2b8526fc62acbf915b5e8153d32ae02c7a14
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/+/116420
Auto-Submit: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2023-01-05 10:59:39 +00:00
..
scripts Generate and load CTS cache 2022-11-21 15:16:51 +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
PRESUBMIT.py Reland "Add expectations.txt validation to presubmit" 2022-12-08 21:57:55 +00:00
README.md Update CTS docs 2022-09-14 17:13:17 +00:00
expectations.txt Roll third_party/webgpu-cts/ 09447faf1..0673bb68c (48 commits) 2023-01-05 10:59:39 +00:00
test_page.html Change base directory for CTS runner, part 2 2022-06-24 18:50:19 +00:00
test_runner.js Generate and load CTS cache 2022-11-21 15:16:51 +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.