Skip to content

Commit 25861c8

Browse files
committed
Clean up enums
1 parent f9fb7d5 commit 25861c8

File tree

5 files changed

+61
-110
lines changed

5 files changed

+61
-110
lines changed

src/webgpu/api/validation/capability_checks/limits/limit_utils.ts

Lines changed: 48 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { kUnitCaseParamsBuilder } from '../../../../../common/framework/params_builder.js';
22
import { makeTestGroup } from '../../../../../common/framework/test_group.js';
3-
import { keysOf } from '../../../../../common/util/data_tables.js';
43
import { getGPU } from '../../../../../common/util/navigator_gpu.js';
54
import { assert, range, reorder, ReorderOrder } from '../../../../../common/util/util.js';
65
import { kLimitInfo, kTextureFormatInfo } from '../../../../capability_info.js';
@@ -9,45 +8,30 @@ import { align } from '../../../../util/math.js';
98

109
type GPUSupportedLimit = keyof GPUSupportedLimits;
1110

12-
const CreatePipelineTypes = {
13-
createRenderPipeline: true,
14-
createRenderPipelineWithFragmentStage: true,
15-
createComputePipeline: true,
16-
};
17-
export type CreatePipelineType = keyof typeof CreatePipelineTypes;
18-
export const kCreatePipelineTypes = keysOf(CreatePipelineTypes);
11+
export const kCreatePipelineTypes = [
12+
'createRenderPipeline',
13+
'createRenderPipelineWithFragmentStage',
14+
'createComputePipeline',
15+
] as const;
16+
export type CreatePipelineType = typeof kCreatePipelineTypes[number];
1917

20-
const RenderEncoderTypes = {
21-
render: true,
22-
renderBundle: true,
23-
};
24-
export type RenderEncoderType = keyof typeof RenderEncoderTypes;
25-
export const kRenderEncoderTypes = keysOf(RenderEncoderTypes);
18+
export const kRenderEncoderTypes = ['render', 'renderBundle'] as const;
19+
export type RenderEncoderType = typeof kRenderEncoderTypes[number];
2620

27-
const EncoderTypes = {
28-
compute: true,
29-
render: true,
30-
renderBundle: true,
31-
};
32-
export type EncoderType = keyof typeof EncoderTypes;
33-
export const kEncoderTypes = keysOf(EncoderTypes);
21+
export const kEncoderTypes = ['compute', 'render', 'renderBundle'] as const;
22+
export type EncoderType = typeof kEncoderTypes[number];
3423

35-
const BindGroupTests = {
36-
sameGroup: true,
37-
differentGroups: true,
38-
};
39-
export type BindGroupTest = keyof typeof BindGroupTests;
40-
export const kBindGroupTests = keysOf(BindGroupTests);
41-
42-
const BindingCombinations = {
43-
vertex: true,
44-
fragment: true,
45-
vertexAndFragmentWithPossibleVertexStageOverflow: true,
46-
vertexAndFragmentWithPossibleFragmentStageOverflow: true,
47-
compute: true,
48-
};
49-
export type BindingCombination = keyof typeof BindingCombinations;
50-
export const kBindingCombinations = keysOf(BindingCombinations);
24+
export const kBindGroupTests = ['sameGroup', 'differentGroups'] as const;
25+
export type BindGroupTest = typeof kBindGroupTests[number];
26+
27+
export const kBindingCombinations = [
28+
'vertex',
29+
'fragment',
30+
'vertexAndFragmentWithPossibleVertexStageOverflow',
31+
'vertexAndFragmentWithPossibleFragmentStageOverflow',
32+
'compute',
33+
] as const;
34+
export type BindingCombination = typeof kBindingCombinations[number];
5135

