diff --git a/src/webgpu/web_platform/canvas/configure.spec.ts b/src/webgpu/web_platform/canvas/configure.spec.ts index 11a97ef7d689..3a80fd3f3f8d 100644 --- a/src/webgpu/web_platform/canvas/configure.spec.ts +++ b/src/webgpu/web_platform/canvas/configure.spec.ts @@ -7,7 +7,7 @@ TODO: `; import { makeTestGroup } from '../../../common/framework/test_group.js'; -import { assert } from '../../../common/util/util.js'; +import { assert, hasFeature } from '../../../common/util/util.js'; import { isValidTextureUsageCombination, kCanvasTextureFormats, @@ -377,7 +377,12 @@ g.test('invalid_usage') }); } else { // Otherwise just the normal createTexture() usage validation applies. - const invalidUsage = !isValidTextureUsageCombination(usage); + const hasStorageUsage = (usage & GPUConst.TextureUsage.STORAGE_BINDING) !== 0; + const isUnsupportedBgra8unormStorage = + format === 'bgra8unorm' && + hasStorageUsage && + !hasFeature(t.device.features, 'bgra8unorm-storage'); + const invalidUsage = !isValidTextureUsageCombination(usage) || isUnsupportedBgra8unormStorage; t.expectValidationError(() => { ctx.configure({ device: t.device, format, usage }); }, invalidUsage);