diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/stress/device')
13 files changed, 306 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/README.txt b/dom/webgpu/tests/cts/checkout/src/stress/device/README.txt new file mode 100644 index 0000000000..6ee89fc5fd --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/README.txt @@ -0,0 +1,2 @@ +Stress tests covering GPUDevice usage, primarily focused on stressing allocation +of various resources. 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 } }], + }); + } + }); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_layout_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_layout_allocation.spec.ts new file mode 100644 index 0000000000..0933cd1b59 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/bind_group_layout_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPUBindGroupLayout 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 GPUBindGroupLayout objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUBindGroupLayout objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/buffer_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/buffer_allocation.spec.ts new file mode 100644 index 0000000000..f55ec79c44 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/buffer_allocation.spec.ts @@ -0,0 +1,25 @@ +export const description = ` +Stress tests for allocation of GPUBuffer 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 GPUBuffer objects.`).unimplemented(); + +g.test('continuous,with_destroy') + .desc( + `Tests allocation and destruction of many GPUBuffer objects over time. Objects +are sequentially created and destroyed over a very large number of iterations.` + ) + .unimplemented(); + +g.test('continuous,no_destroy') + .desc( + `Tests allocation and implicit GC of many GPUBuffer objects over time. Objects +are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/command_encoder_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/command_encoder_allocation.spec.ts new file mode 100644 index 0000000000..e41769ee06 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/command_encoder_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPUCommandEncoder 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 GPUCommandEncoder objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUCommandEncoder objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/compute_pipeline_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/compute_pipeline_allocation.spec.ts new file mode 100644 index 0000000000..5c03bc9674 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/compute_pipeline_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPUComputePipeline 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 GPUComputePipeline objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUComputePipeline objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/pipeline_layout_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/pipeline_layout_allocation.spec.ts new file mode 100644 index 0000000000..15d417fd7e --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/pipeline_layout_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPUPipelineLayout 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 GPUPipelineLayout objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUPipelineLayout objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/query_set_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/query_set_allocation.spec.ts new file mode 100644 index 0000000000..757645cbf6 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/query_set_allocation.spec.ts @@ -0,0 +1,27 @@ +export const description = ` +Stress tests for allocation of GPUQuerySet 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 GPUQuerySet objects.`) + .unimplemented(); + +g.test('continuous,with_destroy') + .desc( + `Tests allocation and destruction of many GPUQuerySet objects over time. Objects +are sequentially created and destroyed over a very large number of iterations.` + ) + .unimplemented(); + +g.test('continuous,no_destroy') + .desc( + `Tests allocation and implicit GC of many GPUQuerySet objects over time. Objects +are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/render_bundle_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/render_bundle_allocation.spec.ts new file mode 100644 index 0000000000..d7448412a1 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/render_bundle_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPURenderBundle 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 GPURenderBundle objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPURenderBundle objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/render_pipeline_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/render_pipeline_allocation.spec.ts new file mode 100644 index 0000000000..21eb92cf7c --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/render_pipeline_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPURenderPipeline 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 GPURenderPipeline objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPURenderPipeline objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/sampler_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/sampler_allocation.spec.ts new file mode 100644 index 0000000000..c34dae3f67 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/sampler_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPUSampler 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 GPUSampler objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUSampler objects over time. Objects +are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/shader_module_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/shader_module_allocation.spec.ts new file mode 100644 index 0000000000..97ef73d2c9 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/shader_module_allocation.spec.ts @@ -0,0 +1,20 @@ +export const description = ` +Stress tests for allocation of GPUShaderModule 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 GPUShaderModule objects.`) + .unimplemented(); + +g.test('continuous') + .desc( + `Tests allocation and implicit GC of many GPUShaderModule objects over time. +Objects are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); diff --git a/dom/webgpu/tests/cts/checkout/src/stress/device/texture_allocation.spec.ts b/dom/webgpu/tests/cts/checkout/src/stress/device/texture_allocation.spec.ts new file mode 100644 index 0000000000..5cef598804 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/stress/device/texture_allocation.spec.ts @@ -0,0 +1,27 @@ +export const description = ` +Stress tests for allocation of GPUTexture 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 GPUTexture objects.`) + .unimplemented(); + +g.test('continuous,with_destroy') + .desc( + `Tests allocation and destruction of many GPUTexture objects over time. Objects +are sequentially created and destroyed over a very large number of iterations.` + ) + .unimplemented(); + +g.test('continuous,no_destroy') + .desc( + `Tests allocation and implicit GC of many GPUTexture objects over time. Objects +are sequentially created and dropped for GC over a very large number of +iterations.` + ) + .unimplemented(); |