diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 7640bad1e1..9e4d7efe4f 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -26,14 +26,14 @@ vulkan-portability = ["wgc/gfx-backend-vulkan", "gfx-backend-vulkan"] package = "wgpu-core" #version = "0.6" git = "https://github.com/gfx-rs/wgpu" -rev = "3efba7712abdd75a6b3b35c03969a59e9ac92032" +rev = "67e652f471d5b138a34231666c953f26ec25aa18" features = ["raw-window-handle"] [dependencies.wgt] package = "wgpu-types" #version = "0.6" git = "https://github.com/gfx-rs/wgpu" -rev = "3efba7712abdd75a6b3b35c03969a59e9ac92032" +rev = "67e652f471d5b138a34231666c953f26ec25aa18" [dependencies] arrayvec = "0.5" diff --git a/wgpu/examples/boids/main.rs b/wgpu/examples/boids/main.rs index 2d4604d0ed..0f64ddfa2a 100644 --- a/wgpu/examples/boids/main.rs +++ b/wgpu/examples/boids/main.rs @@ -64,8 +64,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::COMPUTE, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new( (sim_param_data.len() * std::mem::size_of::()) as _, ), @@ -75,20 +76,20 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 1, visibility: wgpu::ShaderStage::COMPUTE, - ty: wgpu::BindingType::StorageBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { read_only: false }, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new((NUM_PARTICLES * 16) as _), - readonly: false, }, count: None, }, wgpu::BindGroupLayoutEntry { binding: 2, visibility: wgpu::ShaderStage::COMPUTE, - ty: wgpu::BindingType::StorageBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { read_only: false }, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new((NUM_PARTICLES * 16) as _), - readonly: false, }, count: None, }, diff --git a/wgpu/examples/cube/main.rs b/wgpu/examples/cube/main.rs index 18f666f783..272635b9d4 100644 --- a/wgpu/examples/cube/main.rs +++ b/wgpu/examples/cube/main.rs @@ -145,8 +145,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::VERTEX, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new(64), }, count: None, @@ -154,17 +155,20 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 1, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::SampledTexture { + ty: wgpu::BindingType::Texture { multisampled: false, - component_type: wgpu::TextureComponentType::Float, - dimension: wgpu::TextureViewDimension::D2, + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + view_dimension: wgpu::TextureViewDimension::D2, }, count: None, }, wgpu::BindGroupLayoutEntry { binding: 2, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::Sampler { comparison: false }, + ty: wgpu::BindingType::Sampler { + comparison: false, + filtering: true, + }, count: None, }, ], diff --git a/wgpu/examples/hello-compute/main.rs b/wgpu/examples/hello-compute/main.rs index 8cf527ccc5..7ad7817880 100644 --- a/wgpu/examples/hello-compute/main.rs +++ b/wgpu/examples/hello-compute/main.rs @@ -85,9 +85,12 @@ async fn execute_gpu(numbers: Vec) -> Vec { entries: &[wgpu::BindGroupLayoutEntry { binding: 0, // The location visibility: wgpu::ShaderStage::COMPUTE, // Which shader type in the pipeline this buffer is available to. - ty: wgpu::BindingType::StorageBuffer { - dynamic: false, - readonly: false, // Specifies if the buffer can only be read within the shader + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { + // Specifies if the buffer can only be read within the shader + read_only: false, + }, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new(4), }, count: None, diff --git a/wgpu/examples/shadow/main.rs b/wgpu/examples/shadow/main.rs index 4082029bb6..6af76e15ff 100644 --- a/wgpu/examples/shadow/main.rs +++ b/wgpu/examples/shadow/main.rs @@ -314,8 +314,9 @@ impl framework::Example for Example { entries: &[wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::UniformBuffer { - dynamic: true, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: true, min_binding_size: wgpu::BufferSize::new(entity_uniform_size), }, count: None, @@ -426,8 +427,9 @@ impl framework::Example for Example { entries: &[wgpu::BindGroupLayoutEntry { binding: 0, // global visibility: wgpu::ShaderStage::VERTEX, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new(uniform_size), }, count: None, @@ -508,8 +510,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 0, // global visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new(mem::size_of::< ForwardUniforms, >( @@ -521,8 +524,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 1, // lights visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new(light_uniform_size), }, count: None, @@ -530,17 +534,20 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 2, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::SampledTexture { + ty: wgpu::BindingType::Texture { multisampled: false, - component_type: wgpu::TextureComponentType::DepthComparison, - dimension: wgpu::TextureViewDimension::D2Array, + sample_type: wgpu::TextureSampleType::Depth, + view_dimension: wgpu::TextureViewDimension::D2Array, }, count: None, }, wgpu::BindGroupLayoutEntry { binding: 3, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::Sampler { comparison: true }, + ty: wgpu::BindingType::Sampler { + comparison: true, + filtering: false, + }, count: None, }, ], diff --git a/wgpu/examples/skybox/main.rs b/wgpu/examples/skybox/main.rs index 8995eb5635..ac30941042 100644 --- a/wgpu/examples/skybox/main.rs +++ b/wgpu/examples/skybox/main.rs @@ -54,8 +54,9 @@ impl framework::Example for Skybox { wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: None, }, count: None, @@ -63,17 +64,20 @@ impl framework::Example for Skybox { wgpu::BindGroupLayoutEntry { binding: 1, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::SampledTexture { - component_type: wgpu::TextureComponentType::Float, + ty: wgpu::BindingType::Texture { + sample_type: wgpu::TextureSampleType::Float { filterable: true }, multisampled: false, - dimension: wgpu::TextureViewDimension::Cube, + view_dimension: wgpu::TextureViewDimension::Cube, }, count: None, }, wgpu::BindGroupLayoutEntry { binding: 2, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::Sampler { comparison: false }, + ty: wgpu::BindingType::Sampler { + comparison: false, + filtering: true, + }, count: None, }, ], @@ -86,7 +90,7 @@ impl framework::Example for Skybox { let aspect = sc_desc.width as f32 / sc_desc.height as f32; let uniforms = Self::generate_uniforms(aspect); let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { - label: Some("Uniform Buffer"), + label: Some(" Buffer"), contents: bytemuck::cast_slice(&raw_uniforms(&uniforms)), usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, }); diff --git a/wgpu/examples/texture-arrays/main.rs b/wgpu/examples/texture-arrays/main.rs index 96383c23c8..93e6426fe4 100644 --- a/wgpu/examples/texture-arrays/main.rs +++ b/wgpu/examples/texture-arrays/main.rs @@ -197,9 +197,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::SampledTexture { - component_type: wgpu::TextureComponentType::Float, - dimension: wgpu::TextureViewDimension::D2, + ty: wgpu::BindingType::Texture { + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + view_dimension: wgpu::TextureViewDimension::D2, multisampled: false, }, count: std::num::NonZeroU32::new(2), @@ -207,7 +207,10 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 1, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::Sampler { comparison: false }, + ty: wgpu::BindingType::Sampler { + comparison: false, + filtering: true, + }, count: None, }, ], diff --git a/wgpu/examples/water/main.rs b/wgpu/examples/water/main.rs index 6b4555a9ab..69960b040d 100644 --- a/wgpu/examples/water/main.rs +++ b/wgpu/examples/water/main.rs @@ -354,8 +354,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new( mem::size_of::() as _, ), @@ -366,10 +367,10 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 1, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::SampledTexture { + ty: wgpu::BindingType::Texture { multisampled: false, - component_type: wgpu::TextureComponentType::Float, - dimension: wgpu::TextureViewDimension::D2, + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + view_dimension: wgpu::TextureViewDimension::D2, }, count: None, }, @@ -377,10 +378,10 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 2, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::SampledTexture { + ty: wgpu::BindingType::Texture { multisampled: false, - component_type: wgpu::TextureComponentType::Float, - dimension: wgpu::TextureViewDimension::D2, + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + view_dimension: wgpu::TextureViewDimension::D2, }, count: None, }, @@ -388,7 +389,10 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 3, visibility: wgpu::ShaderStage::FRAGMENT, - ty: wgpu::BindingType::Sampler { comparison: false }, + ty: wgpu::BindingType::Sampler { + comparison: false, + filtering: true, + }, count: None, }, ], @@ -402,8 +406,9 @@ impl framework::Example for Example { wgpu::BindGroupLayoutEntry { binding: 0, visibility: wgpu::ShaderStage::VERTEX, - ty: wgpu::BindingType::UniformBuffer { - dynamic: false, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, min_binding_size: wgpu::BufferSize::new( mem::size_of::() as _, ), diff --git a/wgpu/src/backend/web.rs b/wgpu/src/backend/web.rs index fdc6540661..065d43e908 100644 --- a/wgpu/src/backend/web.rs +++ b/wgpu/src/backend/web.rs @@ -1,9 +1,9 @@ use crate::{ - BindGroupDescriptor, BindGroupLayoutDescriptor, BindingResource, BindingType, BufferDescriptor, - CommandEncoderDescriptor, ComputePipelineDescriptor, LoadOp, PipelineLayoutDescriptor, - ProgrammableStageDescriptor, RenderBundleEncoderDescriptor, RenderPipelineDescriptor, - SamplerDescriptor, ShaderModuleSource, SwapChainStatus, TextureDescriptor, - TextureViewDescriptor, TextureViewDimension, + BindGroupDescriptor, BindGroupLayoutDescriptor, BindingResource, BindingType, + BufferBindingType, BufferDescriptor, CommandEncoderDescriptor, ComputePipelineDescriptor, + LoadOp, PipelineLayoutDescriptor, ProgrammableStageDescriptor, RenderBundleEncoderDescriptor, + RenderPipelineDescriptor, SamplerDescriptor, ShaderModuleSource, StorageTextureAccess, + SwapChainStatus, TextureDescriptor, TextureViewDescriptor, TextureViewDimension, }; use futures::FutureExt; @@ -459,15 +459,13 @@ fn map_texture_format(texture_format: wgt::TextureFormat) -> web_sys::GpuTexture } fn map_texture_component_type( - texture_component_type: wgt::TextureComponentType, + sample_type: wgt::TextureSampleType, ) -> web_sys::GpuTextureComponentType { - match texture_component_type { - wgt::TextureComponentType::Float => web_sys::GpuTextureComponentType::Float, - wgt::TextureComponentType::Sint => web_sys::GpuTextureComponentType::Sint, - wgt::TextureComponentType::Uint => web_sys::GpuTextureComponentType::Uint, - wgt::TextureComponentType::DepthComparison => { - web_sys::GpuTextureComponentType::DepthComparison - } + match sample_type { + wgt::TextureSampleType::Float { .. } => web_sys::GpuTextureComponentType::Float, + wgt::TextureSampleType::Sint => web_sys::GpuTextureComponentType::Sint, + wgt::TextureSampleType::Uint => web_sys::GpuTextureComponentType::Uint, + wgt::TextureSampleType::Depth => web_sys::GpuTextureComponentType::DepthComparison, } } @@ -981,20 +979,30 @@ impl crate::Context for Context { .iter() .map(|bind| { let mapped_type = match bind.ty { - BindingType::UniformBuffer { .. } => bt::UniformBuffer, - BindingType::StorageBuffer { - readonly: false, .. + BindingType::Buffer { + ty: BufferBindingType::Uniform, + .. + } => bt::UniformBuffer, + BindingType::Buffer { + ty: BufferBindingType::Storage { read_only: false }, + .. } => bt::StorageBuffer, - BindingType::StorageBuffer { readonly: true, .. } => bt::ReadonlyStorageBuffer, - BindingType::Sampler { comparison: false } => bt::Sampler, + BindingType::Buffer { + ty: BufferBindingType::Storage { read_only: true }, + .. + } => bt::ReadonlyStorageBuffer, + BindingType::Sampler { + comparison: false, .. + } => bt::Sampler, BindingType::Sampler { .. } => bt::ComparisonSampler, - BindingType::SampledTexture { + BindingType::Texture { multisampled: true, .. } => bt::MultisampledTexture, - BindingType::SampledTexture { .. } => bt::SampledTexture, - BindingType::StorageTexture { readonly: true, .. } => { - bt::ReadonlyStorageTexture - } + BindingType::Texture { .. } => bt::SampledTexture, + BindingType::StorageTexture { + access: StorageTextureAccess::ReadOnly, + .. + } => bt::ReadonlyStorageTexture, BindingType::StorageTexture { .. } => bt::WriteonlyStorageTexture, }; @@ -1009,22 +1017,21 @@ impl crate::Context for Context { bind.visibility.bits(), ); - match bind.ty { - BindingType::UniformBuffer { dynamic, .. } - | BindingType::StorageBuffer { dynamic, .. } => { - mapped_entry.has_dynamic_offset(dynamic); - } - _ => {} + if let BindingType::Buffer { + has_dynamic_offset, .. + } = bind.ty + { + mapped_entry.has_dynamic_offset(has_dynamic_offset); } - if let BindingType::SampledTexture { component_type, .. } = bind.ty { - mapped_entry.texture_component_type(map_texture_component_type(component_type)); + if let BindingType::Texture { sample_type, .. } = bind.ty { + mapped_entry.texture_component_type(map_texture_component_type(sample_type)); } match bind.ty { - BindingType::SampledTexture { dimension, .. } - | BindingType::StorageTexture { dimension, .. } => { - mapped_entry.view_dimension(map_texture_view_dimension(dimension)); + BindingType::Texture { view_dimension, .. } + | BindingType::StorageTexture { view_dimension, .. } => { + mapped_entry.view_dimension(map_texture_view_dimension(view_dimension)); } _ => {} } diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 31eb433c77..136ebc465c 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -33,16 +33,17 @@ use serde::Serialize; pub use wgc::instance::{AdapterInfo, DeviceType}; pub use wgt::{ AddressMode, Backend, BackendBit, BindGroupLayoutEntry, BindingType, BlendDescriptor, - BlendFactor, BlendOperation, BufferAddress, BufferSize, BufferUsage, Color, + BlendFactor, BlendOperation, BufferAddress, BufferBindingType, BufferSize, BufferUsage, Color, ColorStateDescriptor, ColorWrite, CommandBufferDescriptor, CompareFunction, CullMode, DepthStencilStateDescriptor, DynamicOffset, Extent3d, Features, FilterMode, FrontFace, IndexFormat, InputStepMode, Limits, Origin3d, PolygonMode, PowerPreference, PresentMode, PrimitiveTopology, PushConstantRange, RasterizationStateDescriptor, SamplerBorderColor, ShaderLocation, ShaderStage, StencilOperation, StencilStateDescriptor, - StencilStateFaceDescriptor, SwapChainDescriptor, SwapChainStatus, TextureAspect, - TextureComponentType, TextureDataLayout, TextureDimension, TextureFormat, TextureUsage, - TextureViewDimension, VertexAttributeDescriptor, VertexFormat, BIND_BUFFER_ALIGNMENT, - COPY_BUFFER_ALIGNMENT, COPY_BYTES_PER_ROW_ALIGNMENT, PUSH_CONSTANT_ALIGNMENT, + StencilStateFaceDescriptor, StorageTextureAccess, SwapChainDescriptor, SwapChainStatus, + TextureAspect, TextureDataLayout, TextureDimension, TextureFormat, TextureSampleType, + TextureUsage, TextureViewDimension, VertexAttributeDescriptor, VertexFormat, + BIND_BUFFER_ALIGNMENT, COPY_BUFFER_ALIGNMENT, COPY_BYTES_PER_ROW_ALIGNMENT, + PUSH_CONSTANT_ALIGNMENT, }; use backend::{BufferMappedRange, Context as C};