diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ecc4033d3..130bd192b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ a soundness issue, the intent is to move an error from runtime to compile time. ### Bindless (`binding_array`) Grew More Capabilities - DX12 now supports `PARTIALLY_BOUND_BINDING_ARRAY` on Resource Binding Tier 3 Hardware. This is most D3D12 hardware [D3D12 Feature Table] for more information on what hardware supports this feature. By @cwfitzgerald in [#6734](https://github.com/gfx-rs/wgpu/pull/6734). +- Buffer Dynamic Offsets and Binding Arrays may not be used in the same bind group. By @cwfitzgerald in [#6811](https://github.com/gfx-rs/wgpu/pull/6811) [D3D12 Feature Table]: https://d3d12infodb.boolka.dev/FeatureTable.html diff --git a/wgpu-core/src/binding_model.rs b/wgpu-core/src/binding_model.rs index 189d3bc46e..d6d081df72 100644 --- a/wgpu-core/src/binding_model.rs +++ b/wgpu-core/src/binding_model.rs @@ -413,9 +413,9 @@ impl BindingTypeMaxCountValidator { } /// Validate that the bind group layout does not contain both a binding array and a dynamic offset array. - /// + /// /// This allows us to use `UPDATE_AFTER_BIND` on vulkan for bindless arrays. Vulkan does not allow - /// `UPDATE_AFTER_BIND` on dynamic offset arrays. See https://github.com/gfx-rs/wgpu/issues/6737 + /// `UPDATE_AFTER_BIND` on dynamic offset arrays. See pub(crate) fn validate_binding_arrays(&self) -> Result<(), CreateBindGroupLayoutError> { let has_dynamic_offset_array = self.dynamic_uniform_buffers > 0 || self.dynamic_storage_buffers > 0; diff --git a/wgpu-types/src/lib.rs b/wgpu-types/src/lib.rs index 8b922ae3e2..aa9c170c49 100644 --- a/wgpu-types/src/lib.rs +++ b/wgpu-types/src/lib.rs @@ -7018,7 +7018,7 @@ pub struct BindGroupLayoutEntry { /// The type of the binding pub ty: BindingType, /// If the binding is an array of multiple resources. Corresponds to `binding_array` in the shader. - /// + /// /// When this is `Some` the following validation applies: /// - Size must be of value 1 or greater. /// - When `ty == BindingType::Texture`, [`Features::TEXTURE_BINDING_ARRAY`] must be supported. @@ -7027,7 +7027,7 @@ pub struct BindGroupLayoutEntry { /// - When `ty == BindingType::Buffer` and `ty.ty == BufferBindingType::Storage`, [`Features::STORAGE_RESOURCE_BINDING_ARRAY`] must be supported. /// - When `ty == BindingTYpe::StorageTexture`, [`Features::STORAGE_RESOURCE_BINDING_ARRAY`] must be supported. /// - When any binding in the group is an array, no `BindingType::Buffer` in the group may have `has_dynamic_offset == true` - /// + /// #[cfg_attr(feature = "serde", serde(default))] pub count: Option, }