tor-browser

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

commit 88be98f2b29c047374092992298b3aa56e46e3dd
parent 96771b32caef7d53ef0b5c46f35534eb5a6cee39
Author: Erich Gubler <erichdongubler@gmail.com>
Date:   Sat, 27 Dec 2025 21:41:54 +0000

Bug 2005987 - test(webgpu): update CTS to b231a8cb24882dc5cb19655053515c4c34f28520 r=webgpu-reviewers,aleiserson

Some of these changes need some context: Previously, this coverage of did not `SKIP` tests, despite being added after the first published spec. revision. After discussing in the spec. committee upstream (see [gpuweb#5480](https://github.com/gpuweb/gpuweb/issues/5480)), it was decided that new functionality, until part formally of the spec., should be tested incrementally based on the presence of DOM symbols indicating the browser's awareness of it. Once part of the spec., it becomes required functionality that, indeed, may cause existing groups of tests to fail.

The new `PASS`es here are changes to transient texture coverage, which now are tested incrementally (see recent PRs indexed by [gpuweb/cts#4509](https://github.com/gpuweb/cts/issues/4509)). These have now been changed to not run if the user agent doesn't have `GPUTextureUsage.TRANSIENT_ATTACHMENT` defined.

Most "regressions" here are because of the addition for new baseline storage texture and storage buffer limits that have been scoped to bug 2006720.

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

Diffstat:
Mdom/webgpu/tests/cts/checkout/package-lock.json | 14+++++++-------
Mdom/webgpu/tests/cts/checkout/package.json | 2+-
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/operation/adapter/requestDevice.spec.ts | 24++++++++++++++----------
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/operation/memory_sync/texture/texture_sync_test.ts | 4++--
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/operation/render_pass/resolve.spec.ts | 73++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage.spec.ts | 5+----
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage.spec.ts | 5+----
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage.spec.ts | 5+----
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage.spec.ts | 5+----
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/createBindGroup.spec.ts | 29++++++++++++++++++-----------
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/createTexture.spec.ts | 22+++++++++++-----------
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.ts | 8++++++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/encoding/encoder_open_state.spec.ts | 21---------------------
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/image_copy/buffer_texture_copies.spec.ts | 4++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/image_copy/texture_related.spec.ts | 7+++++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.ts | 5+++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pass/render_pass_descriptor.spec.ts | 20+++++++++++++++-----
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.ts | 5+++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/api/validation/texture/bgra8unorm_storage.spec.ts | 22++++++++++++++++++++--
Mdom/webgpu/tests/cts/checkout/src/webgpu/capability_info.ts | 33+++++++++------------------------
Mdom/webgpu/tests/cts/checkout/src/webgpu/constants.ts | 2--
Mdom/webgpu/tests/cts/checkout/src/webgpu/format_info.ts | 15+++++++++++++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/gpu_test.ts | 9+++++++++
Mdom/webgpu/tests/cts/checkout/src/webgpu/idl/constants/flags.spec.ts | 18+++++++++++++++++-
Mdom/webgpu/tests/cts/checkout/src/webgpu/web_platform/canvas/configure.spec.ts | 14+++++++++++++-
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/adapter/requestDevice/cts.https.html.ini | 28++++++++++++++++------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/command_buffer/copyTextureToTexture/cts.https.html.ini | 25+++++++++++++------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/render_pass/resolve/cts.https.html.ini | 192+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/storage_texture/read_write/cts.https.html.ini | 3++-
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage/cts.https.html.ini | 147+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage/cts.https.html.ini | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage/cts.https.html.ini | 207+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage/cts.https.html.ini | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createBindGroup/cts.https.html.ini | 10++--------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createBindGroupLayout/cts.https.html.ini | 6++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createPipelineLayout/cts.https.html.ini | 6++----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createTexture/cts.https.html.ini | 146-------------------------------------------------------------------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini | 2--
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/encoder_open_state/cts.https.html.ini | 9---------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/image_copy/buffer_texture_copies/cts.https.html.ini | 3---
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/image_copy/texture_related/cts.https.html.ini | 8--------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture/cts.https.html.ini | 3---
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pass/render_pass_descriptor/cts.https.html.ini | 44--------------------------------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_render_misc/cts.https.html.ini | 15---------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/state/device_lost/destroy/cts.https.html.ini | 31++++++++++++-------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/texture/bgra8unorm_storage/cts.https.html.ini | 6------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/cts.https.html.ini | 4----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/dedicated.https.html.ini | 4----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/shared.https.html.ini | 4----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/cts.https.html.ini | 11++---------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/dedicated.https.html.ini | 11++---------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/shared.https.html.ini | 11++---------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini | 9++++++---
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini | 12++++++------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini | 263+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini | 49+++++++++++++++++++++++++++++++++----------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini | 10+++++-----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini | 2+-
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/cts.https.html.ini | 20++++++++++++++------
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 | 6++++--
Mtesting/web-platform/mozilla/tests/webgpu/common/internal/version.js | 2+-
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js | 24++++++++++++++----------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js | 4++--
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage.spec.js | 5+----
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage.spec.js | 5+----
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage.spec.js | 5+----
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage.spec.js | 5+----
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js | 29++++++++++++++++++-----------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createTexture.spec.js | 22+++++++++++-----------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js | 10+++++++++-
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/encoder_open_state.spec.js | 21---------------------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/buffer_texture_copies.spec.js | 4++++
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js | 9++++++++-
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js | 5+++++
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js | 20+++++++++++++++-----
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js | 7++++++-
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/api/validation/texture/bgra8unorm_storage.spec.js | 22++++++++++++++++++++--
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/capability_info.js | 35++++++++++-------------------------
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/constants.js | 2--
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/format_info.js | 15+++++++++++++++
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/gpu_test.js | 9+++++++++
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/idl/constants/flags.spec.js | 18+++++++++++++++++-
Mtesting/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js | 14+++++++++++++-
87 files changed, 1481 insertions(+), 754 deletions(-)

diff --git a/dom/webgpu/tests/cts/checkout/package-lock.json b/dom/webgpu/tests/cts/checkout/package-lock.json @@ -24,7 +24,7 @@ "@types/w3c-image-capture": "^1.0.10", "@typescript-eslint/eslint-plugin": "^6.9.1", "@typescript-eslint/parser": "^6.9.1", - "@webgpu/types": "^0.1.67", + "@webgpu/types": "^0.1.66", "ansi-colors": "4.1.3", "babel-plugin-add-header-comment": "^1.0.3", "babel-plugin-const-enum": "^1.2.0", @@ -1539,9 +1539,9 @@ "dev": true }, "node_modules/@webgpu/types": { - "version": "0.1.67", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.67.tgz", - "integrity": "sha512-uk53+2ECGUkWoDFez/hymwpRfdgdIn6y1ref70fEecGMe5607f4sozNFgBk0oxlr7j2CRGWBEc3IBYMmFdGGTQ==", + "version": "0.1.66", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.66.tgz", + "integrity": "sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA==", "dev": true, "license": "BSD-3-Clause" }, @@ -10077,9 +10077,9 @@ "dev": true }, "@webgpu/types": { - "version": "0.1.67", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.67.tgz", - "integrity": "sha512-uk53+2ECGUkWoDFez/hymwpRfdgdIn6y1ref70fEecGMe5607f4sozNFgBk0oxlr7j2CRGWBEc3IBYMmFdGGTQ==", + "version": "0.1.66", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.66.tgz", + "integrity": "sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA==", "dev": true }, "abbrev": { diff --git a/dom/webgpu/tests/cts/checkout/package.json b/dom/webgpu/tests/cts/checkout/package.json @@ -50,7 +50,7 @@ "@types/w3c-image-capture": "^1.0.10", "@typescript-eslint/eslint-plugin": "^6.9.1", "@typescript-eslint/parser": "^6.9.1", - "@webgpu/types": "^0.1.67", + "@webgpu/types": "^0.1.66", "ansi-colors": "4.1.3", "babel-plugin-add-header-comment": "^1.0.3", "babel-plugin-const-enum": "^1.2.0", diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/adapter/requestDevice.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/adapter/requestDevice.spec.ts @@ -258,8 +258,6 @@ g.test('limits,supported') assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS()[limit]; - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo === undefined, 'limit is currently compatibility only'); let value: number | undefined = -1; let result: number = -1; switch (limitValue) { @@ -279,6 +277,20 @@ g.test('limits,supported') const requiredLimits: Record<string, number | undefined> = { [limit]: value }; + if ( + limit === 'maxStorageBuffersInFragmentStage' || + limit === 'maxStorageBuffersInVertexStage' + ) { + requiredLimits['maxStorageBuffersPerShaderStage'] = value; + } + + if ( + limit === 'maxStorageTexturesInFragmentStage' || + limit === 'maxStorageTexturesInVertexStage' + ) { + requiredLimits['maxStorageTexturesPerShaderStage'] = value; + } + const device = await t.requestDeviceTracked(adapter, { requiredLimits }); assert(device !== null); t.expect( @@ -323,8 +335,6 @@ g.test('limit,better_than_supported') assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS(); - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo[limit] === undefined, 'limit is currently compatibility only'); const value = adapter.limits[limit]! * mul + add; const requiredLimits = { [limit]: clamp(value, { min: 0, max: limitInfo[limit].maximumValue }), @@ -371,9 +381,6 @@ g.test('limit,out_of_range') const adapter = await gpu.requestAdapter(); assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS()[limit]; - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo === undefined, 'limit is currently compatibility only'); - const requiredLimits = { [limit]: value, }; @@ -431,9 +438,6 @@ g.test('limit,worse_than_default') assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS()[limit]; - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo === undefined, 'limit is currently compatibility only'); - const value = limitInfo.default * mul + add; const requiredLimits = { [limit]: clamp(value, { min: 0, max: limitInfo.maximumValue }), diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/memory_sync/texture/texture_sync_test.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/memory_sync/texture/texture_sync_test.ts @@ -52,11 +52,11 @@ export const kOpInfo: { storage: { contexts: ['compute-pass-encoder', 'render-pass-encoder', 'render-bundle-encoder'], readUsage: 0, - writeUsage: GPUConst.TextureUsage.STORAGE, + writeUsage: GPUConst.TextureUsage.STORAGE_BINDING, }, sample: { contexts: ['compute-pass-encoder', 'render-pass-encoder', 'render-bundle-encoder'], - readUsage: GPUConst.TextureUsage.SAMPLED, + readUsage: GPUConst.TextureUsage.TEXTURE_BINDING, writeUsage: 0, }, 'attachment-store': { diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/render_pass/resolve.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/operation/render_pass/resolve.spec.ts @@ -1,6 +1,7 @@ export const description = `API Operation Tests for multisample resolve in render passes.`; import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { isTextureFormatPossiblyResolvable, kColorTextureFormats } from '../../../format_info.js'; import { AllFeaturesMaxLimitsGPUTest } from '../../../gpu_test.js'; import * as ttu from '../../../texture_test_utils.js'; @@ -11,7 +12,7 @@ const kSlotsToResolve = [ ]; const kSize = 4; -const kFormat: GPUTextureFormat = 'rgba8unorm'; +const kDepthStencilFormat: GPUTextureFormat = 'depth24plus-stencil8'; export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest); @@ -27,7 +28,6 @@ Test basic render pass resolve behavior for combinations of: TODO: cases where color attachment and resolve target don't have the same mip level - resolveTarget {2d array layer, TODO: 3d slice} {0, >0} with {2d, TODO: 3d} resolveTarget TODO: cases where color attachment and resolve target don't have the same z (slice or layer) - - TODO: test all renderable color formats - TODO: test that any not-resolved attachments are rendered to correctly. - TODO: test different loadOps - TODO?: resolveTarget mip level {0, >0} (TODO?: different mip level from colorAttachment) @@ -37,18 +37,44 @@ Test basic render pass resolve behavior for combinations of: ) .params(u => u + .combine('colorFormat', kColorTextureFormats) + .filter(t => isTextureFormatPossiblyResolvable(t.colorFormat)) .combine('separateResolvePass', [false, true]) .combine('storeOperation', ['discard', 'store'] as const) .beginSubcases() + .combine('transientColorAttachment', [false, true]) + // Exclude if transient AND (separate pass OR storing) + .unless( + t => t.transientColorAttachment && (t.separateResolvePass || t.storeOperation === 'store') + ) .combine('numColorAttachments', [2, 4] as const) .combine('slotsToResolve', kSlotsToResolve) .combine('resolveTargetBaseMipLevel', [0, 1] as const) .combine('resolveTargetBaseArrayLayer', [0, 1] as const) + .combine('transientDepthStencilAttachment', [false, true]) + .combine('depthStencilAttachment', [false, true]) + .unless(t => !t.depthStencilAttachment && t.transientDepthStencilAttachment) ) .fn(t => { + const { colorFormat } = t.params; + t.skipIfTextureFormatNotSupported(colorFormat); + t.skipIfTextureFormatNotResolvable(colorFormat); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (t.params.transientColorAttachment || t.params.transientDepthStencilAttachment) { + t.skipIfTransientAttachmentNotSupported(); + } + const targets: GPUColorTargetState[] = []; for (let i = 0; i < t.params.numColorAttachments; i++) { - targets.push({ format: kFormat }); + targets.push({ format: colorFormat }); + } + + let depthStencil: GPUDepthStencilState | undefined; + if (t.params.depthStencilAttachment) { + depthStencil = { + format: kDepthStencilFormat, + depthWriteEnabled: false, + }; } // These shaders will draw a white triangle into a texture. After draw, the top left @@ -95,6 +121,7 @@ Test basic render pass resolve behavior for combinations of: entryPoint: 'main', targets, }, + depthStencil, primitive: { topology: 'triangle-list' }, multisample: { count: 4 }, }); @@ -110,19 +137,20 @@ Test basic render pass resolve behavior for combinations of: for (let i = 0; i < t.params.numColorAttachments; i++) { const colorAttachment = t .createTextureTracked({ - format: kFormat, + format: colorFormat, size: [kSize, kSize, 1], sampleCount: 4, mipLevelCount: 1, - usage: - GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, + usage: t.params.transientColorAttachment + ? GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT + : GPUTextureUsage.RENDER_ATTACHMENT, }) .createView(); let resolveTarget: GPUTextureView | undefined; if (t.params.slotsToResolve.includes(i)) { const resolveTargetTexture = t.createTextureTracked({ - format: kFormat, + format: colorFormat, size: [kResolveTargetSize, kResolveTargetSize, t.params.resolveTargetBaseArrayLayer + 1], sampleCount: 1, mipLevelCount: t.params.resolveTargetBaseMipLevel + 1, @@ -162,13 +190,39 @@ Test basic render pass resolve behavior for combinations of: } } + let depthStencilAttachment: GPURenderPassDepthStencilAttachment | undefined; + if (t.params.depthStencilAttachment) { + const depthStencilTexture = t.createTextureTracked({ + format: kDepthStencilFormat, + size: [kSize, kSize, 1], + sampleCount: 4, + usage: t.params.transientDepthStencilAttachment + ? GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT + : GPUTextureUsage.RENDER_ATTACHMENT, + }); + depthStencilAttachment = { + view: depthStencilTexture.createView(), + depthClearValue: 1.0, + depthLoadOp: 'clear', + depthStoreOp: 'discard', + stencilLoadOp: 'clear', + stencilStoreOp: 'discard', + }; + } + const encoder = t.device.createCommandEncoder(); - const pass = encoder.beginRenderPass({ colorAttachments: drawPassAttachments }); + const pass = encoder.beginRenderPass({ + colorAttachments: drawPassAttachments, + depthStencilAttachment, + }); pass.setPipeline(pipeline); pass.draw(3); pass.end(); if (t.params.separateResolvePass) { - const pass = encoder.beginRenderPass({ colorAttachments: resolvePassAttachments }); + const pass = encoder.beginRenderPass({ + colorAttachments: resolvePassAttachments, + depthStencilAttachment, + }); pass.end(); } t.device.queue.submit([encoder.finish()]); @@ -180,6 +234,7 @@ Test basic render pass resolve behavior for combinations of: ttu.expectSinglePixelComparisonsAreOkInTexture( t, { texture: resolveTarget, mipLevel: t.params.resolveTargetBaseMipLevel }, + // Note: Channels that do not exist in the actual texture are not compared. [ // Top left pixel should be {1.0, 1.0, 1.0, 1.0}. { coord: { x: 0, y: 0, z }, exp: { R: 1.0, G: 1.0, B: 1.0, A: 1.0 } }, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage.spec.ts @@ -24,10 +24,7 @@ const kExtraLimits: LimitsRequest = { maxBindGroups: 'adapterLimit', }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTENANCE_TODO: remove once this limit is required. - limitOptional: true, -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device: GPUDevice, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage.spec.ts @@ -24,10 +24,7 @@ const kExtraLimits: LimitsRequest = { maxBindGroups: 'adapterLimit', }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTENANCE_TODO: remove once this limit is required. - limitOptional: true, -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device: GPUDevice, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage.spec.ts @@ -25,10 +25,7 @@ const kExtraLimits: LimitsRequest = { maxBindGroups: 'adapterLimit', }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTAINANCE_TODO: remove once this limit is required. - limitOptional: true, -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device: GPUDevice, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage.spec.ts @@ -24,10 +24,7 @@ const kExtraLimits: LimitsRequest = { maxBindGroups: 'adapterLimit', }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTENANCE_TODO: remove once this limit is required. - limitOptional: true, -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device: GPUDevice, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/createBindGroup.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/createBindGroup.spec.ts @@ -23,7 +23,7 @@ import { kTextureViewDimensions, sampledAndStorageBindingEntries, texBindingTypeInfo, - IsValidTransientAttachmentUsage, + IsValidTextureUsageCombination, } from '../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { kPossibleStorageTextureFormats, kRegularTextureFormats } from '../../format_info.js'; @@ -220,6 +220,11 @@ g.test('texture_binding_must_have_correct_usage') "The test requires 'r32float' multisampled support which compat mode doesn't guarantee." ); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [{ binding: 0, visibility: GPUShaderStage.COMPUTE, ...entry }], }); @@ -790,11 +795,7 @@ g.test('storage_texture,usage') .combine('usage0', kTextureUsages) .combine('usage1', kTextureUsages) .unless(({ usage0, usage1 }) => { - const usage = usage0 | usage1; - return ( - (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0 && - !IsValidTransientAttachmentUsage(usage) - ); + return !IsValidTextureUsageCombination(usage0 | usage1); }) ) .fn(t => { @@ -802,6 +803,11 @@ g.test('storage_texture,usage') const usage = usage0 | usage1; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ { @@ -1228,11 +1234,7 @@ g.test('external_texture,texture_view,usage') .combine('usage0', kTextureUsages) .combine('usage1', kTextureUsages) .unless(({ usage0, usage1 }) => { - const usage = usage0 | usage1; - return ( - (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0 && - !IsValidTransientAttachmentUsage(usage) - ); + return !IsValidTextureUsageCombination(usage0 | usage1); }) ) .fn(t => { @@ -1240,6 +1242,11 @@ g.test('external_texture,texture_view,usage') const usage = usage0 | usage1; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ { diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/createTexture.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/createTexture.spec.ts @@ -6,7 +6,7 @@ import { assert, makeValueTestVariant } from '../../../common/util/util.js'; import { kTextureDimensions, kTextureUsages, - IsValidTransientAttachmentUsage, + IsValidTextureUsageCombination, } from '../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { @@ -362,6 +362,10 @@ g.test('sampleCount,valid_sampleCount_with_other_parameter_varies') if ((usage & GPUConst.TextureUsage.RENDER_ATTACHMENT) !== 0) { t.skipIfTextureFormatNotUsableAsRenderAttachment(format); } + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } const { blockWidth, blockHeight } = getBlockInfoForTextureFormat(format); const size = @@ -1017,11 +1021,7 @@ g.test('texture_usage') textureFormatAndDimensionPossiblyCompatible(dimension, format) ) .unless(({ usage0, usage1 }) => { - const usage = usage0 | usage1; - return ( - (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0 && - !IsValidTransientAttachmentUsage(usage) - ); + return !IsValidTextureUsageCombination(usage0 | usage1); }) ) .fn(t => { @@ -1039,6 +1039,11 @@ g.test('texture_usage') usage, }; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + let success = true; const appliedDimension = dimension ?? '2d'; // Note that we unconditionally test copy usages for all formats and @@ -1052,11 +1057,6 @@ g.test('texture_usage') if (isColorTextureFormat(format) && !isTextureFormatColorRenderable(t.device, format)) success = false; } - if (usage & GPUTextureUsage.TRANSIENT_ATTACHMENT) { - if (usage !== (GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT)) { - success = false; - } - } t.expectValidationError(() => { t.createTextureTracked(descriptor); diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.ts @@ -4,6 +4,7 @@ copyTextureToTexture tests. import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { kTextureUsages, kTextureDimensions } from '../../../../capability_info.js'; +import { GPUConst } from '../../../../constants.js'; import { kAllTextureFormats, kCompressedTextureFormats, @@ -216,6 +217,13 @@ Test that copyTextureToTexture source/destination need COPY_SRC/COPY_DST usages. u // .combine('srcUsage', kTextureUsages) .combine('dstUsage', kTextureUsages) + .unless(({ srcUsage, dstUsage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return ( + srcUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT || + dstUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT + ); + }) ) .fn(t => { const { srcUsage, dstUsage } = t.params; diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/encoding/encoder_open_state.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/encoding/encoder_open_state.spec.ts @@ -98,7 +98,6 @@ const kRenderPassEncoderCommandInfo: { setScissorRect: {}, setBlendConstant: {}, setStencilReference: {}, - setImmediates: {}, beginOcclusionQuery: {}, endOcclusionQuery: {}, executeBundles: {}, @@ -123,7 +122,6 @@ const kRenderBundleEncoderCommandInfo: { setBindGroup: {}, setIndexBuffer: {}, setVertexBuffer: {}, - setImmediates: {}, pushDebugGroup: {}, popDebugGroup: {}, insertDebugMarker: {}, @@ -143,7 +141,6 @@ const kComputePassEncoderCommandInfo: { setPipeline: {}, dispatchWorkgroups: {}, dispatchWorkgroupsIndirect: {}, - setImmediates: {}, pushDebugGroup: {}, popDebugGroup: {}, insertDebugMarker: {}, @@ -394,12 +391,6 @@ g.test('render_pass_commands') renderPass.setStencilReference(0); } break; - case 'setImmediates': - { - const data = new Uint32Array(1); - renderPass.setImmediates(0, data, 0, 1); - } - break; case 'beginOcclusionQuery': { renderPass.beginOcclusionQuery(0); @@ -511,12 +502,6 @@ g.test('render_bundle_commands') bundleEncoder.setVertexBuffer(1, buffer); } break; - case 'setImmediates': - { - const data = new Uint32Array(1); - bundleEncoder.setImmediates(0, data, 0, 1); - } - break; case 'pushDebugGroup': { bundleEncoder.pushDebugGroup('group'); @@ -599,12 +584,6 @@ g.test('compute_pass_commands') computePass.dispatchWorkgroupsIndirect(indirectBuffer, 0); } break; - case 'setImmediates': - { - const data = new Uint32Array(1); - computePass.setImmediates(0, data, 0, 1); - } - break; case 'pushDebugGroup': { computePass.pushDebugGroup('group'); diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/image_copy/buffer_texture_copies.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/image_copy/buffer_texture_copies.spec.ts @@ -371,6 +371,10 @@ g.test('texture_buffer_usages') .combine('copyType', ['CopyB2T', 'CopyT2B'] as const) .beginSubcases() .combine('textureUsage', kTextureUsages) + .unless(({ textureUsage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return textureUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT; + }) .expand('_textureUsageValid', p => [p.textureUsage === kRequiredTextureUsage[p.copyType]]) .combine('bufferUsage', kBufferUsages) .expand('_bufferUsageValid', p => [p.bufferUsage === kRequiredBufferUsage[p.copyType]]) diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/image_copy/texture_related.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/image_copy/texture_related.spec.ts @@ -124,6 +124,13 @@ The texture must have the appropriate COPY_SRC/COPY_DST usage. ((usage0 | usage1) & GPUConst.TextureUsage.RENDER_ATTACHMENT) !== 0 && (dimension === '1d' || dimension === '3d') ) + .unless(({ usage0, usage1 }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return ( + usage0 === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT || + usage1 === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT + ); + }) ) .fn(t => { const { usage0, usage1, method, size, dimension } = t.params; diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.ts @@ -12,6 +12,7 @@ import { import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { raceWithRejectOnTimeout, unreachable, assert } from '../../../../../common/util/util.js'; import { kTextureUsages } from '../../../../capability_info.js'; +import { GPUConst } from '../../../../constants.js'; import { kAllTextureFormats, isTextureFormatUsableWithCopyExternalImageToTexture, @@ -570,6 +571,10 @@ g.test('destination_texture,usage') .params(u => u // .combine('usage', kTextureUsages) + .unless(({ usage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return usage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT; + }) .beginSubcases() .combine('copySize', [ { width: 0, height: 0, depthOrArrayLayers: 0 }, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pass/render_pass_descriptor.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pass/render_pass_descriptor.spec.ts @@ -741,9 +741,14 @@ g.test('color_attachments,loadOp_storeOp') t.skipIfTextureFormatNotSupported(format); t.skipIfTextureFormatNotUsableAsRenderAttachment(format); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (transientTexture) { + t.skipIfTransientAttachmentNotSupported(); + } + const usage = transientTexture - ? GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT - : GPUTextureUsage.RENDER_ATTACHMENT; + ? GPUConst.TextureUsage.RENDER_ATTACHMENT | GPUConst.TextureUsage.TRANSIENT_ATTACHMENT + : GPUConst.TextureUsage.RENDER_ATTACHMENT; const texture = t.createTestTexture({ usage }); @@ -889,7 +894,7 @@ g.test('resolveTarget,usage') .paramsSimple([ { usage: GPUConst.TextureUsage.COPY_SRC | GPUConst.TextureUsage.COPY_DST }, { usage: GPUConst.TextureUsage.STORAGE_BINDING | GPUConst.TextureUsage.TEXTURE_BINDING }, - { usage: GPUConst.TextureUsage.STORAGE_BINDING | GPUConst.TextureUsage.STORAGE }, + { usage: GPUConst.TextureUsage.STORAGE_BINDING | GPUConst.TextureUsage.STORAGE_BINDING }, { usage: GPUConst.TextureUsage.RENDER_ATTACHMENT | GPUConst.TextureUsage.TEXTURE_BINDING }, ]) .fn(t => { @@ -1124,9 +1129,14 @@ g.test('depth_stencil_attachment,loadOp_storeOp_match_depthReadOnly_stencilReadO t.skipIfTextureFormatNotSupported(format); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (transientTexture) { + t.skipIfTransientAttachmentNotSupported(); + } + const usage = transientTexture - ? GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT - : GPUTextureUsage.RENDER_ATTACHMENT; + ? GPUConst.TextureUsage.RENDER_ATTACHMENT | GPUConst.TextureUsage.TRANSIENT_ATTACHMENT + : GPUConst.TextureUsage.RENDER_ATTACHMENT; const depthAttachment = t.createTextureTracked({ format, size: { width: 1, height: 1, depthOrArrayLayers: 1 }, diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.ts @@ -5,6 +5,7 @@ Texture Usages Validation Tests on All Kinds of WebGPU Subresource Usage Scopes. import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { unreachable } from '../../../../../common/util/util.js'; import { kTextureUsages } from '../../../../capability_info.js'; +import { GPUConst } from '../../../../constants.js'; import { AllFeaturesMaxLimitsGPUTest } from '../../../../gpu_test.js'; import * as vtu from '../../validation_test_utils.js'; import { @@ -614,6 +615,10 @@ g.test('subresources,texture_view_usages') u .combine('bindingType', ['color-attachment', ...kTextureBindingTypes] as const) .combine('viewUsage', [0, ...kTextureUsages]) + .unless(({ viewUsage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return viewUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT; + }) ) .fn(t => { const { bindingType, viewUsage } = t.params; diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/texture/bgra8unorm_storage.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/texture/bgra8unorm_storage.spec.ts @@ -4,7 +4,7 @@ Tests for capabilities added by bgra8unorm-storage flag. import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { assert } from '../../../../common/util/util.js'; -import { kTextureUsages } from '../../../capability_info.js'; +import { kTextureUsages, IsValidTextureUsageCombination } from '../../../capability_info.js'; import { GPUConst } from '../../../constants.js'; import { UniqueFeaturesOrLimitsGPUTest } from '../../../gpu_test.js'; import { kAllCanvasTypes, createCanvas } from '../../../util/create_elements.js'; @@ -53,7 +53,7 @@ this feature is not enabled, which are skipped here. const descriptor = { size: [1, 1, 1], format: 'bgra8unorm' as const, - usage: GPUConst.TextureUsage.STORAGE, + usage: GPUConst.TextureUsage.STORAGE_BINDING, }; t.createTextureTracked(descriptor); }); @@ -101,9 +101,18 @@ Test that it is invalid to configure a GPUCanvasContext to 'GPUStorageBinding' u } return usageSet; }) + .unless(({ usage }) => { + return !IsValidTextureUsageCombination(usage); + }) ) .fn(t => { const { canvasType, usage } = t.params; + + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const canvas = createCanvas(t, canvasType, 1, 1); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas'); @@ -144,9 +153,18 @@ with 'bgra8unorm-storage' enabled. } return usageSet; }) + .unless(({ usage }) => { + return !IsValidTextureUsageCombination(usage); + }) ) .fn(t => { const { canvasType, usage } = t.params; + + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const canvas = createCanvas(t, canvasType, 1, 1); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas'); diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/capability_info.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/capability_info.ts @@ -215,9 +215,10 @@ export const kTextureUsageInfo: { /** List of all GPUTextureUsage values. */ export const kTextureUsages = numericKeysOf<GPUTextureUsageFlags>(kTextureUsageInfo); -/** Check if `usage` is TRANSIENT_ATTACHMENT | RENDER_ATTACHMENT. */ -export function IsValidTransientAttachmentUsage(usage: GPUTextureUsageFlags): boolean { +/** Check if `usage` does not contain TRANSIENT_ATTACHMENT or is TRANSIENT_ATTACHMENT | RENDER_ATTACHMENT. */ +export function IsValidTextureUsageCombination(usage: GPUTextureUsageFlags): boolean { return ( + (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) === 0 || usage === (GPUConst.TextureUsage.TRANSIENT_ATTACHMENT | GPUConst.TextureUsage.RENDER_ATTACHMENT) ); } @@ -402,12 +403,12 @@ export const kPerStageBindingLimits: { } = /* prettier-ignore */ { 'uniformBuf': { class: 'uniformBuf', maxLimits: { COMPUTE: 'maxUniformBuffersPerShaderStage', FRAGMENT: 'maxUniformBuffersPerShaderStage', VERTEX: 'maxUniformBuffersPerShaderStage' } }, - 'storageBuf': { class: 'storageBuf', maxLimits: { COMPUTE: 'maxStorageBuffersPerShaderStage', FRAGMENT: 'maxStorageBuffersPerShaderStage', VERTEX: 'maxStorageBuffersPerShaderStage' } }, + 'storageBuf': { class: 'storageBuf', maxLimits: { COMPUTE: 'maxStorageBuffersPerShaderStage', FRAGMENT: 'maxStorageBuffersInFragmentStage', VERTEX: 'maxStorageBuffersInVertexStage' } }, 'sampler': { class: 'sampler', maxLimits: { COMPUTE: 'maxSamplersPerShaderStage', FRAGMENT: 'maxSamplersPerShaderStage', VERTEX: 'maxSamplersPerShaderStage' } }, 'sampledTex': { class: 'sampledTex', maxLimits: { COMPUTE: 'maxSampledTexturesPerShaderStage', FRAGMENT: 'maxSampledTexturesPerShaderStage', VERTEX: 'maxSampledTexturesPerShaderStage' } }, - 'readonlyStorageTex': { class: 'readonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesPerShaderStage', VERTEX: 'maxStorageTexturesPerShaderStage' } }, - 'writeonlyStorageTex': { class: 'writeonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesPerShaderStage', VERTEX: 'maxStorageTexturesPerShaderStage' } }, - 'readwriteStorageTex': { class: 'readwriteStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesPerShaderStage', VERTEX: 'maxStorageTexturesPerShaderStage'} }, + 'readonlyStorageTex': { class: 'readonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesInFragmentStage', VERTEX: 'maxStorageTexturesInVertexStage' } }, + 'writeonlyStorageTex': { class: 'writeonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesInFragmentStage', VERTEX: 'maxStorageTexturesInVertexStage' } }, + 'readwriteStorageTex': { class: 'readwriteStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesInFragmentStage', VERTEX: 'maxStorageTexturesInVertexStage'} }, }; /** @@ -738,7 +739,7 @@ const [kLimitInfoKeys, kLimitInfoDefaults, kLimitInfoData] = [ 'maximum', , , kMaxUnsignedLongValue] as const, { 'maxTextureDimension1D': [ , 8192, 4096, ], 'maxTextureDimension2D': [ , 8192, 4096, ], - 'maxTextureDimension3D': [ , 2048, 1024, ], + 'maxTextureDimension3D': [ , 2048, 2048, ], 'maxTextureArrayLayers': [ , 256, 256, ], 'maxBindGroups': [ , 4, 4, ], @@ -776,17 +777,8 @@ const [kLimitInfoKeys, kLimitInfoDefaults, kLimitInfoData] = 'maxComputeWorkgroupSizeY': [ , 256, 128, ], 'maxComputeWorkgroupSizeZ': [ , 64, 64, ], 'maxComputeWorkgroupsPerDimension': [ , 65535, 65535, ], - 'maxImmediateSize': [ , 64, 64, ], } as const]; -// MAINTENANCE_TODO: Remove when the compat spec is merged. -const kCompatOnlyLimits = [ - 'maxStorageTexturesInFragmentStage', - 'maxStorageTexturesInVertexStage', - 'maxStorageBuffersInFragmentStage', - 'maxStorageBuffersInVertexStage', -] as const; - /** * Feature levels corresponding to core WebGPU and WebGPU * in compatibility mode. They can be passed to @@ -824,14 +816,7 @@ export const kLimitClasses = Object.fromEntries( ); export function getDefaultLimits(featureLevel: FeatureLevel) { - return Object.fromEntries( - Object.entries(kLimitInfos[featureLevel]).filter(([k]) => { - // Filter out compat-only limits when in core mode - return featureLevel === 'core' - ? !kCompatOnlyLimits.includes(k as (typeof kCompatOnlyLimits)[number]) - : true; - }) - ) as typeof kLimitInfoCore; + return kLimitInfos[featureLevel]; } /** diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/constants.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/constants.ts @@ -28,9 +28,7 @@ const TextureUsage = { COPY_SRC: 0x01, COPY_DST: 0x02, TEXTURE_BINDING: 0x04, - SAMPLED: 0x04, STORAGE_BINDING: 0x08, - STORAGE: 0x08, RENDER_ATTACHMENT: 0x10, TRANSIENT_ATTACHMENT: 0x20, } as const; diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/format_info.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/format_info.ts @@ -2466,6 +2466,21 @@ export function isTextureFormatPossiblyMultisampled(format: GPUTextureFormat) { } /** + * Returns true if a texture can possibly be resolved. + * The texture may require certain features to be enabled. + */ +export function isTextureFormatPossiblyResolvable(format: GPUTextureFormat) { + if (format === 'rg11b10ufloat') { + return true; + } + if (isTextureFormatTier1EnablesResolve(format)) { + return true; + } + const info = kTextureFormatInfo[format]; + return !!info.colorRender?.resolve; +} + +/** * Returns true if a texture can possibly be used as a storage texture. * The texture may require certain features to be enabled. */ diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/gpu_test.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/gpu_test.ts @@ -676,6 +676,15 @@ export class GPUTestBase extends Fixture<GPUTestSubcaseBatchState> { return lf !== undefined && lf.has(langFeature); } + /** Skips this test case if the GPUTextureUsage `TRANSIENT_ATTACHMENT` is *not* supported. */ + skipIfTransientAttachmentNotSupported() { + const isTransientAttachmentSupported = 'TRANSIENT_ATTACHMENT' in GPUTextureUsage; + this.skipIf( + !isTransientAttachmentSupported, + 'GPUTextureUsage TRANSIENT_ATTACHMENT is not supported' + ); + } + /** * Expect a GPUBuffer's contents to pass the provided check. * diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/idl/constants/flags.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/idl/constants/flags.spec.ts @@ -29,7 +29,15 @@ g.test('BufferUsage,values') t.assertMember(GPUBufferUsage, kBufferUsageExp, key); }); -const kTextureUsageExp = { +const kTextureUsageExp: { + COPY_SRC: number; + COPY_DST: number; + TEXTURE_BINDING: number; + STORAGE_BINDING: number; + RENDER_ATTACHMENT: number; + // MAINTENANCE_TODO(#4509): Remove explicit type annotation when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + TRANSIENT_ATTACHMENT?: number; +} = { COPY_SRC: 0x01, COPY_DST: 0x02, TEXTURE_BINDING: 0x04, @@ -38,12 +46,20 @@ const kTextureUsageExp = { TRANSIENT_ATTACHMENT: 0x20, }; g.test('TextureUsage,count').fn(t => { + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (!('TRANSIENT_ATTACHMENT' in GPUTextureUsage)) { + delete kTextureUsageExp.TRANSIENT_ATTACHMENT; + } t.assertMemberCount(GPUTextureUsage, kTextureUsageExp); }); g.test('TextureUsage,values') .params(u => u.combine('key', Object.keys(kTextureUsageExp))) .fn(t => { const { key } = t.params; + + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + t.skipIf(key === 'TRANSIENT_ATTACHMENT' && !('TRANSIENT_ATTACHMENT' in GPUTextureUsage)); + t.assertMember(GPUTextureUsage, kTextureUsageExp, key); }); diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/web_platform/canvas/configure.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/web_platform/canvas/configure.spec.ts @@ -8,7 +8,11 @@ TODO: import { makeTestGroup } from '../../../common/framework/test_group.js'; import { assert } from '../../../common/util/util.js'; -import { kCanvasTextureFormats, kTextureUsages } from '../../capability_info.js'; +import { + kCanvasTextureFormats, + kTextureUsages, + IsValidTextureUsageCombination, +} from '../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { kAllTextureFormats, @@ -212,10 +216,18 @@ g.test('usage') } return usageSet; }) + .unless(({ usage }) => { + return !IsValidTextureUsageCombination(usage); + }) ) .fn(t => { const { canvasType, usage } = t.params; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const canvas = createCanvas(t, canvasType, 2, 2); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas'); 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 = 'f7d27f91423683338da291a4a8bdb10dabebb42d'; +const version = 'b231a8cb24882dc5cb19655053515c4c34f28520'; 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: f7d27f91423683338da291a4a8bdb10dabebb42d (2025-12-05T21:09:46Z). - revision: f7d27f91423683338da291a4a8bdb10dabebb42d + release: b231a8cb24882dc5cb19655053515c4c34f28520 (2025-12-12T23:54:56Z). + revision: b231a8cb24882dc5cb19655053515c4c34f28520 license: ['BSD-3-Clause'] updatebot: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/adapter/requestDevice/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/adapter/requestDevice/cts.https.html.ini @@ -96,9 +96,6 @@ [:limit="maxDynamicUniformBuffersPerPipelineLayout"] - [:limit="maxImmediateSize"] - expected: FAIL - [:limit="maxInterStageShaderVariables"] [:limit="maxSampledTexturesPerShaderStage"] @@ -108,14 +105,18 @@ [:limit="maxStorageBufferBindingSize"] [:limit="maxStorageBuffersInFragmentStage"] + expected: FAIL [:limit="maxStorageBuffersInVertexStage"] + expected: FAIL [:limit="maxStorageBuffersPerShaderStage"] [:limit="maxStorageTexturesInFragmentStage"] + expected: FAIL [:limit="maxStorageTexturesInVertexStage"] + expected: FAIL [:limit="maxStorageTexturesPerShaderStage"] @@ -173,9 +174,6 @@ [:limit="maxDynamicUniformBuffersPerPipelineLayout"] - [:limit="maxImmediateSize"] - expected: FAIL - [:limit="maxInterStageShaderVariables"] [:limit="maxSampledTexturesPerShaderStage"] @@ -185,14 +183,18 @@ [:limit="maxStorageBufferBindingSize"] [:limit="maxStorageBuffersInFragmentStage"] + expected: FAIL [:limit="maxStorageBuffersInVertexStage"] + expected: FAIL [:limit="maxStorageBuffersPerShaderStage"] [:limit="maxStorageTexturesInFragmentStage"] + expected: FAIL [:limit="maxStorageTexturesInVertexStage"] + expected: FAIL [:limit="maxStorageTexturesPerShaderStage"] @@ -253,9 +255,6 @@ [:limit="maxDynamicUniformBuffersPerPipelineLayout"] - [:limit="maxImmediateSize"] - expected: FAIL - [:limit="maxInterStageShaderVariables"] [:limit="maxSampledTexturesPerShaderStage"] @@ -265,14 +264,18 @@ [:limit="maxStorageBufferBindingSize"] [:limit="maxStorageBuffersInFragmentStage"] + expected: FAIL [:limit="maxStorageBuffersInVertexStage"] + expected: FAIL [:limit="maxStorageBuffersPerShaderStage"] [:limit="maxStorageTexturesInFragmentStage"] + expected: FAIL [:limit="maxStorageTexturesInVertexStage"] + expected: FAIL [:limit="maxStorageTexturesPerShaderStage"] @@ -344,9 +347,6 @@ [:limit="maxDynamicUniformBuffersPerPipelineLayout"] expected: FAIL - [:limit="maxImmediateSize"] - expected: FAIL - [:limit="maxInterStageShaderVariables"] expected: FAIL @@ -360,15 +360,19 @@ expected: FAIL [:limit="maxStorageBuffersInFragmentStage"] + expected: FAIL [:limit="maxStorageBuffersInVertexStage"] + expected: FAIL [:limit="maxStorageBuffersPerShaderStage"] expected: FAIL [:limit="maxStorageTexturesInFragmentStage"] + expected: FAIL [:limit="maxStorageTexturesInVertexStage"] + expected: FAIL [:limit="maxStorageTexturesPerShaderStage"] expected: FAIL 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 @@ -1338,7 +1338,8 @@ [:srcFormat="rgba8unorm";dstFormat="rgba8unorm";dimension="2d"] expected: - if debug: [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] [:srcFormat="rgba8unorm";dstFormat="rgba8unorm";dimension="3d"] expected: @@ -1378,7 +1379,7 @@ if debug: backlog expected: if os == "linux" and debug: [OK, TIMEOUT] - if os == "mac" and debug: TIMEOUT + if os == "mac" and debug: [OK, TIMEOUT] [:srcFormat="bgra8unorm";dstFormat="bgra8unorm";dimension="1d"] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] @@ -1530,17 +1531,17 @@ [:srcFormat="rg11b10ufloat";dstFormat="rg11b10ufloat";dimension="1d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rg11b10ufloat";dstFormat="rg11b10ufloat";dimension="2d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rg11b10ufloat";dstFormat="rg11b10ufloat";dimension="3d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rg16float";dstFormat="rg16float";dimension="1d"] expected: @@ -1683,37 +1684,37 @@ [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="3d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb10a2unorm";dstFormat="rgb10a2unorm";dimension="1d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb10a2unorm";dstFormat="rgb10a2unorm";dimension="2d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb10a2unorm";dstFormat="rgb10a2unorm";dimension="3d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb9e5ufloat";dstFormat="rgb9e5ufloat";dimension="1d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb9e5ufloat";dstFormat="rgb9e5ufloat";dimension="2d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgb9e5ufloat";dstFormat="rgb9e5ufloat";dimension="3d"] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:srcFormat="rgba16float";dstFormat="rgba16float";dimension="1d"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/render_pass/resolve/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/render_pass/resolve/cts.https.html.ini @@ -1,18 +1,202 @@ [cts.https.html?q=webgpu:api,operation,render_pass,resolve:render_pass_resolve:*] implementation-status: if os == "mac": backlog - [:separateResolvePass=false;storeOperation="discard"] + [:colorFormat="bgra8unorm";separateResolvePass=false;storeOperation="discard"] expected: if os == "mac": FAIL - [:separateResolvePass=false;storeOperation="store"] + [:colorFormat="bgra8unorm";separateResolvePass=false;storeOperation="store"] expected: if os == "mac": FAIL - [:separateResolvePass=true;storeOperation="discard"] + [:colorFormat="bgra8unorm";separateResolvePass=true;storeOperation="discard"] expected: if os == "mac": FAIL - [:separateResolvePass=true;storeOperation="store"] + [:colorFormat="bgra8unorm";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="bgra8unorm-srgb";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="bgra8unorm-srgb";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="bgra8unorm-srgb";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="bgra8unorm-srgb";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="r16float";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="r16float";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="r16float";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="r16float";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="r8snorm";separateResolvePass=false;storeOperation="discard"] + + [:colorFormat="r8snorm";separateResolvePass=false;storeOperation="store"] + + [:colorFormat="r8snorm";separateResolvePass=true;storeOperation="discard"] + + [:colorFormat="r8snorm";separateResolvePass=true;storeOperation="store"] + + [:colorFormat="r8unorm";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="r8unorm";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="r8unorm";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="r8unorm";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg11b10ufloat";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg11b10ufloat";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg11b10ufloat";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg11b10ufloat";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg16float";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg16float";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg16float";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg16float";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg8snorm";separateResolvePass=false;storeOperation="discard"] + + [:colorFormat="rg8snorm";separateResolvePass=false;storeOperation="store"] + + [:colorFormat="rg8snorm";separateResolvePass=true;storeOperation="discard"] + + [:colorFormat="rg8snorm";separateResolvePass=true;storeOperation="store"] + + [:colorFormat="rg8unorm";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg8unorm";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg8unorm";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rg8unorm";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgb10a2unorm";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgb10a2unorm";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgb10a2unorm";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgb10a2unorm";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba16float";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba16float";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba16float";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba16float";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8snorm";separateResolvePass=false;storeOperation="discard"] + + [:colorFormat="rgba8snorm";separateResolvePass=false;storeOperation="store"] + + [:colorFormat="rgba8snorm";separateResolvePass=true;storeOperation="discard"] + + [:colorFormat="rgba8snorm";separateResolvePass=true;storeOperation="store"] + + [:colorFormat="rgba8unorm";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm";separateResolvePass=true;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm-srgb";separateResolvePass=false;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm-srgb";separateResolvePass=false;storeOperation="store"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm-srgb";separateResolvePass=true;storeOperation="discard"] + expected: + if os == "mac": FAIL + + [:colorFormat="rgba8unorm-srgb";separateResolvePass=true;storeOperation="store"] expected: if os == "mac": FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/storage_texture/read_write/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/operation/storage_texture/read_write/cts.https.html.ini @@ -204,7 +204,8 @@ [:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1] expected: - if os == "linux": FAIL + if os == "linux" and debug: [PASS, FAIL] + if os == "linux" and not debug: FAIL [:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage/cts.https.html.ini @@ -1,292 +1,439 @@ [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:auto_upgraded_from_per_stage,maxStorageBuffersPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:auto_upgrades_per_stage,maxStorageBuffersPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:createBindGroupLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:createPipeline,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=true] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:createPipelineLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";type="storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="read-only-storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="read-only-storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="read-only-storage";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="storage";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="storage";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";type="storage";order="shiftByHalf"] + expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage/cts.https.html.ini @@ -1,172 +1,259 @@ [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:auto_upgraded_from_per_stage,maxStorageBuffersPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:auto_upgrades_per_stage,maxStorageBuffersPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createBindGroupLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipeline,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=true] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipelineLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage/cts.https.html.ini @@ -1,412 +1,619 @@ [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:auto_upgraded_from_per_stage,maxStorageTexturesPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:auto_upgrades_per_stage,maxStorageTexturesPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:createBindGroupLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:createPipeline,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=true] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:createPipelineLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";access="write-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-only";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-write";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-write";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="read-write";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="write-only";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="write-only";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";access="write-only";order="shiftByHalf"] + expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage/cts.https.html.ini @@ -1,172 +1,259 @@ [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:auto_upgraded_from_per_stage,maxStorageTexturesPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:auto_upgrades_per_stage,maxStorageTexturesPerShaderStage:*] + implementation-status: backlog [:] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:createBindGroupLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:createPipeline,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";async=true] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=false] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";async=true] + expected: FAIL [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:createPipelineLayout,at_over:*] + implementation-status: backlog [:limitTest="atDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="atMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="overMaximum";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="atLimit";order="shiftByHalf"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="backward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="forward"] + expected: FAIL [:limitTest="underDefault";testValueName="overLimit";order="shiftByHalf"] + expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createBindGroup/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createBindGroup/cts.https.html.ini @@ -579,7 +579,8 @@ [cts.https.html?q=webgpu:api,validation,createBindGroup:external_texture,texture_view,usage:*] - implementation-status: backlog + implementation-status: + if os == "linux": backlog [:usage0=16;usage1=1] expected: if os == "linux": FAIL @@ -593,7 +594,6 @@ if os == "linux": FAIL [:usage0=16;usage1=32] - expected: FAIL [:usage0=16;usage1=4] expected: @@ -644,7 +644,6 @@ if os == "linux": FAIL [:usage0=32;usage1=16] - expected: FAIL [:usage0=4;usage1=1] expected: @@ -4239,7 +4238,6 @@ [cts.https.html?q=webgpu:api,validation,createBindGroup:storage_texture,usage:*] - implementation-status: backlog [:usage0=16;usage1=1] [:usage0=16;usage1=16] @@ -4247,7 +4245,6 @@ [:usage0=16;usage1=2] [:usage0=16;usage1=32] - expected: FAIL [:usage0=16;usage1=4] @@ -4274,7 +4271,6 @@ [:usage0=2;usage1=8] [:usage0=32;usage1=16] - expected: FAIL [:usage0=4;usage1=1] @@ -4304,9 +4300,7 @@ [cts.https.html?q=webgpu:api,validation,createBindGroup:texture_binding_must_have_correct_usage:*] - implementation-status: backlog [:] - expected: FAIL [cts.https.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_component_type:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createBindGroupLayout/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createBindGroupLayout/cts.https.html.ini @@ -11,9 +11,12 @@ [cts.https.html?q=webgpu:api,validation,createBindGroupLayout:max_resources_per_stage,in_bind_group_layout:*] + implementation-status: backlog [:maxedEntry={"buffer":{"type":"read-only-storage"}}] + expected: FAIL [:maxedEntry={"buffer":{"type":"storage"}}] + expected: FAIL [:maxedEntry={"buffer":{"type":"uniform"}}] @@ -24,10 +27,13 @@ [:maxedEntry={"sampler":{"type":"non-filtering"}}] [:maxedEntry={"storageTexture":{"access":"read-only","format":"r32float"}}] + expected: FAIL [:maxedEntry={"storageTexture":{"access":"read-write","format":"r32float"}}] + expected: FAIL [:maxedEntry={"storageTexture":{"access":"write-only","format":"r32float"}}] + expected: FAIL [:maxedEntry={"texture":{"multisampled":false,"sampleType":"unfilterable-float"}}] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createPipelineLayout/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createPipelineLayout/cts.https.html.ini @@ -25,8 +25,6 @@ [cts.https.html?q=webgpu:api,validation,createPipelineLayout:number_of_dynamic_buffers_exceeds_the_maximum_value:*] - implementation-status: - if os == "linux": backlog + implementation-status: backlog [:] - expected: - if os == "linux": FAIL + expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createTexture/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/createTexture/cts.https.html.ini @@ -1481,7 +1481,6 @@ [cts.https.html?q=webgpu:api,validation,createTexture:sampleCount,valid_sampleCount_with_other_parameter_varies:*] - implementation-status: backlog [:dimension="1d";format="bgra8unorm"] [:dimension="1d";format="bgra8unorm-srgb"] @@ -1653,10 +1652,8 @@ [:dimension="2d";format="bc7-rgba-unorm-srgb"] [:dimension="2d";format="bgra8unorm"] - expected: FAIL [:dimension="2d";format="bgra8unorm-srgb"] - expected: FAIL [:dimension="2d";format="depth16unorm"] @@ -1689,117 +1686,86 @@ [:dimension="2d";format="etc2-rgba8unorm-srgb"] [:dimension="2d";format="r16float"] - expected: FAIL [:dimension="2d";format="r16sint"] - expected: FAIL [:dimension="2d";format="r16snorm"] [:dimension="2d";format="r16uint"] - expected: FAIL [:dimension="2d";format="r16unorm"] [:dimension="2d";format="r32float"] - expected: FAIL [:dimension="2d";format="r32sint"] - expected: FAIL [:dimension="2d";format="r32uint"] - expected: FAIL [:dimension="2d";format="r8sint"] - expected: FAIL [:dimension="2d";format="r8snorm"] [:dimension="2d";format="r8uint"] - expected: FAIL [:dimension="2d";format="r8unorm"] - expected: FAIL [:dimension="2d";format="rg11b10ufloat"] - expected: FAIL [:dimension="2d";format="rg16float"] - expected: FAIL [:dimension="2d";format="rg16sint"] - expected: FAIL [:dimension="2d";format="rg16snorm"] [:dimension="2d";format="rg16uint"] - expected: FAIL [:dimension="2d";format="rg16unorm"] [:dimension="2d";format="rg32float"] - expected: FAIL [:dimension="2d";format="rg32sint"] - expected: FAIL [:dimension="2d";format="rg32uint"] - expected: FAIL [:dimension="2d";format="rg8sint"] - expected: FAIL [:dimension="2d";format="rg8snorm"] [:dimension="2d";format="rg8uint"] - expected: FAIL [:dimension="2d";format="rg8unorm"] - expected: FAIL [:dimension="2d";format="rgb10a2uint"] - expected: FAIL [:dimension="2d";format="rgb10a2unorm"] - expected: FAIL [:dimension="2d";format="rgb9e5ufloat"] [:dimension="2d";format="rgba16float"] - expected: FAIL [:dimension="2d";format="rgba16sint"] - expected: FAIL [:dimension="2d";format="rgba16snorm"] [:dimension="2d";format="rgba16uint"] - expected: FAIL [:dimension="2d";format="rgba16unorm"] [:dimension="2d";format="rgba32float"] - expected: FAIL [:dimension="2d";format="rgba32sint"] - expected: FAIL [:dimension="2d";format="rgba32uint"] - expected: FAIL [:dimension="2d";format="rgba8sint"] - expected: FAIL [:dimension="2d";format="rgba8snorm"] [:dimension="2d";format="rgba8uint"] - expected: FAIL [:dimension="2d";format="rgba8unorm"] - expected: FAIL [:dimension="2d";format="rgba8unorm-srgb"] - expected: FAIL [:dimension="2d";format="stencil8"] @@ -5518,7 +5484,6 @@ [cts.https.html?q=webgpu:api,validation,createTexture:texture_usage:*] - implementation-status: backlog [:dimension="1d";format="bgra8unorm"] [:dimension="1d";format="bgra8unorm-srgb"] @@ -5690,25 +5655,18 @@ [:dimension="2d";format="bc7-rgba-unorm-srgb"] [:dimension="2d";format="bgra8unorm"] - expected: FAIL [:dimension="2d";format="bgra8unorm-srgb"] - expected: FAIL [:dimension="2d";format="depth16unorm"] - expected: FAIL [:dimension="2d";format="depth24plus"] - expected: FAIL [:dimension="2d";format="depth24plus-stencil8"] - expected: FAIL [:dimension="2d";format="depth32float"] - expected: FAIL [:dimension="2d";format="depth32float-stencil8"] - expected: FAIL [:dimension="2d";format="eac-r11snorm"] @@ -5731,120 +5689,88 @@ [:dimension="2d";format="etc2-rgba8unorm-srgb"] [:dimension="2d";format="r16float"] - expected: FAIL [:dimension="2d";format="r16sint"] - expected: FAIL [:dimension="2d";format="r16snorm"] [:dimension="2d";format="r16uint"] - expected: FAIL [:dimension="2d";format="r16unorm"] [:dimension="2d";format="r32float"] - expected: FAIL [:dimension="2d";format="r32sint"] - expected: FAIL [:dimension="2d";format="r32uint"] - expected: FAIL [:dimension="2d";format="r8sint"] - expected: FAIL [:dimension="2d";format="r8snorm"] [:dimension="2d";format="r8uint"] - expected: FAIL [:dimension="2d";format="r8unorm"] - expected: FAIL [:dimension="2d";format="rg11b10ufloat"] - expected: FAIL [:dimension="2d";format="rg16float"] - expected: FAIL [:dimension="2d";format="rg16sint"] - expected: FAIL [:dimension="2d";format="rg16snorm"] [:dimension="2d";format="rg16uint"] - expected: FAIL [:dimension="2d";format="rg16unorm"] [:dimension="2d";format="rg32float"] - expected: FAIL [:dimension="2d";format="rg32sint"] - expected: FAIL [:dimension="2d";format="rg32uint"] - expected: FAIL [:dimension="2d";format="rg8sint"] - expected: FAIL [:dimension="2d";format="rg8snorm"] [:dimension="2d";format="rg8uint"] - expected: FAIL [:dimension="2d";format="rg8unorm"] - expected: FAIL [:dimension="2d";format="rgb10a2uint"] - expected: FAIL [:dimension="2d";format="rgb10a2unorm"] - expected: FAIL [:dimension="2d";format="rgb9e5ufloat"] [:dimension="2d";format="rgba16float"] - expected: FAIL [:dimension="2d";format="rgba16sint"] - expected: FAIL [:dimension="2d";format="rgba16snorm"] [:dimension="2d";format="rgba16uint"] - expected: FAIL [:dimension="2d";format="rgba16unorm"] [:dimension="2d";format="rgba32float"] - expected: FAIL [:dimension="2d";format="rgba32sint"] - expected: FAIL [:dimension="2d";format="rgba32uint"] - expected: FAIL [:dimension="2d";format="rgba8sint"] - expected: FAIL [:dimension="2d";format="rgba8snorm"] [:dimension="2d";format="rgba8uint"] - expected: FAIL [:dimension="2d";format="rgba8unorm"] - expected: FAIL [:dimension="2d";format="rgba8unorm-srgb"] - expected: FAIL [:dimension="2d";format="stencil8"] - expected: FAIL [:dimension="3d";format="astc-10x10-unorm"] @@ -5931,123 +5857,90 @@ [:dimension="3d";format="bc7-rgba-unorm-srgb"] [:dimension="3d";format="bgra8unorm"] - expected: FAIL [:dimension="3d";format="bgra8unorm-srgb"] - expected: FAIL [:dimension="3d";format="r16float"] - expected: FAIL [:dimension="3d";format="r16sint"] - expected: FAIL [:dimension="3d";format="r16snorm"] [:dimension="3d";format="r16uint"] - expected: FAIL [:dimension="3d";format="r16unorm"] [:dimension="3d";format="r32float"] - expected: FAIL [:dimension="3d";format="r32sint"] - expected: FAIL [:dimension="3d";format="r32uint"] - expected: FAIL [:dimension="3d";format="r8sint"] - expected: FAIL [:dimension="3d";format="r8snorm"] [:dimension="3d";format="r8uint"] - expected: FAIL [:dimension="3d";format="r8unorm"] - expected: FAIL [:dimension="3d";format="rg11b10ufloat"] - expected: FAIL [:dimension="3d";format="rg16float"] - expected: FAIL [:dimension="3d";format="rg16sint"] - expected: FAIL [:dimension="3d";format="rg16snorm"] [:dimension="3d";format="rg16uint"] - expected: FAIL [:dimension="3d";format="rg16unorm"] [:dimension="3d";format="rg32float"] - expected: FAIL [:dimension="3d";format="rg32sint"] - expected: FAIL [:dimension="3d";format="rg32uint"] - expected: FAIL [:dimension="3d";format="rg8sint"] - expected: FAIL [:dimension="3d";format="rg8snorm"] [:dimension="3d";format="rg8uint"] - expected: FAIL [:dimension="3d";format="rg8unorm"] - expected: FAIL [:dimension="3d";format="rgb10a2uint"] - expected: FAIL [:dimension="3d";format="rgb10a2unorm"] - expected: FAIL [:dimension="3d";format="rgb9e5ufloat"] [:dimension="3d";format="rgba16float"] - expected: FAIL [:dimension="3d";format="rgba16sint"] - expected: FAIL [:dimension="3d";format="rgba16snorm"] [:dimension="3d";format="rgba16uint"] - expected: FAIL [:dimension="3d";format="rgba16unorm"] [:dimension="3d";format="rgba32float"] - expected: FAIL [:dimension="3d";format="rgba32sint"] - expected: FAIL [:dimension="3d";format="rgba32uint"] - expected: FAIL [:dimension="3d";format="rgba8sint"] - expected: FAIL [:dimension="3d";format="rgba8snorm"] [:dimension="3d";format="rgba8uint"] - expected: FAIL [:dimension="3d";format="rgba8unorm"] - expected: FAIL [:dimension="3d";format="rgba8unorm-srgb"] - expected: FAIL [:dimension="_undef_";format="astc-10x10-unorm"] @@ -6134,25 +6027,18 @@ [:dimension="_undef_";format="bc7-rgba-unorm-srgb"] [:dimension="_undef_";format="bgra8unorm"] - expected: FAIL [:dimension="_undef_";format="bgra8unorm-srgb"] - expected: FAIL [:dimension="_undef_";format="depth16unorm"] - expected: FAIL [:dimension="_undef_";format="depth24plus"] - expected: FAIL [:dimension="_undef_";format="depth24plus-stencil8"] - expected: FAIL [:dimension="_undef_";format="depth32float"] - expected: FAIL [:dimension="_undef_";format="depth32float-stencil8"] - expected: FAIL [:dimension="_undef_";format="eac-r11snorm"] @@ -6175,120 +6061,88 @@ [:dimension="_undef_";format="etc2-rgba8unorm-srgb"] [:dimension="_undef_";format="r16float"] - expected: FAIL [:dimension="_undef_";format="r16sint"] - expected: FAIL [:dimension="_undef_";format="r16snorm"] [:dimension="_undef_";format="r16uint"] - expected: FAIL [:dimension="_undef_";format="r16unorm"] [:dimension="_undef_";format="r32float"] - expected: FAIL [:dimension="_undef_";format="r32sint"] - expected: FAIL [:dimension="_undef_";format="r32uint"] - expected: FAIL [:dimension="_undef_";format="r8sint"] - expected: FAIL [:dimension="_undef_";format="r8snorm"] [:dimension="_undef_";format="r8uint"] - expected: FAIL [:dimension="_undef_";format="r8unorm"] - expected: FAIL [:dimension="_undef_";format="rg11b10ufloat"] - expected: FAIL [:dimension="_undef_";format="rg16float"] - expected: FAIL [:dimension="_undef_";format="rg16sint"] - expected: FAIL [:dimension="_undef_";format="rg16snorm"] [:dimension="_undef_";format="rg16uint"] - expected: FAIL [:dimension="_undef_";format="rg16unorm"] [:dimension="_undef_";format="rg32float"] - expected: FAIL [:dimension="_undef_";format="rg32sint"] - expected: FAIL [:dimension="_undef_";format="rg32uint"] - expected: FAIL [:dimension="_undef_";format="rg8sint"] - expected: FAIL [:dimension="_undef_";format="rg8snorm"] [:dimension="_undef_";format="rg8uint"] - expected: FAIL [:dimension="_undef_";format="rg8unorm"] - expected: FAIL [:dimension="_undef_";format="rgb10a2uint"] - expected: FAIL [:dimension="_undef_";format="rgb10a2unorm"] - expected: FAIL [:dimension="_undef_";format="rgb9e5ufloat"] [:dimension="_undef_";format="rgba16float"] - expected: FAIL [:dimension="_undef_";format="rgba16sint"] - expected: FAIL [:dimension="_undef_";format="rgba16snorm"] [:dimension="_undef_";format="rgba16uint"] - expected: FAIL [:dimension="_undef_";format="rgba16unorm"] [:dimension="_undef_";format="rgba32float"] - expected: FAIL [:dimension="_undef_";format="rgba32sint"] - expected: FAIL [:dimension="_undef_";format="rgba32uint"] - expected: FAIL [:dimension="_undef_";format="rgba8sint"] - expected: FAIL [:dimension="_undef_";format="rgba8snorm"] [:dimension="_undef_";format="rgba8uint"] - expected: FAIL [:dimension="_undef_";format="rgba8unorm"] - expected: FAIL [:dimension="_undef_";format="rgba8unorm-srgb"] - expected: FAIL [:dimension="_undef_";format="stencil8"] - expected: FAIL [cts.https.html?q=webgpu:api,validation,createTexture:viewFormats:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini @@ -10516,6 +10516,4 @@ [cts.https.html?q=webgpu:api,validation,encoding,cmds,copyTextureToTexture:texture_usage:*] - implementation-status: backlog [:] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/encoder_open_state/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/encoder_open_state/cts.https.html.ini @@ -18,9 +18,6 @@ [:command="setBindGroup"] expected: FAIL - [:command="setImmediates"] - expected: FAIL - [:command="setPipeline"] expected: FAIL @@ -75,9 +72,6 @@ [:command="setBindGroup"] expected: FAIL - [:command="setImmediates"] - expected: FAIL - [:command="setIndexBuffer"] expected: FAIL @@ -130,9 +124,6 @@ [:command="setBlendConstant"] expected: FAIL - [:command="setImmediates"] - expected: FAIL - [:command="setIndexBuffer"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/image_copy/buffer_texture_copies/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/image_copy/buffer_texture_copies/cts.https.html.ini @@ -979,9 +979,6 @@ [cts.https.html?q=webgpu:api,validation,image_copy,buffer_texture_copies:texture_buffer_usages:*] - implementation-status: backlog [:copyType="CopyB2T"] - expected: FAIL [:copyType="CopyT2B"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/image_copy/texture_related/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/image_copy/texture_related/cts.https.html.ini @@ -5259,28 +5259,20 @@ expected: FAIL [:method="CopyT2B";dimension="1d";size=[4,1,1\]] - expected: FAIL [:method="CopyT2B";dimension="2d";size=[4,4,1\]] - expected: FAIL [:method="CopyT2B";dimension="2d";size=[4,4,3\]] - expected: FAIL [:method="CopyT2B";dimension="3d";size=[4,4,3\]] - expected: FAIL [:method="WriteTexture";dimension="1d";size=[4,1,1\]] - expected: FAIL [:method="WriteTexture";dimension="2d";size=[4,4,1\]] - expected: FAIL [:method="WriteTexture";dimension="2d";size=[4,4,3\]] - expected: FAIL [:method="WriteTexture";dimension="3d";size=[4,4,3\]] - expected: FAIL [cts.https.html?q=webgpu:api,validation,image_copy,texture_related:valid:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture/cts.https.html.ini @@ -320,9 +320,6 @@ [:usage=2] expected: FAIL - [:usage=32] - expected: FAIL - [:usage=4] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pass/render_pass_descriptor/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pass/render_pass_descriptor/cts.https.html.ini @@ -221,117 +221,83 @@ [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,loadOp_storeOp:*] - implementation-status: backlog [:format="bgra8unorm"] - expected: FAIL [:format="bgra8unorm-srgb"] - expected: FAIL [:format="r16float"] - expected: FAIL [:format="r16sint"] - expected: FAIL [:format="r16snorm"] [:format="r16uint"] - expected: FAIL [:format="r16unorm"] [:format="r32float"] - expected: FAIL [:format="r32sint"] - expected: FAIL [:format="r32uint"] - expected: FAIL [:format="r8sint"] - expected: FAIL [:format="r8uint"] - expected: FAIL [:format="r8unorm"] - expected: FAIL [:format="rg11b10ufloat"] - expected: FAIL [:format="rg16float"] - expected: FAIL [:format="rg16sint"] - expected: FAIL [:format="rg16snorm"] [:format="rg16uint"] - expected: FAIL [:format="rg16unorm"] [:format="rg32float"] - expected: FAIL [:format="rg32sint"] - expected: FAIL [:format="rg32uint"] - expected: FAIL [:format="rg8sint"] - expected: FAIL [:format="rg8uint"] - expected: FAIL [:format="rg8unorm"] - expected: FAIL [:format="rgb10a2uint"] - expected: FAIL [:format="rgb10a2unorm"] - expected: FAIL [:format="rgba16float"] - expected: FAIL [:format="rgba16sint"] - expected: FAIL [:format="rgba16snorm"] [:format="rgba16uint"] - expected: FAIL [:format="rgba16unorm"] [:format="rgba32float"] - expected: FAIL [:format="rgba32sint"] - expected: FAIL [:format="rgba32uint"] - expected: FAIL [:format="rgba8sint"] - expected: FAIL [:format="rgba8uint"] - expected: FAIL [:format="rgba8unorm"] - expected: FAIL [:format="rgba8unorm-srgb"] - expected: FAIL [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,non_multisampled:*] @@ -383,8 +349,6 @@ [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:depth_stencil_attachment,loadOp_storeOp_match_depthReadOnly_stencilReadOnly:*] tags: [webgpu, webgpu-long] implementation-status: backlog - expected: - if os == "mac": TIMEOUT [:format="depth16unorm"] expected: FAIL @@ -392,19 +356,11 @@ expected: FAIL [:format="depth24plus-stencil8"] - expected: - if os == "win": FAIL - if os == "linux": FAIL - if os == "mac": [TIMEOUT, NOTRUN] [:format="depth32float"] expected: FAIL [:format="depth32float-stencil8"] - expected: - if os == "win": FAIL - if os == "linux": FAIL - if os == "mac": [TIMEOUT, NOTRUN] [:format="stencil8"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_render_misc/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_render_misc/cts.https.html.ini @@ -266,9 +266,6 @@ [:bindingType="color-attachment";viewUsage=2] expected: FAIL - [:bindingType="color-attachment";viewUsage=32] - expected: FAIL - [:bindingType="color-attachment";viewUsage=4] expected: FAIL @@ -286,9 +283,6 @@ [:bindingType="readonly-storage-texture";viewUsage=2] expected: FAIL - [:bindingType="readonly-storage-texture";viewUsage=32] - expected: FAIL - [:bindingType="readonly-storage-texture";viewUsage=4] expected: FAIL @@ -305,9 +299,6 @@ [:bindingType="readwrite-storage-texture";viewUsage=2] expected: FAIL - [:bindingType="readwrite-storage-texture";viewUsage=32] - expected: FAIL - [:bindingType="readwrite-storage-texture";viewUsage=4] expected: FAIL @@ -324,9 +315,6 @@ [:bindingType="sampled-texture";viewUsage=2] expected: FAIL - [:bindingType="sampled-texture";viewUsage=32] - expected: FAIL - [:bindingType="sampled-texture";viewUsage=4] [:bindingType="sampled-texture";viewUsage=8] @@ -343,9 +331,6 @@ [:bindingType="writeonly-storage-texture";viewUsage=2] expected: FAIL - [:bindingType="writeonly-storage-texture";viewUsage=32] - expected: FAIL - [:bindingType="writeonly-storage-texture";viewUsage=4] expected: FAIL 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 @@ -1583,7 +1583,8 @@ [:format="astc-5x5-unorm-srgb";usageType="texture";usageCopy="src-dest";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-6x5-unorm";usageType="texture";usageCopy="dst";awaitLost=false] expected: @@ -5725,8 +5726,7 @@ [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] expected: - if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win": [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] @@ -6698,8 +6698,7 @@ [:format="astc-12x10-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -6711,43 +6710,37 @@ [:format="astc-12x12-unorm";usageType="texture";usageCopy="dst";awaitLost=false] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="astc-12x12-unorm";usageType="texture";usageCopy="dst";awaitLost=true] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="astc-12x12-unorm";usageType="texture";usageCopy="none";awaitLost=false] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="astc-12x12-unorm";usageType="texture";usageCopy="none";awaitLost=true] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="astc-12x12-unorm";usageType="texture";usageCopy="src";awaitLost=false] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:format="astc-12x12-unorm";usageType="texture";usageCopy="src";awaitLost=true] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -7701,11 +7694,11 @@ [:format="eac-rg11snorm";usageType="texture";usageCopy="none";awaitLost=false] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="none";awaitLost=true] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="eac-rg11snorm";usageType="texture";usageCopy="src";awaitLost=false] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/texture/bgra8unorm_storage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/texture/bgra8unorm_storage/cts.https.html.ini @@ -8,15 +8,9 @@ [cts.https.html?q=webgpu:api,validation,texture,bgra8unorm_storage:configure_storage_usage_on_canvas_context_without_bgra8unorm_storage:*] - implementation-status: - if os == "linux": backlog [:canvasType="offscreen"] - expected: - if os == "linux": FAIL [:canvasType="onscreen"] - expected: - if os == "linux": FAIL [cts.https.html?q=webgpu:api,validation,texture,bgra8unorm_storage:create_bind_group_layout:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/cts.https.html.ini @@ -53,13 +53,10 @@ [cts.https.html?q=webgpu:idl,constants,flags:TextureUsage,count:*] - implementation-status: backlog [:] - expected: FAIL [cts.https.html?q=webgpu:idl,constants,flags:TextureUsage,values:*] - implementation-status: backlog [:key="COPY_DST"] [:key="COPY_SRC"] @@ -71,4 +68,3 @@ [:key="TEXTURE_BINDING"] [:key="TRANSIENT_ATTACHMENT"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/dedicated.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/dedicated.https.html.ini @@ -53,13 +53,10 @@ [dedicated.https.html?worker=dedicated&q=webgpu:idl,constants,flags:TextureUsage,count:*] - implementation-status: backlog [:] - expected: FAIL [dedicated.https.html?worker=dedicated&q=webgpu:idl,constants,flags:TextureUsage,values:*] - implementation-status: backlog [:key="COPY_DST"] [:key="COPY_SRC"] @@ -71,4 +68,3 @@ [:key="TEXTURE_BINDING"] [:key="TRANSIENT_ATTACHMENT"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/shared.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/constants/flags/shared.https.html.ini @@ -53,13 +53,10 @@ [shared.https.html?worker=shared&q=webgpu:idl,constants,flags:TextureUsage,count:*] - implementation-status: backlog [:] - expected: FAIL [shared.https.html?worker=shared&q=webgpu:idl,constants,flags:TextureUsage,values:*] - implementation-status: backlog [:key="COPY_DST"] [:key="COPY_SRC"] @@ -71,4 +68,3 @@ [:key="TEXTURE_BINDING"] [:key="TRANSIENT_ATTACHMENT"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/cts.https.html.ini @@ -15,18 +15,15 @@ [cts.https.html?q=webgpu:idl,javascript:getter_replacement:*] - implementation-status: backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] [:type="device"] [:type="device.limits"] - expected: FAIL [:type="gpu"] @@ -99,11 +96,11 @@ [cts.https.html?q=webgpu:idl,javascript:obj,for_in:*] - implementation-status: backlog + implementation-status: + if os == "linux": backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] @@ -112,7 +109,6 @@ if os == "linux": FAIL [:type="device.limits"] - expected: FAIL [:type="gpu"] @@ -176,18 +172,15 @@ [cts.https.html?q=webgpu:idl,javascript:readonly_properties:*] - implementation-status: backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] [:type="device"] [:type="device.limits"] - expected: FAIL [:type="gpu"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/dedicated.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/dedicated.https.html.ini @@ -15,18 +15,15 @@ [dedicated.https.html?worker=dedicated&q=webgpu:idl,javascript:getter_replacement:*] - implementation-status: backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] [:type="device"] [:type="device.limits"] - expected: FAIL [:type="gpu"] @@ -99,11 +96,11 @@ [dedicated.https.html?worker=dedicated&q=webgpu:idl,javascript:obj,for_in:*] - implementation-status: backlog + implementation-status: + if os == "linux": backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] @@ -112,7 +109,6 @@ if os == "linux": FAIL [:type="device.limits"] - expected: FAIL [:type="gpu"] @@ -176,18 +172,15 @@ [dedicated.https.html?worker=dedicated&q=webgpu:idl,javascript:readonly_properties:*] - implementation-status: backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] [:type="device"] [:type="device.limits"] - expected: FAIL [:type="gpu"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/shared.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/idl/javascript/shared.https.html.ini @@ -15,18 +15,15 @@ [shared.https.html?worker=shared&q=webgpu:idl,javascript:getter_replacement:*] - implementation-status: backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] [:type="device"] [:type="device.limits"] - expected: FAIL [:type="gpu"] @@ -99,11 +96,11 @@ [shared.https.html?worker=shared&q=webgpu:idl,javascript:obj,for_in:*] - implementation-status: backlog + implementation-status: + if os == "linux": backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] @@ -112,7 +109,6 @@ if os == "linux": FAIL [:type="device.limits"] - expected: FAIL [:type="gpu"] @@ -176,18 +172,15 @@ [shared.https.html?worker=shared&q=webgpu:idl,javascript:readonly_properties:*] - implementation-status: backlog [:type="adapter"] [:type="adapter.limits"] - expected: FAIL [:type="buffer"] [:type="device"] [:type="device.limits"] - expected: FAIL [:type="gpu"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini @@ -9468,7 +9468,8 @@ [:case=374;type="f16";op="subgroupMin";wgSize=[128,1,1\]] expected: - if os == "win": [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -9482,14 +9483,16 @@ [:case=374;type="f32";op="subgroupMax";wgSize=[128,1,1\]] expected: - if os == "win": [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:case=374;type="f32";op="subgroupMax";wgSize=[64,2,1\]] expected: - if os == "win": [TIMEOUT, NOTRUN] + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] 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 @@ -46724,12 +46724,12 @@ [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="m";offset=false] expected: if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="m";offset=true] expected: if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="r";offset=false] expected: @@ -46737,7 +46737,7 @@ [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="r";offset=true] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="m";modeW="c";offset=false] expected: @@ -46770,12 +46770,12 @@ [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="c";offset=false] expected: if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="c";offset=true] expected: if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="m";offset=false] expected: @@ -46788,7 +46788,7 @@ [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="r";offset=false] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="r";offset=true] expected: 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 @@ -7635,43 +7635,37 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="m";modeV="c";offset=false] expected: @@ -7713,15 +7707,13 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="m";offset=false] expected: @@ -7765,113 +7757,97 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="c";modeV="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="c";modeV="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="c";modeV="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="c";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="c";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg16float";filt="linear";modeU="c";modeV="c";offset=false] expected: FAIL @@ -19413,8 +19389,7 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="c";modeV="r";offset=false] expected: @@ -19434,15 +19409,13 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="m";offset=false] expected: @@ -19460,57 +19433,49 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="m";modeV="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="c";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="r";modeV="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rg16float";filt="linear";modeU="c";modeV="c";offset=false] expected: FAIL @@ -54517,14 +54482,22 @@ [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="c";modeW="r";offset=false] [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="m";modeW="c";offset=false] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="m";modeW="m";offset=false] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="m";modeW="r";offset=false] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="r";modeW="c";offset=false] [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="r";modeW="m";offset=false] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:format="rg8snorm";dim="cube";filt="linear";modeU="m";modeV="r";modeW="r";offset=false] @@ -58816,43 +58789,37 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="m";modeW="c";offset=false] expected: @@ -58894,15 +58861,13 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="r";modeW="m";offset=false] expected: @@ -59145,28 +59110,60 @@ if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="c";modeW="c";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="c";modeW="c";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="c";modeW="m";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="c";modeW="m";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="c";modeW="r";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="c";modeW="r";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="m";modeW="c";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="m";modeW="c";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="m";modeW="m";offset=false] expected: @@ -59197,22 +59194,46 @@ if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="r";modeW="c";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="r";modeW="c";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="r";modeW="m";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="r";modeW="m";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="r";modeW="r";offset=false] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="c";modeV="r";modeW="r";offset=true] - expected: FAIL + expected: + if os == "win": FAIL + if os == "linux": FAIL + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac" and not debug: FAIL [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="c";modeW="c";offset=false] expected: @@ -59232,15 +59253,13 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="c";modeW="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="c";modeW="r";offset=false] expected: @@ -59260,85 +59279,73 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="c";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="m";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="m";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="r";offset=false] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="r";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:format="rgba8unorm";dim="3d";filt="nearest";modeU="r";modeV="c";modeW="c";offset=false] expected: 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 @@ -4404,7 +4404,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="depth24plus";filt="nearest";modeU="c";modeV="c";offset=true] expected: @@ -4412,7 +4413,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="depth24plus";filt="nearest";modeU="c";modeV="m";offset=false] expected: @@ -4436,7 +4438,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="depth24plus";filt="nearest";modeU="c";modeV="r";offset=true] expected: @@ -4612,10 +4615,18 @@ if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="m";modeV="m";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] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="m";modeV="m";offset=true] - 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] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="m";modeV="r";offset=false] expected: @@ -4625,13 +4636,18 @@ if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="m";modeV="r";offset=true] - 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] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="r";modeV="c";offset=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] @@ -4639,17 +4655,15 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="r";modeV="m";offset=false] 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" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if debug: [TIMEOUT, NOTRUN] + if not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="r";modeV="m";offset=true] expected: @@ -4663,7 +4677,8 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] @@ -4671,7 +4686,8 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] @@ -4916,7 +4932,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="r";offset=false] expected: 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 @@ -64326,7 +64326,7 @@ expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="rgba8unorm";dim="3d";filt="linear";modeU="c";modeV="c";modeW="c";offset=true] expected: @@ -64846,27 +64846,27 @@ expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="m";offset=true] expected: if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="r";offset=false] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="m";modeW="r";offset=true] expected: if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="rgba8unorm";dim="3d";filt="nearest";modeU="m";modeV="r";modeW="c";offset=false] 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 @@ -49701,7 +49701,7 @@ [:stage="c";format="bc3-rgba-unorm";dim="3d";filt="nearest";mode="c";offset=false] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="c";format="bc3-rgba-unorm";dim="3d";filt="nearest";mode="c";offset=true] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/cts.https.html.ini @@ -1527,13 +1527,15 @@ [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] @@ -1715,25 +1717,29 @@ [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] @@ -4207,6 +4213,8 @@ if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] 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 @@ -4060,12 +4060,12 @@ [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] expected: if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg11b10ufloat";dstPremultiplied=false] expected: @@ -4111,11 +4111,11 @@ [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] expected: @@ -4217,7 +4217,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="rg11b10ufloat";dstPremultiplied=true] 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 @@ -1454,13 +1454,15 @@ [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "linux": [TIMEOUT, NOTRUN] + if os == "linux" and debug: [TIMEOUT, NOTRUN] + if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] 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 = 'f7d27f91423683338da291a4a8bdb10dabebb42d'; +export const version = 'b231a8cb24882dc5cb19655053515c4c34f28520'; diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js @@ -258,8 +258,6 @@ fn(async (t) => { assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS()[limit]; - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo === undefined, 'limit is currently compatibility only'); let value = -1; let result = -1; switch (limitValue) { @@ -279,6 +277,20 @@ fn(async (t) => { const requiredLimits = { [limit]: value }; + if ( + limit === 'maxStorageBuffersInFragmentStage' || + limit === 'maxStorageBuffersInVertexStage') + { + requiredLimits['maxStorageBuffersPerShaderStage'] = value; + } + + if ( + limit === 'maxStorageTexturesInFragmentStage' || + limit === 'maxStorageTexturesInVertexStage') + { + requiredLimits['maxStorageTexturesPerShaderStage'] = value; + } + const device = await t.requestDeviceTracked(adapter, { requiredLimits }); assert(device !== null); t.expect( @@ -323,8 +335,6 @@ fn(async (t) => { assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS(); - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo[limit] === undefined, 'limit is currently compatibility only'); const value = adapter.limits[limit] * mul + add; const requiredLimits = { [limit]: clamp(value, { min: 0, max: limitInfo[limit].maximumValue }) @@ -371,9 +381,6 @@ fn(async (t) => { const adapter = await gpu.requestAdapter(); assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS()[limit]; - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo === undefined, 'limit is currently compatibility only'); - const requiredLimits = { [limit]: value }; @@ -431,9 +438,6 @@ fn(async (t) => { assert(adapter !== null); const limitInfo = getDefaultLimitsForCTS()[limit]; - // MAINTENANCE_TODO: Remove this skip when compatibility limits are merged into spec. - t.skipIf(limitInfo === undefined, 'limit is currently compatibility only'); - const value = limitInfo.default * mul + add; const requiredLimits = { [limit]: clamp(value, { min: 0, max: limitInfo.maximumValue }) diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js @@ -52,11 +52,11 @@ export const kOpInfo = storage: { contexts: ['compute-pass-encoder', 'render-pass-encoder', 'render-bundle-encoder'], readUsage: 0, - writeUsage: GPUConst.TextureUsage.STORAGE + writeUsage: GPUConst.TextureUsage.STORAGE_BINDING }, sample: { contexts: ['compute-pass-encoder', 'render-pass-encoder', 'render-bundle-encoder'], - readUsage: GPUConst.TextureUsage.SAMPLED, + readUsage: GPUConst.TextureUsage.TEXTURE_BINDING, writeUsage: 0 }, 'attachment-store': { diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js @@ -1,6 +1,7 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/export const description = `API Operation Tests for multisample resolve in render passes.`;import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { isTextureFormatPossiblyResolvable, kColorTextureFormats } from '../../../format_info.js'; import { AllFeaturesMaxLimitsGPUTest } from '../../../gpu_test.js'; import * as ttu from '../../../texture_test_utils.js'; @@ -11,7 +12,7 @@ const kSlotsToResolve = [ const kSize = 4; -const kFormat = 'rgba8unorm'; +const kDepthStencilFormat = 'depth24plus-stencil8'; export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest); @@ -27,7 +28,6 @@ Test basic render pass resolve behavior for combinations of: TODO: cases where color attachment and resolve target don't have the same mip level - resolveTarget {2d array layer, TODO: 3d slice} {0, >0} with {2d, TODO: 3d} resolveTarget TODO: cases where color attachment and resolve target don't have the same z (slice or layer) - - TODO: test all renderable color formats - TODO: test that any not-resolved attachments are rendered to correctly. - TODO: test different loadOps - TODO?: resolveTarget mip level {0, >0} (TODO?: different mip level from colorAttachment) @@ -37,18 +37,44 @@ Test basic render pass resolve behavior for combinations of: ). params((u) => u. +combine('colorFormat', kColorTextureFormats). +filter((t) => isTextureFormatPossiblyResolvable(t.colorFormat)). combine('separateResolvePass', [false, true]). combine('storeOperation', ['discard', 'store']). beginSubcases(). +combine('transientColorAttachment', [false, true]) +// Exclude if transient AND (separate pass OR storing) +.unless( + (t) => t.transientColorAttachment && (t.separateResolvePass || t.storeOperation === 'store') +). combine('numColorAttachments', [2, 4]). combine('slotsToResolve', kSlotsToResolve). combine('resolveTargetBaseMipLevel', [0, 1]). -combine('resolveTargetBaseArrayLayer', [0, 1]) +combine('resolveTargetBaseArrayLayer', [0, 1]). +combine('transientDepthStencilAttachment', [false, true]). +combine('depthStencilAttachment', [false, true]). +unless((t) => !t.depthStencilAttachment && t.transientDepthStencilAttachment) ). fn((t) => { + const { colorFormat } = t.params; + t.skipIfTextureFormatNotSupported(colorFormat); + t.skipIfTextureFormatNotResolvable(colorFormat); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (t.params.transientColorAttachment || t.params.transientDepthStencilAttachment) { + t.skipIfTransientAttachmentNotSupported(); + } + const targets = []; for (let i = 0; i < t.params.numColorAttachments; i++) { - targets.push({ format: kFormat }); + targets.push({ format: colorFormat }); + } + + let depthStencil; + if (t.params.depthStencilAttachment) { + depthStencil = { + format: kDepthStencilFormat, + depthWriteEnabled: false + }; } // These shaders will draw a white triangle into a texture. After draw, the top left @@ -95,6 +121,7 @@ fn((t) => { entryPoint: 'main', targets }, + depthStencil, primitive: { topology: 'triangle-list' }, multisample: { count: 4 } }); @@ -110,19 +137,20 @@ fn((t) => { for (let i = 0; i < t.params.numColorAttachments; i++) { const colorAttachment = t. createTextureTracked({ - format: kFormat, + format: colorFormat, size: [kSize, kSize, 1], sampleCount: 4, mipLevelCount: 1, - usage: - GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT + usage: t.params.transientColorAttachment ? + GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT : + GPUTextureUsage.RENDER_ATTACHMENT }). createView(); let resolveTarget; if (t.params.slotsToResolve.includes(i)) { const resolveTargetTexture = t.createTextureTracked({ - format: kFormat, + format: colorFormat, size: [kResolveTargetSize, kResolveTargetSize, t.params.resolveTargetBaseArrayLayer + 1], sampleCount: 1, mipLevelCount: t.params.resolveTargetBaseMipLevel + 1, @@ -162,13 +190,39 @@ fn((t) => { } } + let depthStencilAttachment; + if (t.params.depthStencilAttachment) { + const depthStencilTexture = t.createTextureTracked({ + format: kDepthStencilFormat, + size: [kSize, kSize, 1], + sampleCount: 4, + usage: t.params.transientDepthStencilAttachment ? + GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT : + GPUTextureUsage.RENDER_ATTACHMENT + }); + depthStencilAttachment = { + view: depthStencilTexture.createView(), + depthClearValue: 1.0, + depthLoadOp: 'clear', + depthStoreOp: 'discard', + stencilLoadOp: 'clear', + stencilStoreOp: 'discard' + }; + } + const encoder = t.device.createCommandEncoder(); - const pass = encoder.beginRenderPass({ colorAttachments: drawPassAttachments }); + const pass = encoder.beginRenderPass({ + colorAttachments: drawPassAttachments, + depthStencilAttachment + }); pass.setPipeline(pipeline); pass.draw(3); pass.end(); if (t.params.separateResolvePass) { - const pass = encoder.beginRenderPass({ colorAttachments: resolvePassAttachments }); + const pass = encoder.beginRenderPass({ + colorAttachments: resolvePassAttachments, + depthStencilAttachment + }); pass.end(); } t.device.queue.submit([encoder.finish()]); @@ -180,6 +234,7 @@ fn((t) => { ttu.expectSinglePixelComparisonsAreOkInTexture( t, { texture: resolveTarget, mipLevel: t.params.resolveTargetBaseMipLevel }, + // Note: Channels that do not exist in the actual texture are not compared. [ // Top left pixel should be {1.0, 1.0, 1.0, 1.0}. { coord: { x: 0, y: 0, z }, exp: { R: 1.0, G: 1.0, B: 1.0, A: 1.0 } }, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInFragmentStage.spec.js @@ -24,10 +24,7 @@ const kExtraLimits = { maxBindGroups: 'adapterLimit' }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTENANCE_TODO: remove once this limit is required. - limitOptional: true -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBuffersInVertexStage.spec.js @@ -24,10 +24,7 @@ const kExtraLimits = { maxBindGroups: 'adapterLimit' }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTENANCE_TODO: remove once this limit is required. - limitOptional: true -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInFragmentStage.spec.js @@ -25,10 +25,7 @@ const kExtraLimits = { maxBindGroups: 'adapterLimit' }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTAINANCE_TODO: remove once this limit is required. - limitOptional: true -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageTexturesInVertexStage.spec.js @@ -24,10 +24,7 @@ const kExtraLimits = { maxBindGroups: 'adapterLimit' }; -export const { g, description } = makeLimitTestGroup(limit, { - // MAINTENANCE_TODO: remove once this limit is required. - limitOptional: true -}); +export const { g, description } = makeLimitTestGroup(limit); function createBindGroupLayout( device, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js @@ -23,7 +23,7 @@ import { kTextureViewDimensions, sampledAndStorageBindingEntries, texBindingTypeInfo, - IsValidTransientAttachmentUsage } from + IsValidTextureUsageCombination } from '../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { kPossibleStorageTextureFormats, kRegularTextureFormats } from '../../format_info.js'; @@ -220,6 +220,11 @@ fn((t) => { "The test requires 'r32float' multisampled support which compat mode doesn't guarantee." ); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [{ binding: 0, visibility: GPUShaderStage.COMPUTE, ...entry }] }); @@ -790,11 +795,7 @@ u // .combine('usage0', kTextureUsages). combine('usage1', kTextureUsages). unless(({ usage0, usage1 }) => { - const usage = usage0 | usage1; - return ( - (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0 && - !IsValidTransientAttachmentUsage(usage)); - + return !IsValidTextureUsageCombination(usage0 | usage1); }) ). fn((t) => { @@ -802,6 +803,11 @@ fn((t) => { const usage = usage0 | usage1; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ { @@ -1228,11 +1234,7 @@ u // .combine('usage0', kTextureUsages). combine('usage1', kTextureUsages). unless(({ usage0, usage1 }) => { - const usage = usage0 | usage1; - return ( - (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0 && - !IsValidTransientAttachmentUsage(usage)); - + return !IsValidTextureUsageCombination(usage0 | usage1); }) ). fn((t) => { @@ -1240,6 +1242,11 @@ fn((t) => { const usage = usage0 | usage1; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ { diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createTexture.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createTexture.spec.js @@ -6,7 +6,7 @@ import { assert, makeValueTestVariant } from '../../../common/util/util.js'; import { kTextureDimensions, kTextureUsages, - IsValidTransientAttachmentUsage } from + IsValidTextureUsageCombination } from '../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { @@ -362,6 +362,10 @@ fn((t) => { if ((usage & GPUConst.TextureUsage.RENDER_ATTACHMENT) !== 0) { t.skipIfTextureFormatNotUsableAsRenderAttachment(format); } + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } const { blockWidth, blockHeight } = getBlockInfoForTextureFormat(format); const size = @@ -1017,11 +1021,7 @@ combine('usage1', kTextureUsages) textureFormatAndDimensionPossiblyCompatible(dimension, format) ). unless(({ usage0, usage1 }) => { - const usage = usage0 | usage1; - return ( - (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0 && - !IsValidTransientAttachmentUsage(usage)); - + return !IsValidTextureUsageCombination(usage0 | usage1); }) ). fn((t) => { @@ -1039,6 +1039,11 @@ fn((t) => { usage }; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + let success = true; const appliedDimension = dimension ?? '2d'; // Note that we unconditionally test copy usages for all formats and @@ -1052,11 +1057,6 @@ fn((t) => { if (isColorTextureFormat(format) && !isTextureFormatColorRenderable(t.device, format)) success = false; } - if (usage & GPUTextureUsage.TRANSIENT_ATTACHMENT) { - if (usage !== (GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT)) { - success = false; - } - } t.expectValidationError(() => { t.createTextureTracked(descriptor); diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js @@ -4,6 +4,7 @@ copyTextureToTexture tests. `;import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { kTextureUsages, kTextureDimensions } from '../../../../capability_info.js'; +import { GPUConst } from '../../../../constants.js'; import { kAllTextureFormats, kCompressedTextureFormats, @@ -215,7 +216,14 @@ Test that copyTextureToTexture source/destination need COPY_SRC/COPY_DST usages. paramsSubcasesOnly((u) => u // .combine('srcUsage', kTextureUsages). -combine('dstUsage', kTextureUsages) +combine('dstUsage', kTextureUsages). +unless(({ srcUsage, dstUsage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return ( + srcUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT || + dstUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT); + +}) ). fn((t) => { const { srcUsage, dstUsage } = t.params; diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/encoder_open_state.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/encoder_open_state.spec.js @@ -98,7 +98,6 @@ const kRenderPassEncoderCommandInfo = setScissorRect: {}, setBlendConstant: {}, setStencilReference: {}, - setImmediates: {}, beginOcclusionQuery: {}, endOcclusionQuery: {}, executeBundles: {}, @@ -123,7 +122,6 @@ const kRenderBundleEncoderCommandInfo = setBindGroup: {}, setIndexBuffer: {}, setVertexBuffer: {}, - setImmediates: {}, pushDebugGroup: {}, popDebugGroup: {}, insertDebugMarker: {} @@ -143,7 +141,6 @@ const kComputePassEncoderCommandInfo = setPipeline: {}, dispatchWorkgroups: {}, dispatchWorkgroupsIndirect: {}, - setImmediates: {}, pushDebugGroup: {}, popDebugGroup: {}, insertDebugMarker: {} @@ -394,12 +391,6 @@ fn((t) => { renderPass.setStencilReference(0); } break; - case 'setImmediates': - { - const data = new Uint32Array(1); - renderPass.setImmediates(0, data, 0, 1); - } - break; case 'beginOcclusionQuery': { renderPass.beginOcclusionQuery(0); @@ -511,12 +502,6 @@ fn((t) => { bundleEncoder.setVertexBuffer(1, buffer); } break; - case 'setImmediates': - { - const data = new Uint32Array(1); - bundleEncoder.setImmediates(0, data, 0, 1); - } - break; case 'pushDebugGroup': { bundleEncoder.pushDebugGroup('group'); @@ -599,12 +584,6 @@ fn((t) => { computePass.dispatchWorkgroupsIndirect(indirectBuffer, 0); } break; - case 'setImmediates': - { - const data = new Uint32Array(1); - computePass.setImmediates(0, data, 0, 1); - } - break; case 'pushDebugGroup': { computePass.pushDebugGroup('group'); diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/buffer_texture_copies.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/buffer_texture_copies.spec.js @@ -371,6 +371,10 @@ u // .combine('copyType', ['CopyB2T', 'CopyT2B']). beginSubcases(). combine('textureUsage', kTextureUsages). +unless(({ textureUsage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return textureUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT; +}). expand('_textureUsageValid', (p) => [p.textureUsage === kRequiredTextureUsage[p.copyType]]). combine('bufferUsage', kBufferUsages). expand('_bufferUsageValid', (p) => [p.bufferUsage === kRequiredBufferUsage[p.copyType]]). diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js @@ -123,7 +123,14 @@ combine('usage1', kTextureUsages) ({ usage0, usage1, dimension }) => ((usage0 | usage1) & GPUConst.TextureUsage.RENDER_ATTACHMENT) !== 0 && ( dimension === '1d' || dimension === '3d') -) +). +unless(({ usage0, usage1 }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return ( + usage0 === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT || + usage1 === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT); + +}) ). fn((t) => { const { usage0, usage1, method, size, dimension } = t.params; diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js @@ -12,6 +12,7 @@ textures. import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { raceWithRejectOnTimeout, unreachable, assert } from '../../../../../common/util/util.js'; import { kTextureUsages } from '../../../../capability_info.js'; +import { GPUConst } from '../../../../constants.js'; import { kAllTextureFormats, isTextureFormatUsableWithCopyExternalImageToTexture } from @@ -570,6 +571,10 @@ desc( params((u) => u // .combine('usage', kTextureUsages). +unless(({ usage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return usage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT; +}). beginSubcases(). combine('copySize', [ { width: 0, height: 0, depthOrArrayLayers: 0 }, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js @@ -741,9 +741,14 @@ fn((t) => { t.skipIfTextureFormatNotSupported(format); t.skipIfTextureFormatNotUsableAsRenderAttachment(format); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (transientTexture) { + t.skipIfTransientAttachmentNotSupported(); + } + const usage = transientTexture ? - GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT : - GPUTextureUsage.RENDER_ATTACHMENT; + GPUConst.TextureUsage.RENDER_ATTACHMENT | GPUConst.TextureUsage.TRANSIENT_ATTACHMENT : + GPUConst.TextureUsage.RENDER_ATTACHMENT; const texture = t.createTestTexture({ usage }); @@ -889,7 +894,7 @@ desc( paramsSimple([ { usage: GPUConst.TextureUsage.COPY_SRC | GPUConst.TextureUsage.COPY_DST }, { usage: GPUConst.TextureUsage.STORAGE_BINDING | GPUConst.TextureUsage.TEXTURE_BINDING }, -{ usage: GPUConst.TextureUsage.STORAGE_BINDING | GPUConst.TextureUsage.STORAGE }, +{ usage: GPUConst.TextureUsage.STORAGE_BINDING | GPUConst.TextureUsage.STORAGE_BINDING }, { usage: GPUConst.TextureUsage.RENDER_ATTACHMENT | GPUConst.TextureUsage.TEXTURE_BINDING }] ). fn((t) => { @@ -1124,9 +1129,14 @@ fn((t) => { t.skipIfTextureFormatNotSupported(format); + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (transientTexture) { + t.skipIfTransientAttachmentNotSupported(); + } + const usage = transientTexture ? - GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT : - GPUTextureUsage.RENDER_ATTACHMENT; + GPUConst.TextureUsage.RENDER_ATTACHMENT | GPUConst.TextureUsage.TRANSIENT_ATTACHMENT : + GPUConst.TextureUsage.RENDER_ATTACHMENT; const depthAttachment = t.createTextureTracked({ format, size: { width: 1, height: 1, depthOrArrayLayers: 1 }, diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js @@ -5,6 +5,7 @@ Texture Usages Validation Tests on All Kinds of WebGPU Subresource Usage Scopes. `;import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { unreachable } from '../../../../../common/util/util.js'; import { kTextureUsages } from '../../../../capability_info.js'; +import { GPUConst } from '../../../../constants.js'; import { AllFeaturesMaxLimitsGPUTest } from '../../../../gpu_test.js'; import * as vtu from '../../validation_test_utils.js'; import { @@ -613,7 +614,11 @@ desc( params((u) => u. combine('bindingType', ['color-attachment', ...kTextureBindingTypes]). -combine('viewUsage', [0, ...kTextureUsages]) +combine('viewUsage', [0, ...kTextureUsages]). +unless(({ viewUsage }) => { + // TRANSIENT_ATTACHMENT is only valid when combined with RENDER_ATTACHMENT. + return viewUsage === GPUConst.TextureUsage.TRANSIENT_ATTACHMENT; +}) ). fn((t) => { const { bindingType, viewUsage } = t.params; diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/texture/bgra8unorm_storage.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/texture/bgra8unorm_storage.spec.js @@ -4,7 +4,7 @@ Tests for capabilities added by bgra8unorm-storage flag. `;import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { assert } from '../../../../common/util/util.js'; -import { kTextureUsages } from '../../../capability_info.js'; +import { kTextureUsages, IsValidTextureUsageCombination } from '../../../capability_info.js'; import { GPUConst } from '../../../constants.js'; import { UniqueFeaturesOrLimitsGPUTest } from '../../../gpu_test.js'; import { kAllCanvasTypes, createCanvas } from '../../../util/create_elements.js'; @@ -53,7 +53,7 @@ fn((t) => { const descriptor = { size: [1, 1, 1], format: 'bgra8unorm', - usage: GPUConst.TextureUsage.STORAGE + usage: GPUConst.TextureUsage.STORAGE_BINDING }; t.createTextureTracked(descriptor); }); @@ -100,10 +100,19 @@ expand('usage', () => { } } return usageSet; +}). +unless(({ usage }) => { + return !IsValidTextureUsageCombination(usage); }) ). fn((t) => { const { canvasType, usage } = t.params; + + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const canvas = createCanvas(t, canvasType, 1, 1); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas'); @@ -143,10 +152,19 @@ expand('usage', () => { usageSet.add(usage | GPUConst.TextureUsage.STORAGE_BINDING); } return usageSet; +}). +unless(({ usage }) => { + return !IsValidTextureUsageCombination(usage); }) ). fn((t) => { const { canvasType, usage } = t.params; + + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const canvas = createCanvas(t, canvasType, 1, 1); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas'); diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/capability_info.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/capability_info.js @@ -215,9 +215,10 @@ export const kTextureUsageInfo = /** List of all GPUTextureUsage values. */ export const kTextureUsages = numericKeysOf(kTextureUsageInfo); -/** Check if `usage` is TRANSIENT_ATTACHMENT | RENDER_ATTACHMENT. */ -export function IsValidTransientAttachmentUsage(usage) { +/** Check if `usage` does not contain TRANSIENT_ATTACHMENT or is TRANSIENT_ATTACHMENT | RENDER_ATTACHMENT. */ +export function IsValidTextureUsageCombination(usage) { return ( + (usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) === 0 || usage === (GPUConst.TextureUsage.TRANSIENT_ATTACHMENT | GPUConst.TextureUsage.RENDER_ATTACHMENT)); } @@ -402,12 +403,12 @@ export const kPerStageBindingLimits = { 'uniformBuf': { class: 'uniformBuf', maxLimits: { COMPUTE: 'maxUniformBuffersPerShaderStage', FRAGMENT: 'maxUniformBuffersPerShaderStage', VERTEX: 'maxUniformBuffersPerShaderStage' } }, - 'storageBuf': { class: 'storageBuf', maxLimits: { COMPUTE: 'maxStorageBuffersPerShaderStage', FRAGMENT: 'maxStorageBuffersPerShaderStage', VERTEX: 'maxStorageBuffersPerShaderStage' } }, + 'storageBuf': { class: 'storageBuf', maxLimits: { COMPUTE: 'maxStorageBuffersPerShaderStage', FRAGMENT: 'maxStorageBuffersInFragmentStage', VERTEX: 'maxStorageBuffersInVertexStage' } }, 'sampler': { class: 'sampler', maxLimits: { COMPUTE: 'maxSamplersPerShaderStage', FRAGMENT: 'maxSamplersPerShaderStage', VERTEX: 'maxSamplersPerShaderStage' } }, 'sampledTex': { class: 'sampledTex', maxLimits: { COMPUTE: 'maxSampledTexturesPerShaderStage', FRAGMENT: 'maxSampledTexturesPerShaderStage', VERTEX: 'maxSampledTexturesPerShaderStage' } }, - 'readonlyStorageTex': { class: 'readonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesPerShaderStage', VERTEX: 'maxStorageTexturesPerShaderStage' } }, - 'writeonlyStorageTex': { class: 'writeonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesPerShaderStage', VERTEX: 'maxStorageTexturesPerShaderStage' } }, - 'readwriteStorageTex': { class: 'readwriteStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesPerShaderStage', VERTEX: 'maxStorageTexturesPerShaderStage' } } + 'readonlyStorageTex': { class: 'readonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesInFragmentStage', VERTEX: 'maxStorageTexturesInVertexStage' } }, + 'writeonlyStorageTex': { class: 'writeonlyStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesInFragmentStage', VERTEX: 'maxStorageTexturesInVertexStage' } }, + 'readwriteStorageTex': { class: 'readwriteStorageTex', maxLimits: { COMPUTE: 'maxStorageTexturesPerShaderStage', FRAGMENT: 'maxStorageTexturesInFragmentStage', VERTEX: 'maxStorageTexturesInVertexStage' } } }; /** @@ -738,7 +739,7 @@ const [kLimitInfoKeys, kLimitInfoDefaults, kLimitInfoData] = ['maximum',,, kMaxUnsignedLongValue], { 'maxTextureDimension1D': [, 8192, 4096], 'maxTextureDimension2D': [, 8192, 4096], - 'maxTextureDimension3D': [, 2048, 1024], + 'maxTextureDimension3D': [, 2048, 2048], 'maxTextureArrayLayers': [, 256, 256], 'maxBindGroups': [, 4, 4], @@ -775,18 +776,9 @@ const [kLimitInfoKeys, kLimitInfoDefaults, kLimitInfoData] = 'maxComputeWorkgroupSizeX': [, 256, 128], 'maxComputeWorkgroupSizeY': [, 256, 128], 'maxComputeWorkgroupSizeZ': [, 64, 64], - 'maxComputeWorkgroupsPerDimension': [, 65535, 65535], - 'maxImmediateSize': [, 64, 64] + 'maxComputeWorkgroupsPerDimension': [, 65535, 65535] }]; -// MAINTENANCE_TODO: Remove when the compat spec is merged. -const kCompatOnlyLimits = [ -'maxStorageTexturesInFragmentStage', -'maxStorageTexturesInVertexStage', -'maxStorageBuffersInFragmentStage', -'maxStorageBuffersInVertexStage']; - - /** * Feature levels corresponding to core WebGPU and WebGPU * in compatibility mode. They can be passed to @@ -824,14 +816,7 @@ export const kLimitClasses = Object.fromEntries( ); export function getDefaultLimits(featureLevel) { - return Object.fromEntries( - Object.entries(kLimitInfos[featureLevel]).filter(([k]) => { - // Filter out compat-only limits when in core mode - return featureLevel === 'core' ? - !kCompatOnlyLimits.includes(k) : - true; - }) - ); + return kLimitInfos[featureLevel]; } /** diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/constants.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/constants.js @@ -28,9 +28,7 @@ const TextureUsage = { COPY_SRC: 0x01, COPY_DST: 0x02, TEXTURE_BINDING: 0x04, - SAMPLED: 0x04, STORAGE_BINDING: 0x08, - STORAGE: 0x08, RENDER_ATTACHMENT: 0x10, TRANSIENT_ATTACHMENT: 0x20 }; diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/format_info.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/format_info.js @@ -2466,6 +2466,21 @@ export function isTextureFormatPossiblyMultisampled(format) { } /** + * Returns true if a texture can possibly be resolved. + * The texture may require certain features to be enabled. + */ +export function isTextureFormatPossiblyResolvable(format) { + if (format === 'rg11b10ufloat') { + return true; + } + if (isTextureFormatTier1EnablesResolve(format)) { + return true; + } + const info = kTextureFormatInfo[format]; + return !!info.colorRender?.resolve; +} + +/** * Returns true if a texture can possibly be used as a storage texture. * The texture may require certain features to be enabled. */ diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/gpu_test.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/gpu_test.js @@ -676,6 +676,15 @@ export class GPUTestBase extends Fixture { return lf !== undefined && lf.has(langFeature); } + /** Skips this test case if the GPUTextureUsage `TRANSIENT_ATTACHMENT` is *not* supported. */ + skipIfTransientAttachmentNotSupported() { + const isTransientAttachmentSupported = ('TRANSIENT_ATTACHMENT' in GPUTextureUsage); + this.skipIf( + !isTransientAttachmentSupported, + 'GPUTextureUsage TRANSIENT_ATTACHMENT is not supported' + ); + } + /** * Expect a GPUBuffer's contents to pass the provided check. * diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/idl/constants/flags.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/idl/constants/flags.spec.js @@ -29,7 +29,15 @@ fn((t) => { t.assertMember(GPUBufferUsage, kBufferUsageExp, key); }); -const kTextureUsageExp = { +const kTextureUsageExp = + + + + + + + +{ COPY_SRC: 0x01, COPY_DST: 0x02, TEXTURE_BINDING: 0x04, @@ -38,12 +46,20 @@ const kTextureUsageExp = { TRANSIENT_ATTACHMENT: 0x20 }; g.test('TextureUsage,count').fn((t) => { + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if (!('TRANSIENT_ATTACHMENT' in GPUTextureUsage)) { + delete kTextureUsageExp.TRANSIENT_ATTACHMENT; + } t.assertMemberCount(GPUTextureUsage, kTextureUsageExp); }); g.test('TextureUsage,values'). params((u) => u.combine('key', Object.keys(kTextureUsageExp))). fn((t) => { const { key } = t.params; + + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + t.skipIf(key === 'TRANSIENT_ATTACHMENT' && !('TRANSIENT_ATTACHMENT' in GPUTextureUsage)); + t.assertMember(GPUTextureUsage, kTextureUsageExp, key); }); diff --git a/testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js b/testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js @@ -8,7 +8,11 @@ TODO: - Test toneMapping `;import { makeTestGroup } from '../../../common/framework/test_group.js'; import { assert } from '../../../common/util/util.js'; -import { kCanvasTextureFormats, kTextureUsages } from '../../capability_info.js'; +import { + kCanvasTextureFormats, + kTextureUsages, + IsValidTextureUsageCombination } from +'../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { kAllTextureFormats, @@ -211,11 +215,19 @@ expand('usage', () => { } } return usageSet; +}). +unless(({ usage }) => { + return !IsValidTextureUsageCombination(usage); }) ). fn((t) => { const { canvasType, usage } = t.params; + // MAINTENANCE_TODO(#4509): Remove this when TRANSIENT_ATTACHMENT is added to the WebGPU spec. + if ((usage & GPUConst.TextureUsage.TRANSIENT_ATTACHMENT) !== 0) { + t.skipIfTransientAttachmentNotSupported(); + } + const canvas = createCanvas(t, canvasType, 2, 2); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas');