Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[spirv] Stop naga causing undefined behavior in rayQueryGet*Intersection #6752

Merged
merged 31 commits into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
f862239
add test
Vecvec Dec 15, 2024
9c4b6cd
format
Vecvec Dec 15, 2024
d726398
move ray query get intersection to its own function
Vecvec Dec 15, 2024
c1db49b
regen snapshots
Vecvec Dec 16, 2024
a1f821b
remove old (and now unused) function
Vecvec Dec 16, 2024
7430bae
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 16, 2024
ffb73fe
changelog
Vecvec Dec 16, 2024
e366e3c
Merge remote-tracking branch 'origin/remove-rt-undefined-behavior' in…
Vecvec Dec 16, 2024
b28b7fb
Merge remote-tracking branch 'refs/remotes/gfx-rs/trunk' into remove-…
Vecvec Dec 17, 2024
37260ca
format
Vecvec Dec 17, 2024
cc97ba7
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 17, 2024
cb48e2c
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 17, 2024
7251a36
Make what block ray t is in dependent on whether it is committed or c…
Vecvec Dec 18, 2024
c4fd478
regen snapshots
Vecvec Dec 18, 2024
a7ed032
format
Vecvec Dec 18, 2024
8020980
Merge remote-tracking branch 'refs/remotes/gfx-rs/trunk' into remove-…
Vecvec Dec 18, 2024
9065ce2
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 18, 2024
9157230
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 18, 2024
156f7d3
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 20, 2024
0cfff0a
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 23, 2024
422ac12
address comments
Vecvec Dec 24, 2024
a2a0101
Merge remote-tracking branch 'origin/remove-rt-undefined-behavior' in…
Vecvec Dec 24, 2024
a064b90
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 24, 2024
1b063c5
format
Vecvec Dec 24, 2024
d6d61fd
Merge remote-tracking branch 'origin/remove-rt-undefined-behavior' in…
Vecvec Dec 24, 2024
6dedfb4
Merge branch 'trunk' into remove-rt-undefined-behavior
Vecvec Dec 26, 2024
6d1bf37
Merge branch 'trunk' into remove-rt-undefined-behavior
cwfitzgerald Jan 14, 2025
eb65040
Clippy.
Vecvec Jan 14, 2025
4b676b9
Merge remote-tracking branch 'trunk/trunk' into remove-rt-undefined-b…
Vecvec Jan 16, 2025
8f6fbf5
Fix clippy.
Vecvec Jan 16, 2025
6017b16
Merge branch 'trunk' into remove-rt-undefined-behavior
cwfitzgerald Jan 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,10 @@ By @wumpf in [#6849](https://github.com/gfx-rs/wgpu/pull/6849).

- Fix crash when a texture argument is missing. By @aedm in [#6486](https://github.com/gfx-rs/wgpu/pull/6486)
- Emit an error in constant evaluation, rather than crash, in certain cases where `vecN` constructors have less than N arguments. By @ErichDonGubler in [#6508](https://github.com/gfx-rs/wgpu/pull/6508).

#### Vulkan

- Stop naga causing undefined behavior when a ray query misses. By @Vecvec in [#6752](https://github.com/gfx-rs/wgpu/pull/6752).
- Allocate descriptors for acceleration structures. By @Vecvec in [#6861](https://github.com/gfx-rs/wgpu/pull/6861).
- `max_color_attachment_bytes_per_sample` is now correctly set to 128. By @cwfitzgerald in [#6866](https://github.com/gfx-rs/wgpu/pull/6866)

Expand Down
15 changes: 14 additions & 1 deletion naga/src/back/spv/block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1736,7 +1736,20 @@ impl BlockContext<'_> {
}
crate::Expression::ArrayLength(expr) => self.write_runtime_array_length(expr, block)?,
crate::Expression::RayQueryGetIntersection { query, committed } => {
self.write_ray_query_get_intersection(query, block, committed)
let query_id = self.cached[query];
let func_id = self
.writer
.write_ray_query_get_intersection_function(committed, self.ir_module);
let ray_intersection = self.ir_module.special_types.ray_intersection.unwrap();
let intersection_type_id = self.get_type_id(LookupType::Handle(ray_intersection));
let id = self.gen_id();
block.body.push(Instruction::function_call(
intersection_type_id,
id,
func_id,
&[query_id],
));
id
}
};

Expand Down
2 changes: 2 additions & 0 deletions naga/src/back/spv/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -766,6 +766,8 @@ pub struct Writer {

// Just a temporary list of SPIR-V ids
temp_list: Vec<Word>,

ray_get_intersection_function: Option<Word>,
}

bitflags::bitflags! {
Expand Down
Loading
Loading