diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/destroyed/query_set.spec.ts')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/destroyed/query_set.spec.ts | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/destroyed/query_set.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/destroyed/query_set.spec.ts index 1d8adab7e8..987a88830d 100644 --- a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/destroyed/query_set.spec.ts +++ b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/queue/destroyed/query_set.spec.ts @@ -24,11 +24,13 @@ Tests that use a destroyed query set in occlusion query on render pass encoder. encoder.validateFinishAndSubmitGivenState(t.params.querySetState); }); -g.test('writeTimestamp') +g.test('timestamps') .desc( ` -Tests that use a destroyed query set in writeTimestamp on {non-pass, compute, render} encoder. +Tests that use a destroyed query set in timestamp query on {non-pass, compute, render} encoder. - x= {destroyed, not destroyed (control case)} + + TODO: writeTimestamp is removed from the spec so it's skipped if it TypeErrors. ` ) .params(u => u.beginSubcases().combine('querySetState', ['valid', 'destroyed'] as const)) @@ -39,9 +41,50 @@ Tests that use a destroyed query set in writeTimestamp on {non-pass, compute, re count: 2, }); - const encoder = t.createEncoder('non-pass'); - encoder.encoder.writeTimestamp(querySet, 0); - encoder.validateFinishAndSubmitGivenState(t.params.querySetState); + { + const encoder = t.createEncoder('non-pass'); + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (encoder.encoder as any).writeTimestamp(querySet, 0); + } catch (ex) { + t.skipIf(ex instanceof TypeError, 'writeTimestamp is actually not available'); + } + encoder.validateFinishAndSubmitGivenState(t.params.querySetState); + } + + { + const encoder = t.createEncoder('non-pass'); + encoder.encoder + .beginComputePass({ + timestampWrites: { querySet, beginningOfPassWriteIndex: 0 }, + }) + .end(); + encoder.validateFinishAndSubmitGivenState(t.params.querySetState); + } + + { + const texture = t.trackForCleanup( + t.device.createTexture({ + size: [1, 1, 1], + format: 'rgba8unorm', + usage: GPUTextureUsage.RENDER_ATTACHMENT, + }) + ); + const encoder = t.createEncoder('non-pass'); + encoder.encoder + .beginRenderPass({ + colorAttachments: [ + { + view: texture.createView(), + loadOp: 'load', + storeOp: 'store', + }, + ], + timestampWrites: { querySet, beginningOfPassWriteIndex: 0 }, + }) + .end(); + encoder.validateFinishAndSubmitGivenState(t.params.querySetState); + } }); g.test('resolveQuerySet') |