Skip to content

Commit 49f76dc

Browse files
authored
Add invalid swizzle assignment validation (#4598)
1 parent 1b938b5 commit 49f76dc

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

src/webgpu/listing_meta.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2979,10 +2979,13 @@
29792979
"webgpu:shader,validation,statement,switch:condition_type:*": { "subcaseMS": 5.402 },
29802980
"webgpu:shader,validation,statement,switch:condition_type_match_case_type:*": { "subcaseMS": 3.750 },
29812981
"webgpu:shader,validation,statement,switch:parse:*": { "subcaseMS": 16.068 },
2982+
"webgpu:shader,validation,statement,swizzle_assignment:invalid_address_of_swizzle_view:*": { "subcaseMS": 0.794 },
29822983
"webgpu:shader,validation,statement,swizzle_assignment:invalid_component_mismatch:*": { "subcaseMS": 1.246 },
29832984
"webgpu:shader,validation,statement,swizzle_assignment:invalid_component_oob:*": { "subcaseMS": 1.297 },
29842985
"webgpu:shader,validation,statement,swizzle_assignment:invalid_duplicate_components:*": { "subcaseMS": 1.005 },
2986+
"webgpu:shader,validation,statement,swizzle_assignment:invalid_index_into_swizzle_view:*": { "subcaseMS": 0.692 },
29852987
"webgpu:shader,validation,statement,swizzle_assignment:invalid_lhs_not_reference:*": { "subcaseMS": 3.222 },
2988+
"webgpu:shader,validation,statement,swizzle_assignment:invalid_mixed_letter_schemes:*": { "subcaseMS": 0.792 },
29862989
"webgpu:shader,validation,statement,swizzle_assignment:invalid_type_mismatch:*": { "subcaseMS": 1.086 },
29872990
"webgpu:shader,validation,statement,swizzle_assignment:valid:*": { "subcaseMS": 138.201 },
29882991
"webgpu:shader,validation,statement,while:condition_type:*": { "subcaseMS": 5.328 },

src/webgpu/shader/validation/statement/swizzle_assignment.spec.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,44 @@ fn main() {
103103
`;
104104
t.expectCompileResult(false, code);
105105
});
106+
107+
g.test('invalid_mixed_letter_schemes')
108+
.desc('Invalid swizzle assignment with mixed letter schemes (xyzw vs. rgba)')
109+
.fn(t => {
110+
t.skipIfLanguageFeatureNotSupported('swizzle_assignment');
111+
const code = `
112+
@fragment
113+
fn main() {
114+
var v = vec4f();
115+
v.xr = vec2i();
116+
}
117+
`;
118+
t.expectCompileResult(false, code);
119+
});
120+
121+
g.test('invalid_address_of_swizzle_view')
122+
.desc('Invalid to take the address of a swizzle view')
123+
.fn(t => {
124+
t.skipIfLanguageFeatureNotSupported('swizzle_assignment');
125+
const code = `
126+
@fragment
127+
fn main() {
128+
var v = vec4f();
129+
let p = &v.xy;
130+
}
131+
`;
132+
t.expectCompileResult(false, code);
133+
});
134+
135+
g.test('invalid_index_into_swizzle_view')
136+
.desc('Invalid to index into a swizzle view on the lhs')
137+
.fn(t => {
138+
t.skipIfLanguageFeatureNotSupported('swizzle_assignment');
139+
const code = `
140+
@fragment
141+
fn main() {
142+
var v = vec2u();
143+
v.xy[0] = 1;
144+
`;
145+
t.expectCompileResult(false, code);
146+
});

0 commit comments

Comments
 (0)