blob: 2cf8059de806a0f6dd5a55025803fe5df9010a38 [file] [log] [blame]
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);
});