blob: a6c7a6eaad9bfde6aeddd28999f058c8e1cf414b [file] [log] [blame]
export const description = `
Validation for encoding queries.
`;
import { makeTestGroup } from '../../../../../common/framework/test_group.js';
import { kQueryTypes } from '../../../../capability_info.js';
import { AllFeaturesMaxLimitsGPUTest } from '../../../../gpu_test.js';
import * as vtu from '../../validation_test_utils.js';
import { createQuerySetWithType } from './common.js';
export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest);
g.test('occlusion_query,query_type')
.desc(
`
Tests that set occlusion query set with all types in render pass descriptor:
- type {occlusion (control case), timestamp}
- {undefined} for occlusion query set in render pass descriptor
`
)
.params(u => u.combine('type', [undefined, ...kQueryTypes]))
.fn(t => {
const type = t.params.type;
if (type) {
t.skipIfDeviceDoesNotSupportQueryType(type);
}
const querySet = type === undefined ? undefined : createQuerySetWithType(t, type, 1);
const encoder = t.createEncoder('render pass', { occlusionQuerySet: querySet });
encoder.encoder.beginOcclusionQuery(0);
encoder.encoder.endOcclusionQuery();
encoder.validateFinish(type === 'occlusion');
});
g.test('occlusion_query,invalid_query_set')
.desc(
`
Tests that begin occlusion query with a invalid query set that failed during creation.
`
)
.paramsSubcasesOnly(u => u.combine('querySetState', ['valid', 'invalid'] as const))
.fn(t => {
const occlusionQuerySet = vtu.createQuerySetWithState(t, t.params.querySetState);
const encoder = t.createEncoder('render pass', { occlusionQuerySet });
encoder.encoder.beginOcclusionQuery(0);
encoder.encoder.endOcclusionQuery();
encoder.validateFinishAndSubmitGivenState(t.params.querySetState);
});
g.test('occlusion_query,query_index')
.desc(
`
Tests that begin occlusion query with query index:
- queryIndex {in, out of} range for GPUQuerySet
`
)
.paramsSubcasesOnly(u => u.combine('queryIndex', [0, 2]))
.fn(t => {
const occlusionQuerySet = createQuerySetWithType(t, 'occlusion', 2);
const encoder = t.createEncoder('render pass', { occlusionQuerySet });
encoder.encoder.beginOcclusionQuery(t.params.queryIndex);
encoder.encoder.endOcclusionQuery();
encoder.validateFinish(t.params.queryIndex < 2);
});