diff options
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.ts | 42 |
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); + } + ); + }); |