From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../stress/device/bind_group_allocation.spec.ts | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_allocation.spec.ts (limited to 'dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_allocation.spec.ts') diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_allocation.spec.ts new file mode 100644 index 0000000000..5d428f3edb --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_allocation.spec.ts @@ -0,0 +1,65 @@ +export const description = ` +Stress tests for allocation of GPUBindGroup objects through GPUDevice. +`; + +import { makeTestGroup } from '../../common/framework/test_group.js'; +import { GPUTest } from '../../webgpu/gpu_test.js'; + +export const g = makeTestGroup(GPUTest); + +g.test('coexisting') + .desc(`Tests allocation of many coexisting GPUBindGroup objects.`) + .fn(t => { + const kNumGroups = 1_000_000; + const buffer = t.device.createBuffer({ + size: 64, + usage: GPUBufferUsage.STORAGE, + }); + const layout = t.device.createBindGroupLayout({ + entries: [ + { + binding: 0, + visibility: GPUShaderStage.COMPUTE, + buffer: { type: 'storage' }, + }, + ], + }); + const bindGroups = []; + for (let i = 0; i < kNumGroups; ++i) { + bindGroups.push( + t.device.createBindGroup({ + layout, + entries: [{ binding: 0, resource: { buffer } }], + }) + ); + } + }); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUBindGroup objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .fn(t => { + const kNumGroups = 5_000_000; + const buffer = t.device.createBuffer({ + size: 64, + usage: GPUBufferUsage.STORAGE, + }); + const layout = t.device.createBindGroupLayout({ + entries: [ + { + binding: 0, + visibility: GPUShaderStage.COMPUTE, + buffer: { type: 'storage' }, + }, + ], + }); + for (let i = 0; i < kNumGroups; ++i) { + t.device.createBindGroup({ + layout, + entries: [{ binding: 0, resource: { buffer } }], + }); + } + }); -- cgit v1.2.3