-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Description
The WGSL specification says 8.1.2:
Otherwise, an override-expression E will be evaluated if and only if:
E forms part of the shader for the entry point specified by the GPUProgrammableStage, and:
Any of the following are true:
However the source for this test
| g.test('low_high') |
onst wgsl = `
${enable}
override o_low : ${scalar};
override o_high : ${scalar};
fn foo() {
var v_low : ${t.params.type};
var v_high : ${t.params.type};
var v : ${t.params.type};
let tmp = clamp(v, ${low_arg}, ${high_arg});
}`;
const error = t.params.low > t.params.high;
const shader_error =
error && t.params.lowStage === 'constant' && t.params.highStage === 'constant';
const pipeline_error =
t.params.in_shader &&
error &&
t.params.lowStage !== 'runtime' &&
t.params.highStage !== 'runtime';
t.expectCompileResult(!shader_error, wgsl);
if (!shader_error) {
const constants: Record<string, number> = {};
constants['o_low'] = t.params.low;
constants['o_high'] = t.params.high;
t.expectPipelineResult({
expectedResult: !pipeline_error,
code: wgsl,
constants,
reference: ['o_low', 'o_high'],
statements: t.params.in_shader ? ['foo();'] : [],
});
}
and then checking the definition of expectPipelineResult:
const code =
args.code +
(args.addWorkgroupSize !== false
? `
@workgroup_size(1)`
: ``) +
`
@compute fn main() {
${phonies.join('\n')}
}
I.e., foo is not an entry point as defined in the specification:
To create an entry point, declare a user-defined function with a shader stage attribute.
but rather main is
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels