Skip to content

Commit

Permalink
[wgsl-in] Fix error message for invalid texture{Load,Store}() on 2d_a…
Browse files Browse the repository at this point in the history
…rray

Fixes gfx-rs#2431
  • Loading branch information
fornwall committed Aug 11, 2023
1 parent 061d499 commit c53d7da
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/front/wgsl/lower/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1937,7 +1937,10 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {

let (_, arrayed) = ctx.image_data(image, image_span)?;
let array_index = arrayed
.then(|| self.expression(args.next()?, ctx.reborrow()))
.then(|| {
args.min_args += 1;
self.expression(args.next()?, ctx.reborrow())
})
.transpose()?;

let value = self.expression(args.next()?, ctx.reborrow())?;
Expand Down Expand Up @@ -1968,7 +1971,10 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {

let (class, arrayed) = ctx.image_data(image, image_span)?;
let array_index = arrayed
.then(|| self.expression(args.next()?, ctx.reborrow()))
.then(|| {
args.min_args += 1;
self.expression(args.next()?, ctx.reborrow())
})
.transpose()?;

let level = class
Expand Down
28 changes: 28 additions & 0 deletions src/front/wgsl/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -481,3 +481,31 @@ fn parse_alias() {
)
.unwrap();
}

#[test]
fn parse_texture_load_store_expecting_four_args() {
for (func, texture) in [
(
"textureStore",
"texture_storage_2d_array<rg11b10float, write>",
),
("textureLoad", "texture_2d_array<i32>"),
] {
let error = parse_str(&format!(
"
@group(0) @binding(0) var tex_los_res: {texture};
@compute
@workgroup_size(1)
fn main(@builtin(global_invocation_id) id: vec3<u32>) {{
var color = vec4(1, 1, 1, 1);
{func}(tex_los_res, id, color);
}}
"
))
.unwrap_err();
assert_eq!(
error.message(),
"wrong number of arguments: expected 4, found 3"
);
}
}

0 comments on commit c53d7da

Please sign in to comment.