Restore ?worker and ?worker=1 to mean ?worker=dedicated (take 2) (#3570)

* (Clean reland) "Restore ?worker and ?worker=1 to mean ?worker=dedicated (#3485)"

(Clean except for removing the cache hash changes.)

This reverts commit 68753bbc67.

* Use nullable options instead of empty string
This commit is contained in:
Kai Ninomiya 2024-04-01 18:53:14 -07:00 committed by GitHub
parent 2f0de1ee39
commit 71d872b29d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 174 additions and 149 deletions

View file

@ -56,7 +56,7 @@ The following url parameters change how the harness runs:
- `runnow=1` runs all matching tests on page load.
- `debug=1` enables verbose debug logging from tests.
- `worker=dedicated` runs the tests on a dedicated worker instead of the main thread.
- `worker=dedicated` (or `worker` or `worker=1`) runs the tests on a dedicated worker instead of the main thread.
- `worker=shared` runs the tests on a shared worker instead of the main thread.
- `worker=service` runs the tests on a service worker instead of the main thread.
- `power_preference=low-power` runs most tests passing `powerPreference: low-power` to `requestAdapter`

View file

@ -1,5 +1,5 @@
import { TestParams } from '../../framework/fixture.js';
import { optionString } from '../../runtime/helper/options.js';
import { optionWorkerMode } from '../../runtime/helper/options.js';
import { assert, unreachable } from '../../util/util.js';
import { Expectation } from '../logging/result.js';
@ -193,7 +193,7 @@ Expectation should be of the form path/to/cts.https.html?debug=0&q=suite:test_pa
);
const params = expectationURL.searchParams;
if (optionString('worker', params) !== optionString('worker', wptURL.searchParams)) {
if (optionWorkerMode('worker', params) !== optionWorkerMode('worker', wptURL.searchParams)) {
continue;
}

View file

@ -1,3 +1,5 @@
import { unreachable } from '../../util/util.js';
let windowURL: URL | undefined = undefined;
function getWindowURL() {
if (windowURL === undefined) {
@ -6,6 +8,7 @@ function getWindowURL() {
return windowURL;
}
/** Parse a runner option that is always boolean-typed. False if missing or '0'. */
export function optionEnabled(
opt: string,
searchParams: URLSearchParams = getWindowURL().searchParams
@ -14,33 +17,54 @@ export function optionEnabled(
return val !== null && val !== '0';
}
/** Parse a runner option that is string-typed. If the option is missing, returns `null`. */
export function optionString(
opt: string,
searchParams: URLSearchParams = getWindowURL().searchParams
): string {
return searchParams.get(opt) || '';
): string | null {
return searchParams.get(opt);
}
/** Runtime modes for running tests in different types of workers. */
export type WorkerMode = 'dedicated' | 'service' | 'shared';
/** Parse a runner option for different worker modes (as in `?worker=shared`). Null if no worker. */
export function optionWorkerMode(
opt: string,
searchParams: URLSearchParams = getWindowURL().searchParams
): WorkerMode | null {
const value = searchParams.get(opt);
if (value === null || value === '0') {
return null;
} else if (value === 'service') {
return 'service';
} else if (value === 'shared') {
return 'shared';
} else if (value === '' || value === '1' || value === 'dedicated') {
return 'dedicated';
}
unreachable('invalid worker= option value');
}
/**
* The possible options for the tests.
*/
export interface CTSOptions {
worker?: 'dedicated' | 'shared' | 'service' | '';
worker: WorkerMode | null;
debug: boolean;
compatibility: boolean;
forceFallbackAdapter: boolean;
unrollConstEvalLoops: boolean;
powerPreference: GPUPowerPreference | '';
powerPreference: GPUPowerPreference | null;
logToWebSocket: boolean;
}
export const kDefaultCTSOptions: CTSOptions = {
worker: '',
worker: null,
debug: true,
compatibility: false,
forceFallbackAdapter: false,
unrollConstEvalLoops: false,
powerPreference: '',
powerPreference: null,
logToWebSocket: false,
};
@ -49,8 +73,8 @@ export const kDefaultCTSOptions: CTSOptions = {
*/
export interface OptionInfo {
description: string;
parser?: (key: string, searchParams?: URLSearchParams) => boolean | string;
selectValueDescriptions?: { value: string; description: string }[];
parser?: (key: string, searchParams?: URLSearchParams) => boolean | string | null;
selectValueDescriptions?: { value: string | null; description: string }[];
}
/**
@ -65,9 +89,9 @@ export type OptionsInfos<Type> = Record<keyof Type, OptionInfo>;
export const kCTSOptionsInfo: OptionsInfos<CTSOptions> = {
worker: {
description: 'run in a worker',
parser: optionString,
parser: optionWorkerMode,
selectValueDescriptions: [
{ value: '', description: 'no worker' },
{ value: null, description: 'no worker' },
{ value: 'dedicated', description: 'dedicated worker' },
{ value: 'shared', description: 'shared worker' },
{ value: 'service', description: 'service worker' },
@ -81,7 +105,7 @@ export const kCTSOptionsInfo: OptionsInfos<CTSOptions> = {
description: 'set default powerPreference for some tests',
parser: optionString,
selectValueDescriptions: [
{ value: '', description: 'default' },
{ value: null, description: 'default' },
{ value: 'low-power', description: 'low-power' },
{ value: 'high-performance', description: 'high-performance' },
],
@ -110,7 +134,7 @@ function getOptionsInfoFromSearchString<Type extends CTSOptions>(
searchString: string
): Type {
const searchParams = new URLSearchParams(searchString);
const optionValues: Record<string, boolean | string> = {};
const optionValues: Record<string, boolean | string | null> = {};
for (const [optionName, info] of Object.entries(optionsInfos)) {
const parser = info.parser || optionEnabled;
optionValues[optionName] = parser(camelCaseToSnakeCase(optionName), searchParams);

View file

@ -5,7 +5,7 @@ import { TestQueryWithExpectation } from '../../internal/query/query.js';
import { timeout } from '../../util/timeout.js';
import { assert } from '../../util/util.js';
import { CTSOptions, kDefaultCTSOptions } from './options.js';
import { CTSOptions, WorkerMode, kDefaultCTSOptions } from './options.js';
import { WorkerTestRunRequest } from './utils_worker.js';
/** Query all currently-registered service workers, and unregister them. */
@ -28,7 +28,7 @@ class TestBaseWorker {
protected readonly ctsOptions: CTSOptions;
protected readonly resolvers = new Map<string, (result: LiveTestCaseResult) => void>();
constructor(worker: CTSOptions['worker'], ctsOptions?: CTSOptions) {
constructor(worker: WorkerMode, ctsOptions?: CTSOptions) {
this.ctsOptions = { ...(ctsOptions || kDefaultCTSOptions), ...{ worker } };
}

View file

@ -57,10 +57,16 @@ const logger = new Logger();
setBaseResourcePath('../out/resources');
const dedicatedWorker =
options.worker === 'dedicated' ? new TestDedicatedWorker(options) : undefined;
const sharedWorker = options.worker === 'shared' ? new TestSharedWorker(options) : undefined;
const serviceWorker = options.worker === 'service' ? new TestServiceWorker(options) : undefined;
const testWorker =
options.worker === null
? null
: options.worker === 'dedicated'
? new TestDedicatedWorker(options)
: options.worker === 'shared'
? new TestSharedWorker(options)
: options.worker === 'service'
? new TestServiceWorker(options)
: unreachable();
const autoCloseOnPass = document.getElementById('autoCloseOnPass') as HTMLInputElement;
const resultsVis = document.getElementById('resultsVis')!;
@ -173,12 +179,8 @@ function makeCaseHTML(t: TestTreeLeaf): VisualizedSubtree {
const [rec, res] = logger.record(name);
caseResult = res;
if (dedicatedWorker) {
await dedicatedWorker.run(rec, name);
} else if (sharedWorker) {
await sharedWorker.run(rec, name);
} else if (serviceWorker) {
await serviceWorker.run(rec, name);
if (testWorker) {
await testWorker.run(rec, name);
} else {
await t.run(rec);
}
@ -515,13 +517,11 @@ function makeTreeNodeHeaderHTML(
// Collapse s:f:t:* or s:f:t:c by default.
let lastQueryLevelToExpand: TestQueryLevel = 2;
type ParamValue = string | undefined | null | boolean | string[];
/**
* Takes an array of string, ParamValue and returns an array of pairs
* of [key, value] where value is a string. Converts boolean to '0' or '1'.
*/
function keyValueToPairs([k, v]: [string, ParamValue]): [string, string][] {
function keyValueToPairs([k, v]: [string, boolean | string | null]): [string, string][] {
const key = camelCaseToSnakeCase(k);
if (typeof v === 'boolean') {
return [[key, v ? '1' : '0']];
@ -542,9 +542,9 @@ function keyValueToPairs([k, v]: [string, ParamValue]): [string, string][] {
* @param params Some object with key value pairs.
* @returns a search string.
*/
function prepareParams(params: Record<string, ParamValue>): string {
function prepareParams(params: Record<string, boolean | string | null>): string {
const pairsArrays = Object.entries(params)
.filter(([, v]) => !!v)
.filter(([, v]) => !(v === false || v === null || v === '0'))
.map(keyValueToPairs);
const pairs = pairsArrays.flat();
return new URLSearchParams(pairs).toString();
@ -552,7 +552,7 @@ function prepareParams(params: Record<string, ParamValue>): string {
// This is just a cast in one place.
export function optionsToRecord(options: CTSOptions) {
return options as unknown as Record<string, boolean | string>;
return options as unknown as Record<string, boolean | string | null>;
}
/**
@ -612,15 +612,15 @@ void (async () => {
};
const createSelect = (optionName: string, info: OptionInfo) => {
const select = $('<select>').on('change', function () {
optionValues[optionName] = (this as HTMLInputElement).value;
const select = $('<select>').on('change', function (this: HTMLSelectElement) {
optionValues[optionName] = JSON.parse(this.value);
updateURLsWithCurrentOptions();
});
const currentValue = optionValues[optionName];
for (const { value, description } of info.selectValueDescriptions!) {
$('<option>')
.text(description)
.val(value)
.val(JSON.stringify(value))
.prop('selected', value === currentValue)
.appendTo(select);
}

View file

@ -8,7 +8,7 @@ import { parseQuery } from '../internal/query/parseQuery.js';
import { parseExpectationsForTestQuery, relativeQueryString } from '../internal/query/query.js';
import { assert } from '../util/util.js';
import { optionEnabled, optionString } from './helper/options.js';
import { optionEnabled, optionWorkerMode } from './helper/options.js';
import { TestDedicatedWorker, TestServiceWorker, TestSharedWorker } from './helper/test_worker.js';
// testharness.js API (https://web-platform-tests.org/writing-tests/testharness-api.html)
@ -31,7 +31,7 @@ setup({
});
void (async () => {
const workerString = optionString('worker');
const workerString = optionWorkerMode('worker');
const dedicatedWorker = workerString === 'dedicated' ? new TestDedicatedWorker() : undefined;
const sharedWorker = workerString === 'shared' ? new TestSharedWorker() : undefined;
const serviceWorker = workerString === 'service' ? new TestServiceWorker() : undefined;

View file

@ -1,110 +1,110 @@
{
"webgpu/shader/execution/binary/af_addition.bin": "cb4172d4",
"webgpu/shader/execution/binary/af_logical.bin": "4ab46b37",
"webgpu/shader/execution/binary/af_division.bin": "e81d378b",
"webgpu/shader/execution/binary/af_matrix_addition.bin": "f9ff547c",
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "7cac5e7d",
"webgpu/shader/execution/binary/af_multiplication.bin": "99b69f0b",
"webgpu/shader/execution/binary/af_remainder.bin": "5ff9848",
"webgpu/shader/execution/binary/af_subtraction.bin": "47ee43a7",
"webgpu/shader/execution/binary/f16_addition.bin": "af7b40c7",
"webgpu/shader/execution/binary/f16_logical.bin": "9c6c1e6e",
"webgpu/shader/execution/binary/f16_division.bin": "3c33577",
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "8b06c098",
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "42d84676",
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "e57d6337",
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "8d0d5786",
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "4bd1d55c",
"webgpu/shader/execution/binary/f16_multiplication.bin": "5b79a06c",
"webgpu/shader/execution/binary/f16_remainder.bin": "56c6fd13",
"webgpu/shader/execution/binary/f16_subtraction.bin": "5e2a15de",
"webgpu/shader/execution/binary/f32_addition.bin": "3fa55b3e",
"webgpu/shader/execution/binary/f32_logical.bin": "88147642",
"webgpu/shader/execution/binary/f32_division.bin": "9b820517",
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "3774d950",
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "fa3c5bbe",
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "dd1f8ac6",
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "b5fb0367",
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "2395ac7f",
"webgpu/shader/execution/binary/f32_multiplication.bin": "83dd7d17",
"webgpu/shader/execution/binary/f32_remainder.bin": "20fb01b8",
"webgpu/shader/execution/binary/f32_subtraction.bin": "c2f781e5",
"webgpu/shader/execution/binary/i32_arithmetic.bin": "5da3948d",
"webgpu/shader/execution/binary/i32_comparison.bin": "de613ac3",
"webgpu/shader/execution/binary/u32_arithmetic.bin": "804d316d",
"webgpu/shader/execution/binary/u32_comparison.bin": "c80cabe7",
"webgpu/shader/execution/abs.bin": "142436dc",
"webgpu/shader/execution/acos.bin": "e1d3ab2",
"webgpu/shader/execution/acosh.bin": "924df3d9",
"webgpu/shader/execution/asin.bin": "dd90fae0",
"webgpu/shader/execution/asinh.bin": "6a7e280a",
"webgpu/shader/execution/atan.bin": "764b9f74",
"webgpu/shader/execution/atan2.bin": "66d9b08d",
"webgpu/shader/execution/atanh.bin": "c5144da7",
"webgpu/shader/execution/bitcast.bin": "760ed7da",
"webgpu/shader/execution/ceil.bin": "a331d744",
"webgpu/shader/execution/clamp.bin": "f13d866b",
"webgpu/shader/execution/cos.bin": "2b1f4bba",
"webgpu/shader/execution/cosh.bin": "628443ef",
"webgpu/shader/execution/cross.bin": "3bb8195d",
"webgpu/shader/execution/degrees.bin": "ea897bb9",
"webgpu/shader/execution/determinant.bin": "31587e",
"webgpu/shader/execution/distance.bin": "63d3ff55",
"webgpu/shader/execution/dot.bin": "a7a2589d",
"webgpu/shader/execution/exp.bin": "939d087",
"webgpu/shader/execution/exp2.bin": "4cee4ad0",
"webgpu/shader/execution/faceForward.bin": "b0d2c5d5",
"webgpu/shader/execution/floor.bin": "369733db",
"webgpu/shader/execution/fma.bin": "af7f3d",
"webgpu/shader/execution/fract.bin": "67a75ead",
"webgpu/shader/execution/frexp.bin": "ea298216",
"webgpu/shader/execution/inverseSqrt.bin": "5374fbb9",
"webgpu/shader/execution/ldexp.bin": "713c1458",
"webgpu/shader/execution/length.bin": "6ebfc109",
"webgpu/shader/execution/log.bin": "adc78863",
"webgpu/shader/execution/log2.bin": "6c660d3",
"webgpu/shader/execution/max.bin": "74cd5ff7",
"webgpu/shader/execution/min.bin": "20a5be75",
"webgpu/shader/execution/mix.bin": "35295417",
"webgpu/shader/execution/modf.bin": "72d18336",
"webgpu/shader/execution/normalize.bin": "ef7dea0f",
"webgpu/shader/execution/pack2x16float.bin": "4f856f75",
"webgpu/shader/execution/pow.bin": "924cca64",
"webgpu/shader/execution/quantizeToF16.bin": "6879a28c",
"webgpu/shader/execution/radians.bin": "99f05ef6",
"webgpu/shader/execution/reflect.bin": "b34633e5",
"webgpu/shader/execution/refract.bin": "b4020fc9",
"webgpu/shader/execution/round.bin": "72c6e2ad",
"webgpu/shader/execution/saturate.bin": "44aa009c",
"webgpu/shader/execution/sign.bin": "7b5d53e9",
"webgpu/shader/execution/sin.bin": "21be86ed",
"webgpu/shader/execution/sinh.bin": "3100e9a1",
"webgpu/shader/execution/smoothstep.bin": "a95195f3",
"webgpu/shader/execution/sqrt.bin": "c68b086e",
"webgpu/shader/execution/step.bin": "d57ef060",
"webgpu/shader/execution/tan.bin": "558d59db",
"webgpu/shader/execution/tanh.bin": "11c64c02",
"webgpu/shader/execution/transpose.bin": "670dd7e8",
"webgpu/shader/execution/trunc.bin": "cbd1b19a",
"webgpu/shader/execution/unpack2x16float.bin": "28ce038e",
"webgpu/shader/execution/unpack2x16snorm.bin": "28ffe694",
"webgpu/shader/execution/unpack2x16unorm.bin": "223a8aa3",
"webgpu/shader/execution/unpack4x8snorm.bin": "243752df",
"webgpu/shader/execution/unpack4x8unorm.bin": "5c1cd945",
"webgpu/shader/execution/unary/af_arithmetic.bin": "6bf0b9a6",
"webgpu/shader/execution/unary/af_assignment.bin": "bc5d5f22",
"webgpu/shader/execution/unary/bool_conversion.bin": "c9136cff",
"webgpu/shader/execution/unary/f16_arithmetic.bin": "db299c67",
"webgpu/shader/execution/unary/f16_conversion.bin": "a110dce0",
"webgpu/shader/execution/unary/f32_arithmetic.bin": "90160a4f",
"webgpu/shader/execution/unary/f32_conversion.bin": "edaca050",
"webgpu/shader/execution/unary/i32_arithmetic.bin": "bef73c95",
"webgpu/shader/execution/unary/i32_conversion.bin": "ec83116a",
"webgpu/shader/execution/unary/u32_conversion.bin": "5cf9eb67",
"webgpu/shader/execution/unary/ai_assignment.bin": "a4545c36",
"webgpu/shader/execution/binary/ai_arithmetic.bin": "ac744b6a",
"webgpu/shader/execution/unary/ai_arithmetic.bin": "a7527c0f",
"webgpu/shader/execution/binary/af_matrix_matrix_multiplication.bin": "1b8e7eca",
"webgpu/shader/execution/binary/af_matrix_scalar_multiplication.bin": "f4225122",
"webgpu/shader/execution/binary/af_matrix_vector_multiplication.bin": "f4c1e7a8"
"webgpu/shader/execution/binary/af_addition.bin": "b022f46c",
"webgpu/shader/execution/binary/af_logical.bin": "72dabe85",
"webgpu/shader/execution/binary/af_division.bin": "b6124788",
"webgpu/shader/execution/binary/af_matrix_addition.bin": "730a1448",
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "2a24e450",
"webgpu/shader/execution/binary/af_multiplication.bin": "b2a8c82",
"webgpu/shader/execution/binary/af_remainder.bin": "b161b16",
"webgpu/shader/execution/binary/af_subtraction.bin": "5b5a640f",
"webgpu/shader/execution/binary/f16_addition.bin": "e796ca6",
"webgpu/shader/execution/binary/f16_logical.bin": "f490e3c2",
"webgpu/shader/execution/binary/f16_division.bin": "572e2a4c",
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "89a22642",
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "856dade1",
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "16625b02",
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "f8973c41",
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "81ffb321",
"webgpu/shader/execution/binary/f16_multiplication.bin": "16e55d7d",
"webgpu/shader/execution/binary/f16_remainder.bin": "61b169d1",
"webgpu/shader/execution/binary/f16_subtraction.bin": "b24c051f",
"webgpu/shader/execution/binary/f32_addition.bin": "94459204",
"webgpu/shader/execution/binary/f32_logical.bin": "e29d59d9",
"webgpu/shader/execution/binary/f32_division.bin": "91496c9f",
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "c43e676d",
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "2e8cc15",
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "41b8897d",
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "ec3d4bb0",
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "6986af55",
"webgpu/shader/execution/binary/f32_multiplication.bin": "28814138",
"webgpu/shader/execution/binary/f32_remainder.bin": "d260201e",
"webgpu/shader/execution/binary/f32_subtraction.bin": "fb0a8393",
"webgpu/shader/execution/binary/i32_arithmetic.bin": "d65cbcbc",
"webgpu/shader/execution/binary/i32_comparison.bin": "49a58ed3",
"webgpu/shader/execution/binary/u32_arithmetic.bin": "955705d8",
"webgpu/shader/execution/binary/u32_comparison.bin": "51f08426",
"webgpu/shader/execution/abs.bin": "877fa896",
"webgpu/shader/execution/acos.bin": "e4c295ed",
"webgpu/shader/execution/acosh.bin": "5790438d",
"webgpu/shader/execution/asin.bin": "b48588e3",
"webgpu/shader/execution/asinh.bin": "57c09680",
"webgpu/shader/execution/atan.bin": "199f5535",
"webgpu/shader/execution/atan2.bin": "7aa7e205",
"webgpu/shader/execution/atanh.bin": "ae3224c3",
"webgpu/shader/execution/bitcast.bin": "7cf3c961",
"webgpu/shader/execution/ceil.bin": "426b4ae",
"webgpu/shader/execution/clamp.bin": "6d6876a4",
"webgpu/shader/execution/cos.bin": "7dd55fa8",
"webgpu/shader/execution/cosh.bin": "72151243",
"webgpu/shader/execution/cross.bin": "a89b58f1",
"webgpu/shader/execution/degrees.bin": "5e782625",
"webgpu/shader/execution/determinant.bin": "8fc0b318",
"webgpu/shader/execution/distance.bin": "94c02ee2",
"webgpu/shader/execution/dot.bin": "146af272",
"webgpu/shader/execution/exp.bin": "b586f3af",
"webgpu/shader/execution/exp2.bin": "cdb8f88b",
"webgpu/shader/execution/faceForward.bin": "58dc6088",
"webgpu/shader/execution/floor.bin": "ab55a7e1",
"webgpu/shader/execution/fma.bin": "474fbb07",
"webgpu/shader/execution/fract.bin": "936af85e",
"webgpu/shader/execution/frexp.bin": "505608db",
"webgpu/shader/execution/inverseSqrt.bin": "df458cff",
"webgpu/shader/execution/ldexp.bin": "6e1654fc",
"webgpu/shader/execution/length.bin": "6acb0137",
"webgpu/shader/execution/log.bin": "938506c2",
"webgpu/shader/execution/log2.bin": "a2b2c951",
"webgpu/shader/execution/max.bin": "364a4a82",
"webgpu/shader/execution/min.bin": "d554c3",
"webgpu/shader/execution/mix.bin": "e449fd1c",
"webgpu/shader/execution/modf.bin": "c4012952",
"webgpu/shader/execution/normalize.bin": "e6cb0eab",
"webgpu/shader/execution/pack2x16float.bin": "4579427",
"webgpu/shader/execution/pow.bin": "7694efec",
"webgpu/shader/execution/quantizeToF16.bin": "ef4fd5be",
"webgpu/shader/execution/radians.bin": "4c226d7c",
"webgpu/shader/execution/reflect.bin": "2a3a5a48",
"webgpu/shader/execution/refract.bin": "6c780f5f",
"webgpu/shader/execution/round.bin": "9b0d7dba",
"webgpu/shader/execution/saturate.bin": "6ea01b1a",
"webgpu/shader/execution/sign.bin": "407230b",
"webgpu/shader/execution/sin.bin": "7b4a3000",
"webgpu/shader/execution/sinh.bin": "d9ad3b9b",
"webgpu/shader/execution/smoothstep.bin": "916bb5ee",
"webgpu/shader/execution/sqrt.bin": "2bee21d5",
"webgpu/shader/execution/step.bin": "ed607328",
"webgpu/shader/execution/tan.bin": "939f43d9",
"webgpu/shader/execution/tanh.bin": "7a245640",
"webgpu/shader/execution/transpose.bin": "3316ab98",
"webgpu/shader/execution/trunc.bin": "8dc1ca11",
"webgpu/shader/execution/unpack2x16float.bin": "14fbc1bb",
"webgpu/shader/execution/unpack2x16snorm.bin": "b0ba4d52",
"webgpu/shader/execution/unpack2x16unorm.bin": "8b843a60",
"webgpu/shader/execution/unpack4x8snorm.bin": "e0a14dc9",
"webgpu/shader/execution/unpack4x8unorm.bin": "ca1e0cf3",
"webgpu/shader/execution/unary/af_arithmetic.bin": "c9248fdb",
"webgpu/shader/execution/unary/af_assignment.bin": "3fb413d2",
"webgpu/shader/execution/unary/bool_conversion.bin": "dd407fe0",
"webgpu/shader/execution/unary/f16_arithmetic.bin": "893c0051",
"webgpu/shader/execution/unary/f16_conversion.bin": "8399dcbc",
"webgpu/shader/execution/unary/f32_arithmetic.bin": "957a857e",
"webgpu/shader/execution/unary/f32_conversion.bin": "314c8766",
"webgpu/shader/execution/unary/i32_arithmetic.bin": "8b011e78",
"webgpu/shader/execution/unary/i32_conversion.bin": "f2322e5f",
"webgpu/shader/execution/unary/u32_conversion.bin": "185ec03a",
"webgpu/shader/execution/unary/ai_assignment.bin": "6a99b432",
"webgpu/shader/execution/binary/ai_arithmetic.bin": "4f5e5370",
"webgpu/shader/execution/unary/ai_arithmetic.bin": "5eb4d715",
"webgpu/shader/execution/binary/af_matrix_matrix_multiplication.bin": "d02395d6",
"webgpu/shader/execution/binary/af_matrix_scalar_multiplication.bin": "c84642b4",
"webgpu/shader/execution/binary/af_matrix_vector_multiplication.bin": "bf15697e"
}

View file

@ -1,9 +1,10 @@
export const description = `
Tests WebGPU is available in a dedicated worker and a shared worker.
Note: The CTS test can be run respectively in a dedicated worker and a shared worker by
passing in worker=dedicated and worker=shared as a query parameter. These tests
are specifically to check that WebGPU is available in a dedicated worker and a shared worker.
Note: Any CTS test can be run in a worker by passing ?worker=dedicated, ?worker=shared,
?worker=service as a query parameter. The tests in this file are specifically to check
that WebGPU is available in each worker type. When run in combination with a ?worker flag,
they will test workers created from other workers (where APIs exist to do so).
TODO[2]: Figure out how to make these tests run in service workers (not actually
important unless service workers gain the ability to launch other workers).