dawn-cmake/webgpu-cts
Austin Eng 868efb9739 Roll third_party/webgpu-cts/ 0557875f3..3030a7bb2 (30 commits)
Regenerated:
 - expectations.txt
 - ts_sources.txt
 - test_list.txt
 - cache_list.txt
 - resource_files.txt
 - webtest .html files

https: //chromium.googlesource.com/external/github.com/gpuweb/cts/+log/0557875f3982..3030a7bb2c69
 - 3030a7 Implement `frexp` f32 tests (#2336)
 - 5be43e Implement `determinant` f32 tests (#2321)
 - 1c53bf Adds stale adapter tests (#2387)
 - 176741 Test destroyed buffers and textures on submit
 - 4bd39d Implement absolute error for `acos` intervals (#2372)
 - d56144 Implement absolute error for `asin` intervals (#2346)
 - 7e411f shader/execution: Flip eval order of assignment
 - e6edef shader/execution: Port evaluation order tests to flow_control
 - e45de6 Add isZeroCopy cases for ExternalTexture (#2338)
 - 6c2b83 shader/execution:  Add more complex flow control tests
 - 8c8d89 Implement `bool` builtin tests (#2327)
 - d18b3a Implement `i32` builtin tests (#2379)
 - dfac60 Implement `u32` builtin tests (#2344)
 - 9179cd Test import GPUExternalTexture from destroyed device (#2351)
 - fb969c Sync keyword/reserved word list. (#2383)
 - 685049 Implement `f32` builtin tests (#2382)
 - 0e3229 shader/execution: Add 'preventValueOptimizations' case parameterization
 - ec5ad7 Start adding queue validation tests for buffers and textures
 - a1efad Put the same URL in all "Open" links (#2316)
 - f99f92 Updates max*BufferBindingSize limit tests to adhere to maxBufferSize (#2339)
 - d88504 Add validation tests on BGRA8Unorm canvas with StorageBinding usage (#2348)
 - 8d827d Add validation test for maxComputeXXX
 - e613a8 Rename maximumLimit to adapterLimit and related changes
 - 7b1df1 Update src/webgpu/api/validation/capability_checks/limits/maxBindingsPerBindGroup.spec.ts
 - 188203 Check maxBindingsPerBindGroup limit matches spec limits
 - a28619 Fix writable binding aliasing in webgpu:api,validation,resource_usages,texture,in_pass_encoder (#2341)
 - c54778 Fix wrong conditions and missing formats for maxAttachmentState tests. (#2343)
 - 6b01d8 Changes for depthWriteEnabled/depthCompare/depthClearValue being required (#2342)
 - b61662 Require npm >=8.5.2 (#2340)
 - 785335 Generate OOM error using createTexture (#2337)
Change-Id: Iebefb8ee703437252e44040fd74310a52d079dc4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/123660
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2023-03-13 20:22:02 +00:00
..
scripts Generate and load CTS cache 2022-11-21 15:16:51 +00:00
webtests Roll third_party/webgpu-cts/ 9fbed0099..3f9b09b36 (8 commits) 2023-01-24 20:32:05 +00:00
BUILD.gn Add test list to deps 2022-08-11 15:16:38 +00:00
OWNERS Set OWNERS to * on .txt files needed for CTS rolls 2023-02-13 10:17:04 +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/ 0557875f3..3030a7bb2 (30 commits) 2023-03-13 20:22:02 +00:00
test_page.html Change base directory for CTS runner, part 2 2022-06-24 18:50:19 +00:00
test_runner.js Roll third_party/gpuweb to 1f8a05a 2023-03-10 11:06:36 +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.