tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 3c22eb4d0e0191499dd312f27dc212edf7466b35
parent 26c79c843d7858f1f33e6291649b38f131e972d4
Author: Erich Gubler <erichdongubler@gmail.com>
Date:   Mon,  8 Dec 2025 14:04:02 +0000

Bug 2003208 - test(webgpu): update CTS to ef27c0b88b802ca64677e2c0ed60378951ac6c42 r=webgpu-reviewers,nical

Differential Revision: https://phabricator.services.mozilla.com/D274529

Diffstat:
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/operation/texture_view/texture_component_swizzle.spec.ts | 37+++++++++++++++++++++++++++----------
Mdom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/uniformity/uniformity.spec.ts | 320+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Mdom/webgpu/tests/cts/checkout/standalone/index.html | 2+-
Mdom/webgpu/tests/cts/checkout/tools/gen_version | 2+-
Mdom/webgpu/tests/cts/moz.yaml | 4++--
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/command_buffer/copyTextureToTexture/cts.https.html.ini | 2+-
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/state/device_lost/destroy/cts.https.html.ini | 35+++++++++++++++++++++++++----------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupAdd/cts.https.html.ini | 1+
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini | 6+++---
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini | 8++++++--
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini | 54++++++++++++++++++++++++++++++++++++------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini | 21+++++++++++++++------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini | 45+++++++++++++++++++++++++++++++++++----------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/dedicated.https.html.ini | 10+++++++---
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/shared.https.html.ini | 10++++------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/canvas/cts.https.html.ini | 15+++++++++------
Mtesting/web-platform/mozilla/tests/webgpu/common/internal/version.js | 2+-
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/operation/texture_view/texture_component_swizzle.spec.js | 35++++++++++++++++++++++++++---------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js | 318+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
20 files changed, 853 insertions(+), 164 deletions(-)

diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/texture_view/texture_component_swizzle.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/texture_view/texture_component_swizzle.spec.ts @@ -3,6 +3,18 @@ Operational tests for the 'texture-component-swizzle' feature. Test that: * when the feature is on, swizzling is applied correctly. + +Note: for texture_depth_xxx we only get f32 +What happens in the GPU (at least in Metal) + + 1. we start with [depthOrCompareResult, depthOrCompareResult, depthOrCompareResult, 1] + 2. we then swizzle + 3. we then read the RED channel + +Gather will do this 4 times and give us the result of step 3 in each channel. + +The WebGPU spec says we should be starting with [depthOrCompare, 0, 0, 1] and the +implementation should deal with this. `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; @@ -332,18 +344,17 @@ ${sampledColors.map((c, i) => `${i % 2}, ${(i / 2) | 0}, ${JSON.stringify(c)}`). const testData = [swizzle, otherSwizzle].map(swizzle => { const swizzledColors = readColors.map(readColor => swizzleTexel(readColor, swizzle)); - const expRGBAColor = isBuiltinGather(func) + const expColor = isBuiltinGather(func) ? gather(swizzledColors, channel) + : isSingleChannelInput(input) + ? { + R: swizzledColors[0].R, + G: swizzledColors[0].R, + B: swizzledColors[0].R, + A: swizzledColors[0].R, + } : swizzledColors[0]; - const expColor = - !isBuiltinGather(func) && isSingleChannelInput(input) - ? { - R: expRGBAColor.R, - G: expRGBAColor.R, - B: expRGBAColor.R, - A: expRGBAColor.R, - } - : expRGBAColor; + const expTexelView = TexelView.fromTexelsAsColors(expFormat, _coords => expColor); const textureView = texture.createView({ label: `swizzle texture view(${swizzle})`, @@ -534,6 +545,12 @@ ${testData const uniformValues = new ArrayBuffer(uniformBuffer.size); const asF32 = new Float32Array(uniformValues); asF32.set([tx / texture.width, ty / texture.height]); + t.debug( + () => + `texcoords: ${[...asF32]} tx = ${tx}, ty = ${ty}, size: ${texture.width}, ${ + texture.height + }` + ); t.device.queue.writeBuffer(uniformBuffer, 0, new Uint32Array(uniformValues)); const bindGroup0 = t.device.createBindGroup({ diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/uniformity/uniformity.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/uniformity/uniformity.spec.ts @@ -185,60 +185,296 @@ function generateOp(op: string): string { } } -const kStatementKinds = ['if', 'for', 'while', 'switch', 'break-if'] as const; +const kStatementKinds = [ + 'if', + 'for', + 'while', + 'switch', + 'break-if', + 'loop-always-break-op-inside', + 'loop-always-return-op-inside', + 'loop-always-break-op-continuing', + 'loop-always-return-op-continuing', + 'loop-always-break-op-after', + 'loop-always-return-op-after', + 'for-with-cond-always-break-op-inside', + 'for-with-cond-always-return-op-inside', + 'for-with-cond-always-break-op-after', + 'for-with-cond-always-return-op-after', + 'for-without-cond-always-break-op-inside', + 'for-without-cond-always-return-op-inside', + 'for-without-cond-always-break-op-after', + 'for-without-cond-always-return-op-after', + 'while-always-break-op-inside', + 'while-always-return-op-inside', + 'while-always-break-op-after', + 'while-always-return-op-after', +] as const; type kStatementType = (typeof kStatementKinds)[number]; +type kSnippetInfo = { + // A WGSL code sippet that embeds a condition and operation-operation-under-test + // in a larger construct. + code: string; + // Is the operation-under-test sensitive to the uniformity of the condition? + sensitive: boolean; +}; function generateConditionalStatement( statement: kStatementType, - condition: string, - op: string -): string { - const code = ``; + condition_name: string, + op_name: string +): kSnippetInfo { + const cond = generateCondition(condition_name); + const uniform_cond = generateCondition('uniform_storage_ro'); + const op = generateOp(op_name); switch (statement) { case 'if': { - return `if ${generateCondition(condition)} { - ${generateOp(op)}; - } - `; + return { + sensitive: true, + code: ` + if ${cond} { + ${op}; + }`, + }; } case 'for': { - return `for (; ${generateCondition(condition)};) { - ${generateOp(op)}; - } - `; + return { + sensitive: true, + code: ` + for (; ${cond}; ) { + ${op}; + }`, + }; } case 'while': { - return `while ${generateCondition(condition)} { - ${generateOp(op)}; - } - `; + return { + sensitive: true, + code: ` + while ${cond} { + ${op}; + }`, + }; } case 'switch': { - return `switch u32(${generateCondition(condition)}) { - case 0: { - ${generateOp(op)}; - } - default: { } - } - `; + return { + sensitive: true, + code: ` + switch u32(${cond}) { + case 0: { + ${op}; + } + default: { } + }`, + }; } case 'break-if': { // The initial 'if' prevents the loop from being infinite. Its condition // is uniform, to ensure the first iteration of the the body executes // uniformly. The uniformity of the second iteration depends entirely on // the uniformity of the break-if condition. - return `loop { - if ${generateCondition('uniform_storage_ro')} { break; } - ${generateOp(op)} - continuing { - break if ${generateCondition(condition)}; - } - } - `; + return { + sensitive: true, + code: ` + loop { + if ${uniform_cond} { break; } + ${op} + continuing { + break if ${cond}; + } + }`, + }; + } + case 'loop-always-break-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + break; + if ${cond} { ${op} } + }`, + }; + } + case 'loop-always-return-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + return; + if ${cond} { ${op} } + }`, + }; + } + case 'loop-always-break-op-continuing': { + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + break; + continuing { + if ${cond} { ${op} } + } + }`, + }; + } + case 'loop-always-return-op-continuing': { + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + return; + continuing { + if ${cond} { ${op} } + } + }`, + }; + } + case 'loop-always-break-op-after': { + return { + sensitive: true, + code: ` + loop { + break; + } + if ${cond} { ${op} }`, + }; + } + case 'loop-always-return-op-after': { + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + return; + } + if ${cond} { ${op} }`, + }; + } + case 'for-with-cond-always-break-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ;${uniform_cond}; ) { + break; + if ${cond} { ${op} } + }`, + }; + } + case 'for-with-cond-always-return-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ;${uniform_cond}; ) { + return; + if ${cond} { ${op} } + }`, + }; + } + case 'for-with-cond-always-break-op-after': { + return { + sensitive: true, + code: ` + for ( ;${uniform_cond}; ) { + break; + } + if ${cond} { ${op} }`, + }; + } + case 'for-with-cond-always-return-op-after': { + return { + // Desugars to a loop with a conditional break, + // before reaching the loop. + sensitive: true, + code: ` + for ( ;${uniform_cond}; ) { + return; + } + if ${cond} { ${op} }`, + }; + } + case 'for-without-cond-always-break-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ; ; ) { + break; + if ${cond} { ${op} } + }`, + }; + } + case 'for-without-cond-always-return-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ; ; ) { + return; + if ${cond} { ${op} } + }`, + }; + } + case 'for-without-cond-always-break-op-after': { + return { + sensitive: true, + code: ` + for ( ; ; ) { + break; + } + if ${cond} { ${op} }`, + }; + } + case 'for-without-cond-always-return-op-after': { + return { + // Desugars to a loop without a conditional break. + // So the op is unreachable. + sensitive: false, + code: ` + for ( ; ; ) { + return; + } + if ${cond} { ${op} }`, + }; + } + case 'while-always-break-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + while (${uniform_cond}) { + break; + if ${cond} { ${op} } + }`, + }; + } + case 'while-always-return-op-inside': { + return { + sensitive: false, // The op is unreachable. + code: ` + while (${uniform_cond}) { + return; + if ${cond} { ${op} } + }`, + }; + } + case 'while-always-break-op-after': { + return { + sensitive: true, + code: ` + while (${uniform_cond}) { + break; + } + if ${cond} { ${op} }`, + }; + } + case 'while-always-return-op-after': { + return { + // Desugars to a loop with a conditional break, + // before reaching the loop. + sensitive: true, + code: ` + while (${uniform_cond}) { + return; + } + if ${cond} { ${op} }`, + }; } } - - return code; } g.test('basics') @@ -293,11 +529,15 @@ g.test('basics') `; // Simple control statement containing the op. - code += generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + const snippet = generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + code += snippet.code; code += `\n}\n`; - t.expectCompileResult(t.params.expectation || t.params.op.startsWith('control_case'), code); + t.expectCompileResult( + t.params.expectation || t.params.op.startsWith('control_case') || !snippet.sensitive, + code + ); }); const kSubgroupOps = [ @@ -380,11 +620,15 @@ g.test('basics,subgroups') `; // Simple control statement containing the op. - code += generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + const snippet = generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + code += snippet.code; code += `\n}\n`; - t.expectCompileResult(t.params.expectation || t.params.op.startsWith('control_case'), code); + t.expectCompileResult( + t.params.expectation || t.params.op.startsWith('control_case') || !snippet.sensitive, + code + ); }); const kFragmentBuiltinValues = [ diff --git a/dom/webgpu/tests/cts/checkout/standalone/index.html b/dom/webgpu/tests/cts/checkout/standalone/index.html @@ -452,7 +452,7 @@ <fieldset> <legend>Serialize results:</legend> <p> - <label><input type="checkbox" id="saveOnlyFailures">Only result failures</label> + <label><input type="checkbox" id="saveOnlyFailures" checked>Only result failures</label> </p> <p> <input type="button" id="copyResultsJSON" value="Copy results as JSON"> diff --git a/dom/webgpu/tests/cts/checkout/tools/gen_version b/dom/webgpu/tests/cts/checkout/tools/gen_version @@ -14,7 +14,7 @@ if (!fs.existsSync(myself)) { process.exit(1); } -const version = '3314e4108692d0c201f0d381bf10ddc8dbbc7b69'; +const version = 'ef27c0b88b802ca64677e2c0ed60378951ac6c42'; fs.mkdirSync('./gen/common/internal', { recursive: true }); // This will be copied into the various other build directories. diff --git a/dom/webgpu/tests/cts/moz.yaml b/dom/webgpu/tests/cts/moz.yaml @@ -8,8 +8,8 @@ origin: name: WebGPU CTS description: WebGPU Compliance Test Suite url: https://gpuweb.github.io/cts/ - release: 3314e4108692d0c201f0d381bf10ddc8dbbc7b69 (2025-11-19T02:29:39Z). - revision: 3314e4108692d0c201f0d381bf10ddc8dbbc7b69 + release: ef27c0b88b802ca64677e2c0ed60378951ac6c42 (2025-11-28T22:30:43Z). + revision: ef27c0b88b802ca64677e2c0ed60378951ac6c42 license: ['BSD-3-Clause'] updatebot: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/command_buffer/copyTextureToTexture/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/command_buffer/copyTextureToTexture/cts.https.html.ini @@ -1678,7 +1678,7 @@ [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="2d"] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="3d"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/state/device_lost/destroy/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/state/device_lost/destroy/cts.https.html.ini @@ -1546,12 +1546,14 @@ [:format="astc-5x5-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] expected: if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [TIMEOUT, NOTRUN] [:format="astc-5x5-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] expected: if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [TIMEOUT, NOTRUN] [:format="astc-5x5-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] expected: @@ -2279,14 +2281,20 @@ if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="src";awaitLost=false] expected: if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] expected: @@ -2309,6 +2317,8 @@ [:format="eac-rg11unorm";usageType="texture";usageCopy="src";awaitLost=true] [:format="eac-rg11unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] @@ -5626,13 +5636,15 @@ [:format="rgba8sint";usageType="storage";usageCopy="none";awaitLost=false] expected: - if os == "win": [FAIL, TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="rgba8sint";usageType="storage";usageCopy="none";awaitLost=true] expected: - if os == "win": [FAIL, TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -5644,7 +5656,8 @@ [:format="rgba8sint";usageType="storage";usageCopy="src";awaitLost=true] expected: - if os == "win": [FAIL, TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -5671,7 +5684,7 @@ [:format="rgba8sint";usageType="texture";usageCopy="dst";awaitLost=true] expected: if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: [TIMEOUT, NOTRUN] @@ -5692,7 +5705,7 @@ [:format="rgba8sint";usageType="texture";usageCopy="src";awaitLost=false] expected: if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: [TIMEOUT, NOTRUN] @@ -5700,20 +5713,22 @@ [:format="rgba8sint";usageType="texture";usageCopy="src";awaitLost=true] expected: if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: [TIMEOUT, NOTRUN] [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] expected: - if os == "win": [FAIL, TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] expected: - if os == "win": [FAIL, TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: [TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupAdd/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupAdd/cts.https.html.ini @@ -9426,6 +9426,7 @@ [:case=741;type="f32";wgSize=[64,2,1\]] expected: if os == "win": [PASS, TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:case=742;type="f16";wgSize=[128,1,1\]] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini @@ -58317,7 +58317,7 @@ [:format="bc7-rgba-unorm";filt="linear";mode="c"] expected: - if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] [:format="bc7-rgba-unorm";filt="linear";mode="m"] @@ -58327,7 +58327,7 @@ [:format="bc7-rgba-unorm";filt="linear";mode="r"] expected: - if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] [:format="bc7-rgba-unorm";filt="nearest";mode="c"] @@ -58337,7 +58337,7 @@ [:format="bc7-rgba-unorm";filt="nearest";mode="m"] expected: - if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] [:format="bc7-rgba-unorm";filt="nearest";mode="r"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini @@ -16349,7 +16349,11 @@ if os == "mac": [TIMEOUT, NOTRUN] [:format="bc4-r-unorm";filt="nearest";modeU="m";modeV="c";offset=false] - expected: [TIMEOUT, NOTRUN] + expected: + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "linux": [TIMEOUT, NOTRUN] + if os == "mac": [TIMEOUT, NOTRUN] [:format="bc4-r-unorm";filt="nearest";modeU="m";modeV="c";offset=true] expected: [TIMEOUT, NOTRUN] @@ -41962,7 +41966,7 @@ expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="bgra8unorm-srgb";dim="3d";filt="nearest";modeU="c";modeV="m";modeW="r";offset=true] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini @@ -2035,14 +2035,16 @@ [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="m";modeV="c";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="m";modeV="c";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] @@ -2065,14 +2067,16 @@ [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="m";modeV="r";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="m";modeV="r";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] @@ -2093,14 +2097,16 @@ [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="r";modeV="m";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="r";modeV="m";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] @@ -2114,7 +2120,8 @@ [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="r";modeV="r";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] @@ -3157,14 +3164,16 @@ [:stage="c";format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="c";format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -3219,14 +3228,16 @@ [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -4795,7 +4806,8 @@ if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth32float";filt="linear";modeU="m";modeV="m";offset=true] expected: @@ -4820,7 +4832,8 @@ if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth32float";filt="linear";modeU="r";modeV="c";offset=false] expected: @@ -6444,21 +6457,24 @@ [:stage="v";format="depth24plus-stencil8";filt="linear";mode="c"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="v";format="depth24plus-stencil8";filt="linear";mode="m"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="v";format="depth24plus-stencil8";filt="linear";mode="r"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -6552,7 +6568,8 @@ [:stage="v";format="depth32float-stencil8";filt="nearest";mode="c"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -6567,7 +6584,8 @@ [:stage="v";format="depth32float-stencil8";filt="nearest";mode="r"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini @@ -45400,7 +45400,7 @@ expected: if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="c";format="bgra8unorm";dim="3d";filt="nearest";modeU="r";modeV="m";modeW="m";offset=false] @@ -45419,14 +45419,14 @@ [:stage="c";format="bgra8unorm";dim="3d";filt="nearest";modeU="r";modeV="m";modeW="r";offset=false] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="c";format="bgra8unorm";dim="3d";filt="nearest";modeU="r";modeV="m";modeW="r";offset=true] expected: if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="c";format="bgra8unorm";dim="3d";filt="nearest";modeU="r";modeV="r";modeW="c";offset=false] @@ -170420,7 +170420,10 @@ [:stage="f";format="etc2-rgb8a1unorm-srgb";filt="linear";mode="c"] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="etc2-rgb8a1unorm-srgb";filt="linear";mode="m"] expected: @@ -170431,7 +170434,10 @@ [:stage="f";format="etc2-rgb8a1unorm-srgb";filt="linear";mode="r"] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="etc2-rgb8a1unorm-srgb";filt="nearest";mode="c"] expected: @@ -170439,7 +170445,10 @@ [:stage="f";format="etc2-rgb8a1unorm-srgb";filt="nearest";mode="m"] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="etc2-rgb8a1unorm-srgb";filt="nearest";mode="r"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini @@ -5927,15 +5927,13 @@ [:stage="f";format="astc-5x4-unorm-srgb";filt="nearest";modeU="c";modeV="m"] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="nearest";modeU="c";modeV="r"] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="nearest";modeU="m";modeV="c"] @@ -44029,9 +44027,7 @@ [:stage="f";format="rgba32float";dim="3d";filt="linear"] expected: - if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="rgba32float";dim="3d";filt="nearest"] expected: @@ -44045,9 +44041,7 @@ [:stage="f";format="rgba32float";dim="cube";filt="nearest"] expected: - if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="rgba8snorm";dim="3d";filt="linear"] expected: @@ -89664,18 +89658,21 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm";filt="nearest";mode="c"] @@ -89688,156 +89685,182 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x4-unorm-srgb";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm-srgb";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm-srgb";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm-srgb";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm-srgb";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm-srgb";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-5x5-unorm-srgb";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm-srgb";filt="linear";mode="c"] @@ -89865,6 +89888,7 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x5-unorm-srgb";filt="nearest";mode="m"] @@ -89878,6 +89902,7 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="astc-6x6-unorm";filt="linear";mode="c"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini @@ -3,12 +3,48 @@ [:statement="for"] + [:statement="for-with-cond-always-break-op-after"] + + [:statement="for-with-cond-always-break-op-inside"] + + [:statement="for-with-cond-always-return-op-after"] + + [:statement="for-with-cond-always-return-op-inside"] + + [:statement="for-without-cond-always-break-op-after"] + + [:statement="for-without-cond-always-break-op-inside"] + + [:statement="for-without-cond-always-return-op-after"] + + [:statement="for-without-cond-always-return-op-inside"] + [:statement="if"] + [:statement="loop-always-break-op-after"] + + [:statement="loop-always-break-op-continuing"] + + [:statement="loop-always-break-op-inside"] + + [:statement="loop-always-return-op-after"] + + [:statement="loop-always-return-op-continuing"] + + [:statement="loop-always-return-op-inside"] + [:statement="switch"] [:statement="while"] + [:statement="while-always-break-op-after"] + + [:statement="while-always-break-op-inside"] + + [:statement="while-always-return-op-after"] + + [:statement="while-always-return-op-inside"] + [cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:basics:*] implementation-status: backlog @@ -18,15 +54,69 @@ [:statement="for"] expected: FAIL + [:statement="for-with-cond-always-break-op-after"] + expected: FAIL + + [:statement="for-with-cond-always-break-op-inside"] + expected: FAIL + + [:statement="for-with-cond-always-return-op-after"] + expected: FAIL + + [:statement="for-with-cond-always-return-op-inside"] + expected: FAIL + + [:statement="for-without-cond-always-break-op-after"] + expected: FAIL + + [:statement="for-without-cond-always-break-op-inside"] + expected: FAIL + + [:statement="for-without-cond-always-return-op-after"] + expected: FAIL + + [:statement="for-without-cond-always-return-op-inside"] + expected: FAIL + [:statement="if"] expected: FAIL + [:statement="loop-always-break-op-after"] + expected: FAIL + + [:statement="loop-always-break-op-continuing"] + expected: FAIL + + [:statement="loop-always-break-op-inside"] + expected: FAIL + + [:statement="loop-always-return-op-after"] + expected: FAIL + + [:statement="loop-always-return-op-continuing"] + expected: FAIL + + [:statement="loop-always-return-op-inside"] + expected: FAIL + [:statement="switch"] expected: FAIL [:statement="while"] expected: FAIL + [:statement="while-always-break-op-after"] + expected: FAIL + + [:statement="while-always-break-op-inside"] + expected: FAIL + + [:statement="while-always-return-op-after"] + expected: FAIL + + [:statement="while-always-return-op-inside"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:binary_expressions:*] implementation-status: backlog diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/dedicated.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/dedicated.https.html.ini @@ -1097,7 +1097,9 @@ [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] expected: @@ -4147,7 +4149,9 @@ [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] expected: @@ -4214,7 +4218,7 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/shared.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/shared.https.html.ini @@ -1097,7 +1097,9 @@ [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] expected: @@ -1162,11 +1164,7 @@ if os == "mac" and not debug: FAIL [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg11b10ufloat";dstPremultiplied=true] - expected: - if os == "win": FAIL - if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + expected: FAIL [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/canvas/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/canvas/cts.https.html.ini @@ -2081,13 +2081,15 @@ expected: if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:canvasType="offscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true] expected: if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:canvasType="offscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false] expected: @@ -2105,8 +2107,7 @@ expected: if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:canvasType="offscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true] expected: @@ -2118,13 +2119,15 @@ expected: if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:canvasType="offscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true] expected: if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:canvasType="offscreen";contextName="webgl2";dstColorFormat="r8unorm";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false] expected: diff --git a/testing/web-platform/mozilla/tests/webgpu/common/internal/version.js b/testing/web-platform/mozilla/tests/webgpu/common/internal/version.js @@ -1,3 +1,3 @@ // AUTO-GENERATED - DO NOT EDIT. See tools/gen_version. -export const version = '3314e4108692d0c201f0d381bf10ddc8dbbc7b69'; +export const version = 'ef27c0b88b802ca64677e2c0ed60378951ac6c42'; diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/texture_view/texture_component_swizzle.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/texture_view/texture_component_swizzle.spec.js @@ -5,6 +5,18 @@ Operational tests for the 'texture-component-swizzle' feature. Test that: * when the feature is on, swizzling is applied correctly. + +Note: for texture_depth_xxx we only get f32 +What happens in the GPU (at least in Metal) + + 1. we start with [depthOrCompareResult, depthOrCompareResult, depthOrCompareResult, 1] + 2. we then swizzle + 3. we then read the RED channel + +Gather will do this 4 times and give us the result of step 3 in each channel. + +The WebGPU spec says we should be starting with [depthOrCompare, 0, 0, 1] and the +implementation should deal with this. `;import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { assert, range, unreachable } from '../../../../common/util/util.js'; import { @@ -332,18 +344,17 @@ ${sampledColors.map((c, i) => `${i % 2}, ${i / 2 | 0}, ${JSON.stringify(c)}`).jo const testData = [swizzle, otherSwizzle].map((swizzle) => { const swizzledColors = readColors.map((readColor) => swizzleTexel(readColor, swizzle)); - const expRGBAColor = isBuiltinGather(func) ? + const expColor = isBuiltinGather(func) ? gather(swizzledColors, channel) : - swizzledColors[0]; - const expColor = - !isBuiltinGather(func) && isSingleChannelInput(input) ? + isSingleChannelInput(input) ? { - R: expRGBAColor.R, - G: expRGBAColor.R, - B: expRGBAColor.R, - A: expRGBAColor.R + R: swizzledColors[0].R, + G: swizzledColors[0].R, + B: swizzledColors[0].R, + A: swizzledColors[0].R } : - expRGBAColor; + swizzledColors[0]; + const expTexelView = TexelView.fromTexelsAsColors(expFormat, (_coords) => expColor); const textureView = texture.createView({ label: `swizzle texture view(${swizzle})`, @@ -534,6 +545,12 @@ ${testData. const uniformValues = new ArrayBuffer(uniformBuffer.size); const asF32 = new Float32Array(uniformValues); asF32.set([tx / texture.width, ty / texture.height]); + t.debug( + () => + `texcoords: ${[...asF32]} tx = ${tx}, ty = ${ty}, size: ${texture.width}, ${ + texture.height + }` + ); t.device.queue.writeBuffer(uniformBuffer, 0, new Uint32Array(uniformValues)); const bindGroup0 = t.device.createBindGroup({ diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js @@ -185,60 +185,296 @@ function generateOp(op) { } } -const kStatementKinds = ['if', 'for', 'while', 'switch', 'break-if']; +const kStatementKinds = [ +'if', +'for', +'while', +'switch', +'break-if', +'loop-always-break-op-inside', +'loop-always-return-op-inside', +'loop-always-break-op-continuing', +'loop-always-return-op-continuing', +'loop-always-break-op-after', +'loop-always-return-op-after', +'for-with-cond-always-break-op-inside', +'for-with-cond-always-return-op-inside', +'for-with-cond-always-break-op-after', +'for-with-cond-always-return-op-after', +'for-without-cond-always-break-op-inside', +'for-without-cond-always-return-op-inside', +'for-without-cond-always-break-op-after', +'for-without-cond-always-return-op-after', +'while-always-break-op-inside', +'while-always-return-op-inside', +'while-always-break-op-after', +'while-always-return-op-after']; + + + + + + + + function generateConditionalStatement( statement, -condition, -op) +condition_name, +op_name) { - const code = ``; + const cond = generateCondition(condition_name); + const uniform_cond = generateCondition('uniform_storage_ro'); + const op = generateOp(op_name); switch (statement) { case 'if':{ - return `if ${generateCondition(condition)} { - ${generateOp(op)}; - } - `; + return { + sensitive: true, + code: ` + if ${cond} { + ${op}; + }` + }; } case 'for':{ - return `for (; ${generateCondition(condition)};) { - ${generateOp(op)}; - } - `; + return { + sensitive: true, + code: ` + for (; ${cond}; ) { + ${op}; + }` + }; } case 'while':{ - return `while ${generateCondition(condition)} { - ${generateOp(op)}; - } - `; + return { + sensitive: true, + code: ` + while ${cond} { + ${op}; + }` + }; } case 'switch':{ - return `switch u32(${generateCondition(condition)}) { - case 0: { - ${generateOp(op)}; - } - default: { } - } - `; + return { + sensitive: true, + code: ` + switch u32(${cond}) { + case 0: { + ${op}; + } + default: { } + }` + }; } case 'break-if':{ // The initial 'if' prevents the loop from being infinite. Its condition // is uniform, to ensure the first iteration of the the body executes // uniformly. The uniformity of the second iteration depends entirely on // the uniformity of the break-if condition. - return `loop { - if ${generateCondition('uniform_storage_ro')} { break; } - ${generateOp(op)} - continuing { - break if ${generateCondition(condition)}; - } - } - `; + return { + sensitive: true, + code: ` + loop { + if ${uniform_cond} { break; } + ${op} + continuing { + break if ${cond}; + } + }` + }; + } + case 'loop-always-break-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + break; + if ${cond} { ${op} } + }` + }; + } + case 'loop-always-return-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + return; + if ${cond} { ${op} } + }` + }; + } + case 'loop-always-break-op-continuing':{ + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + break; + continuing { + if ${cond} { ${op} } + } + }` + }; + } + case 'loop-always-return-op-continuing':{ + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + return; + continuing { + if ${cond} { ${op} } + } + }` + }; + } + case 'loop-always-break-op-after':{ + return { + sensitive: true, + code: ` + loop { + break; + } + if ${cond} { ${op} }` + }; + } + case 'loop-always-return-op-after':{ + return { + sensitive: false, // The op is unreachable. + code: ` + loop { + return; + } + if ${cond} { ${op} }` + }; + } + case 'for-with-cond-always-break-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ;${uniform_cond}; ) { + break; + if ${cond} { ${op} } + }` + }; + } + case 'for-with-cond-always-return-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ;${uniform_cond}; ) { + return; + if ${cond} { ${op} } + }` + }; + } + case 'for-with-cond-always-break-op-after':{ + return { + sensitive: true, + code: ` + for ( ;${uniform_cond}; ) { + break; + } + if ${cond} { ${op} }` + }; + } + case 'for-with-cond-always-return-op-after':{ + return { + // Desugars to a loop with a conditional break, + // before reaching the loop. + sensitive: true, + code: ` + for ( ;${uniform_cond}; ) { + return; + } + if ${cond} { ${op} }` + }; + } + case 'for-without-cond-always-break-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ; ; ) { + break; + if ${cond} { ${op} } + }` + }; + } + case 'for-without-cond-always-return-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + for ( ; ; ) { + return; + if ${cond} { ${op} } + }` + }; + } + case 'for-without-cond-always-break-op-after':{ + return { + sensitive: true, + code: ` + for ( ; ; ) { + break; + } + if ${cond} { ${op} }` + }; + } + case 'for-without-cond-always-return-op-after':{ + return { + // Desugars to a loop without a conditional break. + // So the op is unreachable. + sensitive: false, + code: ` + for ( ; ; ) { + return; + } + if ${cond} { ${op} }` + }; + } + case 'while-always-break-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + while (${uniform_cond}) { + break; + if ${cond} { ${op} } + }` + }; + } + case 'while-always-return-op-inside':{ + return { + sensitive: false, // The op is unreachable. + code: ` + while (${uniform_cond}) { + return; + if ${cond} { ${op} } + }` + }; + } + case 'while-always-break-op-after':{ + return { + sensitive: true, + code: ` + while (${uniform_cond}) { + break; + } + if ${cond} { ${op} }` + }; + } + case 'while-always-return-op-after':{ + return { + // Desugars to a loop with a conditional break, + // before reaching the loop. + sensitive: true, + code: ` + while (${uniform_cond}) { + return; + } + if ${cond} { ${op} }` + }; } } - - return code; } g.test('basics'). @@ -293,11 +529,15 @@ fn((t) => { `; // Simple control statement containing the op. - code += generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + const snippet = generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + code += snippet.code; code += `\n}\n`; - t.expectCompileResult(t.params.expectation || t.params.op.startsWith('control_case'), code); + t.expectCompileResult( + t.params.expectation || t.params.op.startsWith('control_case') || !snippet.sensitive, + code + ); }); const kSubgroupOps = [ @@ -380,11 +620,15 @@ fn((t) => { `; // Simple control statement containing the op. - code += generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + const snippet = generateConditionalStatement(t.params.statement, t.params.cond, t.params.op); + code += snippet.code; code += `\n}\n`; - t.expectCompileResult(t.params.expectation || t.params.op.startsWith('control_case'), code); + t.expectCompileResult( + t.params.expectation || t.params.op.startsWith('control_case') || !snippet.sensitive, + code + ); }); const kFragmentBuiltinValues = [