Skip to content

Commit b2d0fd8

Browse files
committed
Move skipIfTextureFormatAndViewDimensionNotCompatible and
skipIfTextureFormatAndDimensionNotCompatible to GPUTestBase This is clean up for fixing copy tests to handle compressed 3d textures
1 parent 168536a commit b2d0fd8

File tree

8 files changed

+37
-41
lines changed

8 files changed

+37
-41
lines changed

src/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import {
2525
textureFormatsAreViewCompatible,
2626
} from '../../../format_info.js';
2727
import { AllFeaturesMaxLimitsGPUTest } from '../../../gpu_test.js';
28-
import { skipIfTextureAndFormatNotCompatibleForDevice } from '../../../shader/execution/expression/call/builtin/texture_utils.js';
2928
import * as ttu from '../../../texture_test_utils.js';
3029
import { checkElementsEqual } from '../../../util/check_contents.js';
3130
import { align } from '../../../util/math.js';
@@ -927,8 +926,8 @@ g.test('color_textures,compressed,non_array')
927926
srcCopyLevel,
928927
dstCopyLevel,
929928
} = t.params;
930-
skipIfTextureAndFormatNotCompatibleForDevice(t, dimension, srcFormat);
931-
skipIfTextureAndFormatNotCompatibleForDevice(t, dimension, dstFormat);
929+
t.skipIfTextureFormatAndDimensionNotCompatible(srcFormat, dimension);
930+
t.skipIfTextureFormatAndDimensionNotCompatible(dstFormat, dimension);
932931
t.skipIfCopyTextureToTextureNotSupportedForFormat(srcFormat, dstFormat);
933932
const { blockWidth: srcBlockWidth, blockHeight: srcBlockHeight } =
934933
getBlockInfoForColorTextureFormat(srcFormat);
@@ -1074,8 +1073,8 @@ g.test('color_textures,compressed,array')
10741073
} = t.params;
10751074
t.skipIfTextureFormatNotSupported(srcFormat, dstFormat);
10761075
t.skipIfCopyTextureToTextureNotSupportedForFormat(srcFormat, dstFormat);
1077-
skipIfTextureAndFormatNotCompatibleForDevice(t, dimension, srcFormat);
1078-
skipIfTextureAndFormatNotCompatibleForDevice(t, dimension, dstFormat);
1076+
t.skipIfTextureFormatAndDimensionNotCompatible(srcFormat, dimension);
1077+
t.skipIfTextureFormatAndDimensionNotCompatible(dstFormat, dimension);
10791078

10801079
const { blockWidth: srcBlockWidth, blockHeight: srcBlockHeight } =
10811080
getBlockInfoForColorTextureFormat(srcFormat);

src/webgpu/gpu_test.ts

+22
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import {
3838
isTextureFormatUsableAsReadWriteStorageTexture,
3939
isDepthTextureFormat,
4040
isStencilTextureFormat,
41+
textureViewDimensionAndFormatCompatibleForDevice,
42+
textureDimensionAndFormatCompatibleForDevice,
4143
} from './format_info.js';
4244
import { checkElementsEqual, checkElementsBetween } from './util/check_contents.js';
4345
import { CommandBufferMaker, EncoderType } from './util/command_buffer_maker.js';
@@ -501,6 +503,26 @@ export class GPUTestBase extends Fixture<GPUTestSubcaseBatchState> {
501503
}
502504
}
503505

506+
skipIfTextureFormatAndViewDimensionNotCompatible(
507+
format: GPUTextureFormat,
508+
viewDimension: GPUTextureViewDimension
509+
) {
510+
this.skipIf(
511+
!textureViewDimensionAndFormatCompatibleForDevice(this.device, viewDimension, format),
512+
`format: ${format} does not support viewDimension: ${viewDimension}`
513+
);
514+
}
515+
516+
skipIfTextureFormatAndDimensionNotCompatible(
517+
format: GPUTextureFormat,
518+
dimension: GPUTextureDimension
519+
) {
520+
this.skipIf(
521+
!textureDimensionAndFormatCompatibleForDevice(this.device, dimension, format),
522+
`format: ${format} does not support dimension: ${dimension}`
523+
);
524+
}
525+
504526
skipIfTextureFormatNotResolvable(...formats: (GPUTextureFormat | undefined)[]) {
505527
for (const format of formats) {
506528
if (format === undefined) continue;

src/webgpu/shader/execution/expression/call/builtin/textureSample.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import {
3838
getTextureTypeForTextureViewDimension,
3939
vec1,
4040
generateTextureBuiltinInputs1D,
41-
skipIfTextureViewAndFormatNotCompatibleForDevice,
41+
skipIfTextureViewAndFormatNotCompatibleForDeviceFoo,
4242
} from './texture_utils.js';
4343

4444
export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest);
@@ -362,7 +362,7 @@ Parameters:
362362
offset,
363363
} = t.params;
364364
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable(t, minFilter, format);
365-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, format, viewDimension);
365+
t.skipIfTextureFormatAndViewDimensionNotCompatible(format, viewDimension);
366366

367367
const size = chooseTextureSize({ minSize: 8, minBlocks: 2, format, viewDimension });
368368
const descriptor: GPUTextureDescriptor = {

src/webgpu/shader/execution/expression/call/builtin/textureSampleBias.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
isPotentiallyFilterableAndFillable,
3434
getTextureTypeForTextureViewDimension,
3535
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable,
36-
skipIfTextureViewAndFormatNotCompatibleForDevice,
36+
skipIfTextureViewAndFormatNotCompatibleForDeviceFoo,
3737
} from './texture_utils.js';
3838

3939
export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest);
@@ -190,7 +190,7 @@ Parameters:
190190
offset,
191191
} = t.params;
192192
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable(t, minFilter, format);
193-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, format, viewDimension);
193+
t.skipIfTextureFormatAndViewDimensionNotCompatible(format, viewDimension);
194194

195195
const size = chooseTextureSize({ minSize: 8, minBlocks: 2, format, viewDimension });
196196
const descriptor: GPUTextureDescriptor = {

src/webgpu/shader/execution/expression/call/builtin/textureSampleGrad.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {
3030
kShortShaderStages,
3131
SamplePointMethods,
3232
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable,
33-
skipIfTextureViewAndFormatNotCompatibleForDevice,
33+
skipIfTextureViewAndFormatNotCompatibleForDeviceFoo,
3434
TextureCall,
3535
vec2,
3636
vec3,
@@ -186,7 +186,7 @@ Parameters:
186186
offset,
187187
} = t.params;
188188
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable(t, minFilter, format);
189-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, format, viewDimension);
189+
t.skipIfTextureFormatAndViewDimensionNotCompatible(format, viewDimension);
190190

191191
const size = chooseTextureSize({ minSize: 8, minBlocks: 2, format, viewDimension });
192192
const descriptor: GPUTextureDescriptor = {

src/webgpu/shader/execution/expression/call/builtin/textureSampleLevel.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {
3232
kShortShaderStages,
3333
SamplePointMethods,
3434
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable,
35-
skipIfTextureViewAndFormatNotCompatibleForDevice,
35+
skipIfTextureViewAndFormatNotCompatibleForDeviceFoo,
3636
TextureCall,
3737
vec2,
3838
vec3,
@@ -405,7 +405,7 @@ Parameters:
405405
offset,
406406
} = t.params;
407407
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable(t, minFilter, format);
408-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, format, viewDimension);
408+
t.skipIfTextureFormatAndViewDimensionNotCompatible(format, viewDimension);
409409

