summaryrefslogtreecommitdiffstats
path: root/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.ts
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.ts')
-rw-r--r--dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.ts
new file mode 100644
index 0000000000..0491d07191
--- /dev/null
+++ b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.ts
@@ -0,0 +1,42 @@
+import { range } from '../../../../../common/util/util.js';
+import { GPUConst } from '../../../../constants.js';
+
+import { kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js';
+
+const limit = 'maxDynamicUniformBuffersPerPipelineLayout';
+export const { g, description } = makeLimitTestGroup(limit);
+
+g.test('createBindGroupLayout,at_over')
+ .desc(`Test using createBindGroupLayout at and over ${limit} limit`)
+ .params(
+ kMaximumLimitBaseParams.combine('visibility', [
+ GPUConst.ShaderStage.VERTEX,
+ GPUConst.ShaderStage.FRAGMENT,
+ GPUConst.ShaderStage.VERTEX | GPUConst.ShaderStage.FRAGMENT,
+ GPUConst.ShaderStage.COMPUTE,
+ GPUConst.ShaderStage.COMPUTE | GPUConst.ShaderStage.VERTEX,
+ GPUConst.ShaderStage.COMPUTE | GPUConst.ShaderStage.FRAGMENT,
+ GPUConst.ShaderStage.COMPUTE | GPUConst.ShaderStage.VERTEX | GPUConst.ShaderStage.FRAGMENT,
+ ])
+ )
+ .fn(async t => {
+ const { limitTest, testValueName, visibility } = t.params;
+ await t.testDeviceWithRequestedMaximumLimits(
+ limitTest,
+ testValueName,
+ async ({ device, testValue, shouldError }) => {
+ shouldError ||= testValue > t.device.limits.maxUniformBuffersPerShaderStage;
+ await t.expectValidationError(() => {
+ device.createBindGroupLayout({
+ entries: range(testValue, i => ({
+ binding: i,
+ visibility,
+ buffer: {
+ hasDynamicOffset: true,
+ },
+ })),
+ });
+ }, shouldError);
+ }
+ );
+ });