diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 7636d1ad71..8842007d48 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -27,14 +27,14 @@ vulkan-portability = ["wgc/gfx-backend-vulkan"] package = "wgpu-core" version = "0.5" git = "https://github.com/gfx-rs/wgpu" -rev = "b35209398823e95d71cce718fd98fa54ce43271d" +rev = "78546f410da6c3d48152c8b7d2cf3799babf956b" features = ["raw-window-handle"] [dependencies.wgt] package = "wgpu-types" version = "0.5" git = "https://github.com/gfx-rs/wgpu" -rev = "b35209398823e95d71cce718fd98fa54ce43271d" +rev = "78546f410da6c3d48152c8b7d2cf3799babf956b" [dependencies] arrayvec = "0.5" diff --git a/wgpu/examples/boids/main.rs b/wgpu/examples/boids/main.rs index e30b0b498a..17833db42f 100644 --- a/wgpu/examples/boids/main.rs +++ b/wgpu/examples/boids/main.rs @@ -51,13 +51,11 @@ impl framework::Example for Example { 0.005, // rule3Scale ] .to_vec(); - let sim_param_buffer = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Simulation Parameter Buffer"), - contents: bytemuck::cast_slice(&sim_param_data), - usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, - } - ); + let sim_param_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Simulation Parameter Buffer"), + contents: bytemuck::cast_slice(&sim_param_data), + usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, + }); // create compute bind layout group and compute pipeline layout @@ -163,13 +161,11 @@ impl framework::Example for Example { // buffer for the three 2d triangle vertices of each instance let vertex_buffer_data = [-0.01f32, -0.02, 0.01, -0.02, 0.00, 0.02]; - let vertices_buffer = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Vertex Buffer"), - contents: bytemuck::bytes_of(&vertex_buffer_data), - usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, - } - ); + let vertices_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::bytes_of(&vertex_buffer_data), + usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, + }); // buffer for all particles data of type [(posx,posy,velx,vely),...] @@ -188,15 +184,15 @@ impl framework::Example for Example { let mut particle_buffers = Vec::::new(); let mut particle_bind_groups = Vec::::new(); for i in 0..2 { - particle_buffers.push(device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { + particle_buffers.push( + device.create_buffer_init(&wgpu::util::BufferInitDescriptor { label: Some(&format!("Particle Buffer {}", i)), contents: bytemuck::cast_slice(&initial_particle_data), usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::STORAGE | wgpu::BufferUsage::COPY_DST, - } - )); + }), + ); } // create two bind groups, one for each buffer as the src diff --git a/wgpu/examples/cube/main.rs b/wgpu/examples/cube/main.rs index 2b879b30b7..6c0cf5cb7e 100644 --- a/wgpu/examples/cube/main.rs +++ b/wgpu/examples/cube/main.rs @@ -125,21 +125,17 @@ impl framework::Example for Example { let vertex_size = mem::size_of::(); let (vertex_data, index_data) = create_vertices(); - let vertex_buf = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Vertex Buffer"), - contents: bytemuck::cast_slice(&vertex_data), - usage: wgpu::BufferUsage::VERTEX, - } - ); + let vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsage::VERTEX, + }); - let index_buf = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Index Buffer"), - contents: bytemuck::cast_slice(&index_data), - usage: wgpu::BufferUsage::INDEX, - } - ); + let index_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(&index_data), + usage: wgpu::BufferUsage::INDEX, + }); // Create pipeline layout let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { @@ -219,13 +215,11 @@ impl framework::Example for Example { }); let mx_total = Self::generate_matrix(sc_desc.width as f32 / sc_desc.height as f32); let mx_ref: &[f32; 16] = mx_total.as_ref(); - let uniform_buf = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Uniform Buffer"), - contents: bytemuck::cast_slice(mx_ref), - usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, - } - ); + let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Uniform Buffer"), + contents: bytemuck::cast_slice(mx_ref), + usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, + }); // Create bind group let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { diff --git a/wgpu/examples/hello-compute/main.rs b/wgpu/examples/hello-compute/main.rs index 82dfdac6f0..f0c8a5ef2a 100644 --- a/wgpu/examples/hello-compute/main.rs +++ b/wgpu/examples/hello-compute/main.rs @@ -53,13 +53,13 @@ async fn execute_gpu(numbers: Vec) -> Vec { mapped_at_creation: false, }); - let storage_buffer = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Storage Buffer"), - contents: bytemuck::cast_slice(&numbers), - usage: wgpu::BufferUsage::STORAGE | wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::COPY_SRC, - } - ); + let storage_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Storage Buffer"), + contents: bytemuck::cast_slice(&numbers), + usage: wgpu::BufferUsage::STORAGE + | wgpu::BufferUsage::COPY_DST + | wgpu::BufferUsage::COPY_SRC, + }); let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { label: None, diff --git a/wgpu/examples/msaa-line/main.rs b/wgpu/examples/msaa-line/main.rs index 83fc7e5b81..e69553fdff 100644 --- a/wgpu/examples/msaa-line/main.rs +++ b/wgpu/examples/msaa-line/main.rs @@ -162,13 +162,11 @@ impl framework::Example for Example { }); } - let vertex_buffer = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Vertex Buffer"), - contents: bytemuck::cast_slice(&vertex_data), - usage: wgpu::BufferUsage::VERTEX, - } - ); + let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsage::VERTEX, + }); let vertex_count = vertex_data.len() as u32; let bundle = Example::create_bundle( diff --git a/wgpu/examples/texture-arrays/main.rs b/wgpu/examples/texture-arrays/main.rs index f679afc405..98d35fefc9 100644 --- a/wgpu/examples/texture-arrays/main.rs +++ b/wgpu/examples/texture-arrays/main.rs @@ -123,22 +123,18 @@ impl framework::Example for Example { let vertex_size = std::mem::size_of::(); let vertex_data = create_vertices(); - let vertex_buffer = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Vertex Buffer"), - contents: bytemuck::cast_slice(&vertex_data), - usage: wgpu::BufferUsage::VERTEX, - } - ); + let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsage::VERTEX, + }); let index_data = create_indices(); - let index_buffer = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Index Buffer"), - contents: bytemuck::cast_slice(&index_data), - usage: wgpu::BufferUsage::INDEX, - } - ); + let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(&index_data), + usage: wgpu::BufferUsage::INDEX, + }); let red_texture_data = create_texture_data(Color::RED); let green_texture_data = create_texture_data(Color::GREEN); diff --git a/wgpu/examples/water/main.rs b/wgpu/examples/water/main.rs index e2546f521b..af57073f47 100644 --- a/wgpu/examples/water/main.rs +++ b/wgpu/examples/water/main.rs @@ -338,21 +338,17 @@ impl framework::Example for Example { let terrain_vertices = terrain.make_buffer_data(); // Create the buffers on the GPU to hold the data. - let water_vertex_buf = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Water vertices"), - contents: bytemuck::cast_slice(&water_vertices), - usage: wgpu::BufferUsage::VERTEX, - } - ); + let water_vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Water vertices"), + contents: bytemuck::cast_slice(&water_vertices), + usage: wgpu::BufferUsage::VERTEX, + }); - let terrain_vertex_buf = device.create_buffer_init( - &wgpu::util::BufferInitDescriptor { - label: Some("Terrain vertices"), - contents: bytemuck::cast_slice(&terrain_vertices), - usage: wgpu::BufferUsage::VERTEX, - } - ); + let terrain_vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Terrain vertices"), + contents: bytemuck::cast_slice(&terrain_vertices), + usage: wgpu::BufferUsage::VERTEX, + }); // Create the bind group layout. This is what our uniforms will look like. let water_bind_group_layout = diff --git a/wgpu/src/backend/direct.rs b/wgpu/src/backend/direct.rs index 0883dc0e48..fd6475f581 100644 --- a/wgpu/src/backend/direct.rs +++ b/wgpu/src/backend/direct.rs @@ -24,7 +24,7 @@ pub struct Context(wgc::hub::Global); impl Context { pub fn adapter_get_info(&self, id: wgc::id::AdapterId) -> wgc::instance::AdapterInfo { let global = &self.0; - wgc::gfx_select!(id => global.adapter_get_info(id)) + wgc::gfx_select!(id => global.adapter_get_info(id)).unwrap_pretty() } pub fn enumerate_adapters(&self, backends: wgt::BackendBit) -> Vec { @@ -47,13 +47,11 @@ impl Context { }), }; - crate::Surface { - id: self.0.surfaces.register_identity( - PhantomData, - surface, - &mut wgc::hub::Token::root(), - ), - } + let id = self.0.surfaces.process_id(PhantomData); + self.0 + .surfaces + .register(id, surface, &mut wgc::hub::Token::root()); + crate::Surface { id } } } @@ -536,14 +534,14 @@ impl crate::Context for Context { &self, options: &crate::RequestAdapterOptions, ) -> Self::RequestAdapterFuture { - let id = self.0.pick_adapter( + let id = self.0.request_adapter( &wgc::instance::RequestAdapterOptions { power_preference: options.power_preference, compatible_surface: options.compatible_surface.map(|surface| surface.id), }, wgc::instance::AdapterInputs::Mask(wgt::BackendBit::all(), |_| PhantomData), ); - ready(id) + ready(id.ok()) } fn adapter_request_device( @@ -562,22 +560,22 @@ impl crate::Context for Context { fn adapter_features(&self, adapter: &Self::AdapterId) -> Features { let global = &self.0; - wgc::gfx_select!(*adapter => global.adapter_features(*adapter)) + wgc::gfx_select!(*adapter => global.adapter_features(*adapter)).unwrap_pretty() } fn adapter_limits(&self, adapter: &Self::AdapterId) -> Limits { let global = &self.0; - wgc::gfx_select!(*adapter => global.adapter_limits(*adapter)) + wgc::gfx_select!(*adapter => global.adapter_limits(*adapter)).unwrap_pretty() } fn device_features(&self, device: &Self::DeviceId) -> Features { let global = &self.0; - wgc::gfx_select!(*device => global.device_features(*device)) + wgc::gfx_select!(*device => global.device_features(*device)).unwrap_pretty() } fn device_limits(&self, device: &Self::DeviceId) -> Limits { let global = &self.0; - wgc::gfx_select!(*device => global.device_limits(*device)) + wgc::gfx_select!(*device => global.device_limits(*device)).unwrap_pretty() } fn device_create_swap_chain( @@ -858,7 +856,7 @@ impl crate::Context for Context { #[cfg(feature = "metal-auto-capture")] { let global = &self.0; - wgc::gfx_select!(*device => global.device_destroy(*device)); + wgc::gfx_select!(*device => global.device_drop(*device)); } } @@ -993,52 +991,51 @@ impl crate::Context for Context { fn texture_drop(&self, texture: &Self::TextureId) { let global = &self.0; - wgc::gfx_select!(*texture => global.texture_destroy(*texture)) + wgc::gfx_select!(*texture => global.texture_drop(*texture)) } fn texture_view_drop(&self, texture_view: &Self::TextureViewId) { let global = &self.0; - wgc::gfx_select!(*texture_view => global.texture_view_destroy(*texture_view)) - .unwrap_pretty() + wgc::gfx_select!(*texture_view => global.texture_view_drop(*texture_view)).unwrap_pretty() } fn sampler_drop(&self, sampler: &Self::SamplerId) { let global = &self.0; - wgc::gfx_select!(*sampler => global.sampler_destroy(*sampler)) + wgc::gfx_select!(*sampler => global.sampler_drop(*sampler)) } fn buffer_drop(&self, buffer: &Self::BufferId) { let global = &self.0; - wgc::gfx_select!(*buffer => global.buffer_destroy(*buffer, false)) + wgc::gfx_select!(*buffer => global.buffer_drop(*buffer, false)) } fn bind_group_drop(&self, bind_group: &Self::BindGroupId) { let global = &self.0; - wgc::gfx_select!(*bind_group => global.bind_group_destroy(*bind_group)) + wgc::gfx_select!(*bind_group => global.bind_group_drop(*bind_group)) } fn bind_group_layout_drop(&self, bind_group_layout: &Self::BindGroupLayoutId) { let global = &self.0; - wgc::gfx_select!(*bind_group_layout => global.bind_group_layout_destroy(*bind_group_layout)) + wgc::gfx_select!(*bind_group_layout => global.bind_group_layout_drop(*bind_group_layout)) } fn pipeline_layout_drop(&self, pipeline_layout: &Self::PipelineLayoutId) { let global = &self.0; - wgc::gfx_select!(*pipeline_layout => global.pipeline_layout_destroy(*pipeline_layout)) + wgc::gfx_select!(*pipeline_layout => global.pipeline_layout_drop(*pipeline_layout)) } fn shader_module_drop(&self, shader_module: &Self::ShaderModuleId) { let global = &self.0; - wgc::gfx_select!(*shader_module => global.shader_module_destroy(*shader_module)) + wgc::gfx_select!(*shader_module => global.shader_module_drop(*shader_module)) } fn command_buffer_drop(&self, command_buffer: &Self::CommandBufferId) { let global = &self.0; - wgc::gfx_select!(*command_buffer => global.command_buffer_destroy(*command_buffer)) + wgc::gfx_select!(*command_buffer => global.command_buffer_drop(*command_buffer)) } fn render_bundle_drop(&self, render_bundle: &Self::RenderBundleId) { let global = &self.0; - wgc::gfx_select!(*render_bundle => global.render_bundle_destroy(*render_bundle)) + wgc::gfx_select!(*render_bundle => global.render_bundle_drop(*render_bundle)) } fn compute_pipeline_drop(&self, pipeline: &Self::ComputePipelineId) { let global = &self.0; - wgc::gfx_select!(*pipeline => global.compute_pipeline_destroy(*pipeline)) + wgc::gfx_select!(*pipeline => global.compute_pipeline_drop(*pipeline)) } fn render_pipeline_drop(&self, pipeline: &Self::RenderPipelineId) { let global = &self.0; - wgc::gfx_select!(*pipeline => global.render_pipeline_destroy(*pipeline)) + wgc::gfx_select!(*pipeline => global.render_pipeline_drop(*pipeline)) } fn command_encoder_copy_buffer_to_buffer( diff --git a/wgpu/src/util/belt.rs b/wgpu/src/util/belt.rs index 4e6bfc1f26..52017715d6 100644 --- a/wgpu/src/util/belt.rs +++ b/wgpu/src/util/belt.rs @@ -122,13 +122,13 @@ impl StagingBelt { &mut self.encoder, device.create_command_encoder(&CommandEncoderDescriptor::default()), ) - .finish() + .finish() } /// Recall all of the closed buffers back for re-usal. /// /// This has to be called after the command buffer produced by `flush` is submitted! - pub fn recall(&mut self) -> impl Future + Send { + pub fn recall(&mut self) -> impl Future + Send { while let Ok(mut chunk) = self.receiver.try_recv() { chunk.offset = 0; self.free_chunks.push(chunk); @@ -143,6 +143,6 @@ impl StagingBelt { .map_async(MapMode::Write) .inspect(move |_| sender.send(chunk).unwrap()) })) - .map(|_| ()) + .map(|_| ()) } } diff --git a/wgpu/src/util/mod.rs b/wgpu/src/util/mod.rs index 6b54b89dd0..9525be5201 100644 --- a/wgpu/src/util/mod.rs +++ b/wgpu/src/util/mod.rs @@ -107,4 +107,3 @@ pub struct BufferInitDescriptor<'a> { /// will panic. pub usage: crate::BufferUsage, } -