5236
export function getPipelineTypeForBindingCombination(bindingCombination: BindingCombination) {
5337
switch (bindingCombination) {
@@ -232,20 +216,12 @@ export function getPerStageWGSLForBindingCombinationStorageTextures(
232216
);
233217
}
234218

235-
const LimitModes = {
236-
defaultLimit: true,
237-
adapterLimit: true,
238-
};
239-
export type LimitMode = keyof typeof LimitModes;
240-
export const kLimitModes = keysOf(LimitModes);
219+
export const kLimitModes = ['defaultLimit', 'adapterLimit'] as const;
220+
export type LimitMode = typeof kLimitModes[number];
241221
export type LimitsRequest = Record<string, LimitMode>;
242222

243-
export const MaximumTestValues = {
244-
atLimit: true,
245-
overLimit: true,
246-
};
247-
export type MaximumTestValue = keyof typeof MaximumTestValues;
248-
export const kMaximumTestValueKeys = keysOf(MaximumTestValues);
223+
export const kMaximumTestValues = ['atLimit', 'overLimit'] as const;
224+
export type MaximumTestValue = typeof kMaximumTestValues[number];
249225

250226
export function getMaximumTestValue(limit: number, testValue: MaximumTestValue) {
251227
switch (testValue) {
@@ -256,22 +232,17 @@ export function getMaximumTestValue(limit: number, testValue: MaximumTestValue)
256232
}
257233
}
258234

259-
export const MinimumTestValues = {
260-
atLimit: true,
261-
underLimit: true,
262-
};
263-
export type MinimumTestValue = keyof typeof MinimumTestValues;
264-
export const kMinimumTestValueKeys = keysOf(MinimumTestValues);
265-
266-
export const MaximumLimitValueTests = {
267-
atDefault: true,
268-
underDefault: true,
269-
betweenDefaultAndMaximum: true,
270-
atMaximum: true,
271-
overMaximum: true,
272-
};
273-
export type MaximumLimitValueTest = keyof typeof MaximumLimitValueTests;
274-
export const kMaximumLimitValueTestKeys = keysOf(MaximumLimitValueTests);
235+
export const kMinimumTestValues = ['atLimit', 'underLimit'] as const;
236+
export type MinimumTestValue = typeof kMinimumTestValues[number];
237+
238+
export const kMaximumLimitValueTests = [
239+
'atDefault',
240+
'underDefault',
241+
'betweenDefaultAndMaximum',
242+
'atMaximum',
243+
'overMaximum',
244+
] as const;
245+
export type MaximumLimitValueTest = typeof kMaximumLimitValueTests[number];
275246

276247
export function getLimitValue(
277248
defaultLimit: number,
@@ -292,15 +263,14 @@ export function getLimitValue(
292263
}
293264
}
294265

295-
export const MinimumLimitValueTests = {
296-
atDefault: true,
297-
overDefault: true,
298-
betweenDefaultAndMinimum: true,
299-
atMinimum: true,
300-
underMinimum: true,
301-
};
302-
export type MinimumLimitValueTest = keyof typeof MinimumLimitValueTests;
303-
export const kMinimumLimitValueTestKeys = keysOf(MinimumLimitValueTests);
266+
export const kMinimumLimitValueTests = [
267+
'atDefault',
268+
'overDefault',
269+
'betweenDefaultAndMinimum',
270+
'atMinimum',
271+
'underMinimum',
272+
] as const;
273+
export type MinimumLimitValueTest = typeof kMinimumLimitValueTests[number];
304274

305275
export function getDefaultLimit(limit: GPUSupportedLimit): number {
306276
return (kLimitInfo as Record<string, { default: number }>)[limit].default;
@@ -332,12 +302,12 @@ const kMinimumLimits = new Set<GPUSupportedLimit>([
332302
* Adds the default parameters to a limit test
333303
*/
334304
export const kMaximumLimitBaseParams = kUnitCaseParamsBuilder
335-
.combine('limitTest', kMaximumLimitValueTestKeys)
336-
.combine('testValueName', kMaximumTestValueKeys);
305+
.combine('limitTest', kMaximumLimitValueTests)
306+
.combine('testValueName', kMaximumTestValues);
337307

338308
export const kMinimumLimitBaseParams = kUnitCaseParamsBuilder
339-
.combine('limitTest', kMinimumLimitValueTestKeys)
340-
.combine('testValueName', kMinimumTestValueKeys);
309+
.combine('limitTest', kMinimumLimitValueTests)
310+
.combine('testValueName', kMinimumTestValues);
341311

342312
export class LimitTestsImpl extends GPUTestBase {
343313
_adapter: GPUAdapter | null = null;

src/webgpu/api/validation/capability_checks/limits/maxComputeWorkgroupsPerDimension.spec.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import { keysOf } from '../../../../../common/util/data_tables.js';
2-
31
import { kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js';
42

53
const limit = 'maxComputeWorkgroupsPerDimension';
64
export const { g, description } = makeLimitTestGroup(limit);
75

8-
const CreateComputePipelineTypes = {
9-
createComputePipeline: true,
10-
createComputePipelineAsync: true,
11-
};
12-
type CreateComputePipelineType = keyof typeof CreateComputePipelineTypes;
13-
const kCreateComputePipelineTypes = keysOf(CreateComputePipelineTypes);
6+
const kCreateComputePipelineTypes = [
7+
'createComputePipeline',
8+
'createComputePipelineAsync',
9+
] as const;
10+
type CreateComputePipelineType = typeof kCreateComputePipelineTypes[number];
1411

1512
async function createComputePipeline(
1613
device: GPUDevice,

src/webgpu/api/validation/capability_checks/limits/maxStorageBufferBindingSize.spec.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { keysOf } from '../../../../../common/util/data_tables.js';
21
import { align, roundDown } from '../../../../util/math.js';
32

43
import {
@@ -10,12 +9,8 @@ import {
109
MaximumTestValue,
1110
} from './limit_utils.js';
1211

13-
const BufferParts = {
14-
wholeBuffer: true,
15-
biggerBufferWithOffset: true,
16-
};
17-
type BufferPart = keyof typeof BufferParts;
18-
const kBufferPartsKeys = keysOf(BufferParts);
12+
const kBufferParts = ['wholeBuffer', 'biggerBufferWithOffset'] as const;
13+
type BufferPart = typeof kBufferParts[number];
1914

2015
function getSizeAndOffsetForBufferPart(device: GPUDevice, bufferPart: BufferPart, size: number) {
2116
const align = device.limits.minUniformBufferOffsetAlignment;
@@ -82,7 +77,7 @@ export const { g, description } = makeLimitTestGroup(limit);
8277

8378
g.test('createBindGroup,at_over')
8479
.desc(`Test using createBindGroup at and over ${limit} limit`)
85-
.params(kMaximumLimitBaseParams.combine('bufferPart', kBufferPartsKeys))
80+
.params(kMaximumLimitBaseParams.combine('bufferPart', kBufferParts))
8681
.fn(async t => {
8782
const { limitTest, testValueName, bufferPart } = t.params;
8883
const { defaultLimit, adapterLimit: maximumLimit } = t;

src/webgpu/api/validation/capability_checks/limits/maxUniformBufferBindingSize.spec.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
1-
import { keysOf } from '../../../../../common/util/data_tables.js';
2-
31
import {
42
LimitMode,
53
getDefaultLimit,
64
kMaximumLimitBaseParams,
75
makeLimitTestGroup,
86
} from './limit_utils.js';
97

10-
const BufferParts = {
11-
wholeBuffer: true,
12-
biggerBufferWithOffset: true,
13-
};
14-
type BufferPart = keyof typeof BufferParts;
15-
const kBufferPartsKeys = keysOf(BufferParts);
8+
const kBufferParts = ['wholeBuffer', 'biggerBufferWithOffset'] as const;
9+
type BufferPart = typeof kBufferParts[number];
1610

1711
function getSizeAndOffsetForBufferPart(device: GPUDevice, bufferPart: BufferPart, size: number) {
1812
const align = device.limits.minUniformBufferOffsetAlignment;
@@ -32,7 +26,7 @@ const kExtraLimits = { maxBufferSize: 'maxLimit' as LimitMode };
3226

3327
g.test('createBindGroup,at_over')
3428
.desc(`Test using at and over ${limit} limit`)
35-
.params(kMaximumLimitBaseParams.combine('bufferPart', kBufferPartsKeys))
29+
.params(kMaximumLimitBaseParams.combine('bufferPart', kBufferParts))
3630
.fn(async t => {
3731
const { limitTest, testValueName, bufferPart } = t.params;
3832
await t.testDeviceWithRequestedMaximumLimits(

src/webgpu/api/validation/capability_checks/limits/maxVertexBuffers.spec.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
import { keysOf } from '../../../../../common/util/data_tables.js';
21
import { range } from '../../../../../common/util/util.js';
32

43
import { kRenderEncoderTypes, kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js';
54

6-
const PipelineTypes = {
7-
withoutLocations: true,
8-
withLocations: true,
9-
};
10-
type PipelineType = keyof typeof PipelineTypes;
11-
const kPipelineTypes = keysOf(PipelineTypes);
5+
const kPipelineTypes = ['withoutLocations', 'withLocations'] as const;
6+
type PipelineType = typeof kPipelineTypes[number];
127

138
function getPipelineDescriptor(
149
device: GPUDevice,

0 commit comments

Comments
 (0)