Skip to content

Commit

Permalink
fix most feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
Vecvec committed Sep 20, 2024
1 parent 0fcc749 commit c3aa7ba
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 201 deletions.
7 changes: 1 addition & 6 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
<<<<<<< HEAD
*.mtl binary -diff
*.obj binary -diff
=======
*.mtl binary
*.obj binary
wgpu/src/backend/webgpu/webgpu_sys/** linguist-generated=true
>>>>>>> trunk
wgpu/src/backend/webgpu/webgpu_sys/** linguist-generated=true
154 changes: 0 additions & 154 deletions api_spec.rs

This file was deleted.

2 changes: 1 addition & 1 deletion examples/src/ray_cube_compute/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ impl crate::framework::Example for Example {
update_mode: rt::AccelerationStructureUpdateMode::Build,
},
rt::BlasGeometrySizeDescriptors::Triangles {
desc: vec![blas_geo_size_desc.clone()],
descriptors: vec![blas_geo_size_desc.clone()],
},
);

Expand Down
2 changes: 1 addition & 1 deletion examples/src/ray_cube_fragment/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ impl crate::framework::Example for Example {
update_mode: rt::AccelerationStructureUpdateMode::Build,
},
rt::BlasGeometrySizeDescriptors::Triangles {
desc: vec![blas_geo_size_desc.clone()],
descriptors: vec![blas_geo_size_desc.clone()],
},
);

Expand Down
2 changes: 1 addition & 1 deletion examples/src/ray_scene/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ fn upload_scene_components(
update_mode: rt::AccelerationStructureUpdateMode::Build,
},
rt::BlasGeometrySizeDescriptors::Triangles {
desc: size_desc.clone(),
descriptors: size_desc.clone(),
},
);
(size_desc, blas)
Expand Down
2 changes: 1 addition & 1 deletion examples/src/ray_shadows/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ impl crate::framework::Example for Example {
update_mode: rt::AccelerationStructureUpdateMode::Build,
},
rt::BlasGeometrySizeDescriptors::Triangles {
desc: vec![blas_geo_size_desc.clone()],
descriptors: vec![blas_geo_size_desc.clone()],
},
);

Expand Down
2 changes: 1 addition & 1 deletion examples/src/ray_traced_triangle/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ impl crate::framework::Example for Example {
update_mode: AccelerationStructureUpdateMode::Build,
},
BlasGeometrySizeDescriptors::Triangles {
desc: vec![blas_size_desc.clone()],
descriptors: vec![blas_size_desc.clone()],
},
);

Expand Down
2 changes: 1 addition & 1 deletion tests/tests/ray_tracing_use_after_free/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ fn execute(ctx: TestingContext) {
update_mode: AccelerationStructureUpdateMode::Build,
},
BlasGeometrySizeDescriptors::Triangles {
desc: vec![blas_size.clone()],
descriptors: vec![blas_size.clone()],
},
);
let tlas = ctx.device.create_tlas(&CreateTlasDescriptor {
Expand Down
28 changes: 13 additions & 15 deletions wgpu-core/src/command/ray_tracing.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#[cfg(feature = "trace")]
use crate::device::trace;
#[cfg(feature = "trace")]
use crate::ray_tracing::TraceBlasGeometries;
use crate::{
device::queue::TempResource,
global::Global,
Expand Down Expand Up @@ -114,12 +118,10 @@ impl Global {
let trace_tlas: Vec<TlasBuildEntry> = tlas_iter.collect();
#[cfg(feature = "trace")]
if let Some(ref mut list) = cmd_buf.data.lock().as_mut().unwrap().commands {
list.push(
crate::device::trace::Command::BuildAccelerationStructuresUnsafeTlas {
blas: trace_blas.clone(),
tlas: trace_tlas.clone(),
},
);
list.push(trace::Command::BuildAccelerationStructuresUnsafeTlas {
blas: trace_blas.clone(),
tlas: trace_tlas.clone(),
});
if !trace_tlas.is_empty() {
log::warn!("a trace of command_encoder_build_acceleration_structures_unsafe_tlas containing a tlas build is not replayable!");
}
Expand All @@ -128,9 +130,7 @@ impl Global {
#[cfg(feature = "trace")]
let blas_iter = trace_blas.iter().map(|x| {
let geometries = match &x.geometries {
crate::ray_tracing::TraceBlasGeometries::TriangleGeometries(
triangle_geometries,
) => {
TraceBlasGeometries::TriangleGeometries(triangle_geometries) => {
let iter = triangle_geometries.iter().map(|tg| BlasTriangleGeometry {
size: &tg.size,
vertex_buffer: tg.vertex_buffer,
Expand Down Expand Up @@ -417,7 +417,7 @@ impl Global {

#[cfg(feature = "trace")]
if let Some(ref mut list) = cmd_buf.data.lock().as_mut().unwrap().commands {
list.push(crate::device::trace::Command::BuildAccelerationStructures {
list.push(trace::Command::BuildAccelerationStructures {
blas: trace_blas.clone(),
tlas: trace_tlas.clone(),
});
Expand All @@ -426,9 +426,7 @@ impl Global {
#[cfg(feature = "trace")]
let blas_iter = trace_blas.iter().map(|x| {
let geometries = match &x.geometries {
crate::ray_tracing::TraceBlasGeometries::TriangleGeometries(
triangle_geometries,
) => {
TraceBlasGeometries::TriangleGeometries(triangle_geometries) => {
let iter = triangle_geometries.iter().map(|tg| BlasTriangleGeometry {
size: &tg.size,
vertex_buffer: tg.vertex_buffer,
Expand Down Expand Up @@ -813,7 +811,7 @@ fn iter_blas<'a>(
BlasGeometries::TriangleGeometries(triangle_geometries) => {
for (i, mesh) in triangle_geometries.enumerate() {
let size_desc = match &blas.sizes {
wgt::BlasGeometrySizeDescriptors::Triangles { desc } => desc,
wgt::BlasGeometrySizeDescriptors::Triangles { descriptors } => descriptors,
};
if i >= size_desc.len() {
return Err(BuildAccelerationStructureError::IncompatibleBlasBuildSizes(
Expand Down Expand Up @@ -947,7 +945,7 @@ fn iter_blas<'a>(
Ok(())
}

/// Iterates over the buffers generated [iter_blas] and convert the barriers into hal barriers, and the triangles into [hal::AccelerationStructureEntries] (and also some validation).
/// Iterates over the buffers generated in [iter_blas], convert the barriers into hal barriers, and the triangles into [hal::AccelerationStructureEntries] (and also some validation).
fn iter_buffers<'a, 'b>(
buf_storage: &'a mut BufferStorage<'b>,
snatch_guard: &'a SnatchGuard,
Expand Down
22 changes: 11 additions & 11 deletions wgpu-core/src/device/ray_tracing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,44 +23,44 @@ impl Device {
sizes: wgt::BlasGeometrySizeDescriptors,
) -> Result<Arc<resource::Blas>, CreateBlasError> {
let size_info = match &sizes {
wgt::BlasGeometrySizeDescriptors::Triangles { desc } => {
wgt::BlasGeometrySizeDescriptors::Triangles { descriptors } => {
let mut entries =
Vec::<hal::AccelerationStructureTriangles<dyn hal::DynBuffer>>::with_capacity(
desc.len(),
descriptors.len(),
);
for x in desc {
if x.index_count.is_some() != x.index_format.is_some() {
for desc in descriptors {
if desc.index_count.is_some() != desc.index_format.is_some() {
return Err(CreateBlasError::MissingIndexData);
}
let indices =
x.index_count
desc.index_count
.map(|count| AccelerationStructureTriangleIndices::<
dyn hal::DynBuffer,
> {
format: x.index_format.unwrap(),
format: desc.index_format.unwrap(),
buffer: None,
offset: 0,
count,
});
if !self
.features
.allowed_vertex_formats_for_blas()
.contains(&x.vertex_format)
.contains(&desc.vertex_format)
{
return Err(CreateBlasError::InvalidVertexFormat(
x.vertex_format,
desc.vertex_format,
self.features.allowed_vertex_formats_for_blas(),
));
}
entries.push(hal::AccelerationStructureTriangles::<dyn hal::DynBuffer> {
vertex_buffer: None,
vertex_format: x.vertex_format,
vertex_format: desc.vertex_format,
first_vertex: 0,
vertex_count: x.vertex_count,
vertex_count: desc.vertex_count,
vertex_stride: 0,
indices,
transform: None,
flags: x.flags,
flags: desc.flags,
});
}
unsafe {
Expand Down
17 changes: 9 additions & 8 deletions wgpu-core/src/ray_tracing.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
// Ray tracing
// Major missing optimizations (no api surface changes needed):
// - use custom tracker to track build state
// - no forced rebuilt (build mode deduction)
// - lazy instance buffer allocation
// - maybe share scratch and instance staging buffer allocation
// - partial instance buffer uploads (api surface already designed with this in mind)
// - ([non performance] extract function in build (rust function extraction with guards is a pain))

use crate::{
command::CommandEncoderError,
device::DeviceError,
id::{BlasId, BufferId, TlasId},
resource::CreateBufferError,
};
use std::sync::Arc;
/// Ray tracing
/// Major missing optimizations (no api surface changes needed):
/// - use custom tracker to track build state
/// - no forced rebuilt (build mode deduction)
/// - lazy instance buffer allocation
/// - maybe share scratch and instance staging buffer allocation
/// - partial instance buffer uploads (api surface already designed with this in mind)
/// - ([non performance] extract function in build (rust function extraction with guards is a pain))
use std::{num::NonZeroU64, slice};

use crate::resource::{Blas, ResourceErrorIdent, Tlas};
Expand Down
2 changes: 1 addition & 1 deletion wgpu-types/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7464,7 +7464,7 @@ pub enum BlasGeometrySizeDescriptors {
/// Triangle geometry version.
Triangles {
/// Descriptor for each triangle geometry.
desc: Vec<BlasTriangleGeometrySizeDescriptor>,
descriptors: Vec<BlasTriangleGeometrySizeDescriptor>,
},
}

Expand Down

0 comments on commit c3aa7ba

Please sign in to comment.