1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
export const description = `
Execution Tests for assignment of AbstractFloats
`;
import { makeTestGroup } from '../../../../../common/framework/test_group.js';
import { GPUTest } from '../../../../gpu_test.js';
import { Type } from '../../../../util/conversion.js';
import {
ShaderBuilder,
abstractFloatShaderBuilder,
basicExpressionBuilder,
onlyConstInputSource,
run,
} from '../expression.js';
import { d } from './af_assignment.cache.js';
function concrete_assignment(): ShaderBuilder {
return basicExpressionBuilder(value => `${value}`);
}
function abstract_assignment(): ShaderBuilder {
return abstractFloatShaderBuilder(value => `${value}`);
}
export const g = makeTestGroup(GPUTest);
g.test('abstract')
.specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion')
.desc(
`
testing that extracting abstract floats works
`
)
.params(u => u.combine('inputSource', onlyConstInputSource))
.fn(async t => {
const cases = await d.get('abstract');
await run(
t,
abstract_assignment(),
[Type.abstractFloat],
Type.abstractFloat,
t.params,
cases,
1
);
});
g.test('f32')
.specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion')
.desc(
`
concretizing to f32
`
)
.params(u => u.combine('inputSource', onlyConstInputSource))
.fn(async t => {
const cases = await d.get('f32');
await run(t, concrete_assignment(), [Type.abstractFloat], Type.f32, t.params, cases);
});
g.test('f16')
.specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion')
.desc(
`
concretizing to f16
`
)
.beforeAllSubcases(t => {
t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] });
})
.params(u => u.combine('inputSource', onlyConstInputSource))
.fn(async t => {
const cases = await d.get('f16');
await run(t, concrete_assignment(), [Type.abstractFloat], Type.f16, t.params, cases);
});
|