export const description = ` createSampler validation tests. `; import { AllFeaturesMaxLimitsGPUTest } from '../.././gpu_test.js'; import { makeTestGroup } from '../../../common/framework/test_group.js'; export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest); g.test('lodMinAndMaxClamp') .desc('test different combinations of min and max clamp values') .paramsSubcasesOnly(u => u // .combine('lodMinClamp', [-4e-30, -1, 0, 0.5, 1, 10, 4e30]) .combine('lodMaxClamp', [-4e-30, -1, 0, 0.5, 1, 10, 4e30]) ) .fn(t => { const shouldError = t.params.lodMinClamp > t.params.lodMaxClamp || t.params.lodMinClamp < 0 || t.params.lodMaxClamp < 0; t.expectValidationError(() => { t.device.createSampler({ lodMinClamp: t.params.lodMinClamp, lodMaxClamp: t.params.lodMaxClamp, }); }, shouldError); }); g.test('maxAnisotropy') .desc('test different maxAnisotropy values and combinations with min/mag/mipmapFilter') .params(u => u // .beginSubcases() .combineWithParams([ ...u.combine('maxAnisotropy', [-1, undefined, 0, 1, 2, 4, 7, 16, 32, 33, 1024]), { minFilter: 'nearest' as const }, { magFilter: 'nearest' as const }, { mipmapFilter: 'nearest' as const }, ]) ) .fn(t => { const { maxAnisotropy = 1, minFilter = 'linear', magFilter = 'linear', mipmapFilter = 'linear', } = t.params as { maxAnisotropy?: number; minFilter?: GPUFilterMode; magFilter?: GPUFilterMode; mipmapFilter?: GPUFilterMode; }; const shouldError = maxAnisotropy < 1 || (maxAnisotropy > 1 && !(minFilter === 'linear' && magFilter === 'linear' && mipmapFilter === 'linear')); t.expectValidationError(() => { t.device.createSampler({ minFilter, magFilter, mipmapFilter, maxAnisotropy, }); }, shouldError); });