blob: 24f4692b3487b9df8cb2ff1ba262fa8431f13696 [file] [log] [blame]
export const description = `Validation tests for discard`;
import { makeTestGroup } from '../../../../common/framework/test_group.js';
import { ShaderValidationTest } from '../shader_validation_test.js';
export const g = makeTestGroup(ShaderValidationTest);
g.test('placement')
.desc('Test that discard usage is validated')
.params(u =>
u.combine('place', ['compute', 'vertex', 'fragment', 'module', 'subfrag', 'subvert', 'subcomp'])
)
.fn(t => {
const pos: { [key: string]: string } = {
module: '',
subvert: '',
subfrag: '',
subcomp: '',
vertex: '',
fragment: '',
compute: '',
};
pos[t.params.place] = 'discard;';
const code = `
${pos.module}
fn subvert() {
${pos.subvert}
}
@vertex
fn vtx() -> @builtin(position) vec4f {
${pos.vertex}
subvert();
return vec4f(1);
}
fn subfrag() {
${pos.subfrag}
}
@fragment
fn frag() -> @location(0) vec4f {
${pos.fragment}
subfrag();
return vec4f(1);
}
fn subcomp() {
${pos.subcomp}
}
@compute
@workgroup_size(1)
fn comp() {
${pos.compute}
subcomp();
}
`;
const pass = ['fragment', 'subfrag'].includes(t.params.place);
t.expectCompileResult(pass, code);
});