410410
const [width, height] = chooseTextureSize({ minSize: 32, minBlocks: 2, format, viewDimension });
411411
const depthOrArrayLayers = getDepthOrArrayLayersForViewDimension(viewDimension);
@@ -521,7 +521,7 @@ baseMipLevel, lodMinClamp, and lodMaxClamp, with an dwithout filtering.
521521
lodMinClamp,
522522
} = t.params;
523523
skipIfTextureFormatNotSupportedOrNeedsFilteringAndIsUnfilterable(t, minFilter, format);
524-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, format, viewDimension);
524+
t.skipIfTextureFormatAndViewDimensionNotCompatible(format, viewDimension);
525525

526526
const [width, height] = chooseTextureSize({ minSize: 32, minBlocks: 2, format, viewDimension });
527527
const depthOrArrayLayers = getDepthOrArrayLayersForViewDimension(viewDimension);

src/webgpu/shader/execution/expression/call/builtin/texture_utils.spec.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import {
2525
makeRandomDepthComparisonTexelGenerator,
2626
queryMipLevelMixWeightsForDevice,
2727
readTextureToTexelViews,
28-
skipIfTextureViewAndFormatNotCompatibleForDevice,
2928
texelsApproximatelyEqual,
3029
} from './texture_utils.js';
3130

@@ -52,7 +51,7 @@ g.test('createTextureWithRandomDataAndGetTexels_with_generator')
5251
const { format, viewDimension } = t.params;
5352
t.skipIfTextureFormatNotSupported(format);
5453
t.skipIfTextureViewDimensionNotSupported(viewDimension);
55-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, format, viewDimension);
54+
t.skipIfTextureFormatAndViewDimensionNotCompatible(format, viewDimension);
5655
// choose an odd size (9) so we're more likely to test alignment issue.
5756
const size = chooseTextureSize({ minSize: 9, minBlocks: 4, format, viewDimension });
5857
t.debug(`size: ${size.map(v => v.toString()).join(', ')}`);
@@ -96,7 +95,7 @@ g.test('readTextureToTexelViews')
9695
.fn(async t => {
9796
const { srcFormat, texelViewFormat, viewDimension, sampleCount } = t.params;
9897
t.skipIfTextureViewDimensionNotSupported(viewDimension);
99-
skipIfTextureViewAndFormatNotCompatibleForDevice(t, srcFormat, viewDimension);
98+
t.skipIfTextureFormatAndViewDimensionNotCompatible(srcFormat, viewDimension);
10099
if (sampleCount > 1) {
101100
t.skipIfTextureFormatNotMultisampled(srcFormat);
102101
}

src/webgpu/shader/execution/expression/call/builtin/texture_utils.ts

-24
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import {
1717
isSintOrUintFormat,
1818
isStencilTextureFormat,
1919
kEncodableTextureFormats,
20-
textureDimensionAndFormatCompatibleForDevice,
21-
textureViewDimensionAndFormatCompatibleForDevice,
2220
} from '../../../../../format_info.js';
2321
import { GPUTest } from '../../../../../gpu_test.js';
2422
import {
@@ -81,28 +79,6 @@ export const kSampleTypeInfo = {
8179
},
8280
} as const;
8381

84-
export function skipIfTextureViewAndFormatNotCompatibleForDevice(
85-
t: GPUTest,
86-
format: GPUTextureFormat,
87-
viewDimension: GPUTextureViewDimension
88-
) {
89-
t.skipIf(
90-
!textureViewDimensionAndFormatCompatibleForDevice(t.device, viewDimension, format),
91-
`format: ${format} does not support viewDimension: ${viewDimension}`
92-
);
93-
}
94-
95-
export function skipIfTextureAndFormatNotCompatibleForDevice(
96-
t: GPUTest,
97-
dimension: GPUTextureDimension,
98-
format: GPUTextureFormat
99-
) {
100-
t.skipIf(
101-
!textureDimensionAndFormatCompatibleForDevice(t.device, dimension, format),
102-
`format: ${format} does not support dimension: ${dimension}`
103-
);
104-
}
105-
10682
/**
10783
* Return the texture type for a given view dimension
10884
*/

0 commit comments

Comments
 (0)