diff --git a/src/backend/empty/src/lib.rs b/src/backend/empty/src/lib.rs index ef014531158..e30db8732aa 100644 --- a/src/backend/empty/src/lib.rs +++ b/src/backend/empty/src/lib.rs @@ -563,10 +563,12 @@ impl command::RawCommandBuffer for RawCommandBuffer { unimplemented!() } - fn bind_graphics_descriptor_sets(&mut self, _: &(), _: usize, _: I) + fn bind_graphics_descriptor_sets(&mut self, _: &(), _: usize, _: I, _: J) where I: IntoIterator, I::Item: Borrow<()>, + J: IntoIterator, + J::Item: Borrow, { unimplemented!() } @@ -575,10 +577,12 @@ impl command::RawCommandBuffer for RawCommandBuffer { unimplemented!() } - fn bind_compute_descriptor_sets(&mut self, _: &(), _: usize, _: I) + fn bind_compute_descriptor_sets(&mut self, _: &(), _: usize, _: I, _: J) where I: IntoIterator, I::Item: Borrow<()>, + J: IntoIterator, + J::Item: Borrow, { unimplemented!() } diff --git a/src/backend/gl/src/command.rs b/src/backend/gl/src/command.rs index 53a2d0b7f42..ccf0be8e742 100644 --- a/src/backend/gl/src/command.rs +++ b/src/backend/gl/src/command.rs @@ -834,14 +834,17 @@ impl command::RawCommandBuffer for RawCommandBuffer { self.update_blend_targets(blend_targets); } - fn bind_graphics_descriptor_sets( + fn bind_graphics_descriptor_sets( &mut self, _layout: &n::PipelineLayout, _first_set: usize, - _sets: T, + _sets: I, + _offsets: J, ) where - T: IntoIterator, - T::Item: Borrow, + I: IntoIterator, + I::Item: Borrow, + J: IntoIterator, + J::Item: Borrow, { // TODO } @@ -857,14 +860,17 @@ impl command::RawCommandBuffer for RawCommandBuffer { } } - fn bind_compute_descriptor_sets( + fn bind_compute_descriptor_sets( &mut self, _layout: &n::PipelineLayout, _first_set: usize, - _sets: T, + _sets: I, + _offsets: J, ) where - T: IntoIterator, - T::Item: Borrow, + I: IntoIterator, + I::Item: Borrow, + J: IntoIterator, + J::Item: Borrow, { // TODO } diff --git a/src/backend/vulkan/src/command.rs b/src/backend/vulkan/src/command.rs index 4e0da80c671..b54af380e15 100644 --- a/src/backend/vulkan/src/command.rs +++ b/src/backend/vulkan/src/command.rs @@ -53,18 +53,21 @@ where } impl CommandBuffer { - fn bind_descriptor_sets( + fn bind_descriptor_sets( &mut self, bind_point: vk::PipelineBindPoint, layout: &n::PipelineLayout, first_set: usize, - sets: T, + sets: I, + offsets: J, ) where - T: IntoIterator, - T::Item: Borrow, + I: IntoIterator, + I::Item: Borrow, + J: IntoIterator, + J::Item: Borrow, { - let sets: SmallVec<[vk::DescriptorSet; 16]> = sets.into_iter().map(|set| set.borrow().raw).collect(); - let dynamic_offsets = &[]; // TODO + let sets: SmallVec<[_; 16]> = sets.into_iter().map(|set| set.borrow().raw).collect(); + let dynamic_offsets: SmallVec<[_; 16]> = offsets.into_iter().map(|offset| *offset.borrow()).collect(); unsafe { self.device.0.cmd_bind_descriptor_sets( @@ -73,7 +76,7 @@ impl CommandBuffer { layout.raw, first_set as u32, &sets, - dynamic_offsets, + &dynamic_offsets, ); } } @@ -605,20 +608,24 @@ impl com::RawCommandBuffer for CommandBuffer { } } - fn bind_graphics_descriptor_sets( + fn bind_graphics_descriptor_sets( &mut self, layout: &n::PipelineLayout, first_set: usize, - sets: T, + sets: I, + offsets: J, ) where - T: IntoIterator, - T::Item: Borrow, + I: IntoIterator, + I::Item: Borrow, + J: IntoIterator, + J::Item: Borrow, { self.bind_descriptor_sets( vk::PipelineBindPoint::Graphics, layout, first_set, sets, + offsets, ); } @@ -632,20 +639,24 @@ impl com::RawCommandBuffer for CommandBuffer { } } - fn bind_compute_descriptor_sets( + fn bind_compute_descriptor_sets( &mut self, layout: &n::PipelineLayout, first_set: usize, - sets: T, + sets: I, + offsets: J, ) where - T: IntoIterator, - T::Item: Borrow, + I: IntoIterator, + I::Item: Borrow, + J: IntoIterator, + J::Item: Borrow, { self.bind_descriptor_sets( vk::PipelineBindPoint::Compute, layout, first_set, sets, + offsets, ); } diff --git a/src/hal/src/command/compute.rs b/src/hal/src/command/compute.rs index 9fccf2105a5..6a47b6f5723 100644 --- a/src/hal/src/command/compute.rs +++ b/src/hal/src/command/compute.rs @@ -4,9 +4,8 @@ use std::borrow::Borrow; use {Backend, WorkGroupCount}; use buffer::Offset; -use command::raw::DescriptorSetOffset; use queue::capability::{Compute, Supports}; -use super::{CommandBuffer, RawCommandBuffer, Shot, Level}; +use super::{CommandBuffer, DescriptorSetOffset, RawCommandBuffer, Shot, Level}; impl<'a, B: Backend, C: Supports, S: Shot, L: Level> CommandBuffer<'a, B, C, S, L> { /// Identical to the `RawCommandBuffer` method of the same name. diff --git a/src/hal/src/command/graphics.rs b/src/hal/src/command/graphics.rs index 1cf41174216..10b0679426d 100644 --- a/src/hal/src/command/graphics.rs +++ b/src/hal/src/command/graphics.rs @@ -5,14 +5,13 @@ use std::ops::Range; use Backend; use {image, pso}; use buffer::IndexBufferView; -use command::raw::DescriptorSetOffset; use query::{Query, QueryControl, QueryId}; use queue::capability::{Graphics, GraphicsOrCompute, Supports}; use super::{ CommandBuffer, RawCommandBuffer, RenderPassInlineEncoder, RenderPassSecondaryEncoder, Shot, Level, Primary, - ClearColorRaw, ClearDepthStencilRaw, ClearValueRaw, + ClearColorRaw, ClearDepthStencilRaw, ClearValueRaw, DescriptorSetOffset, }; diff --git a/src/hal/src/command/render_pass.rs b/src/hal/src/command/render_pass.rs index 06dbca7af6c..ef1ab451ed9 100644 --- a/src/hal/src/command/render_pass.rs +++ b/src/hal/src/command/render_pass.rs @@ -4,11 +4,10 @@ use std::marker::PhantomData; use {buffer, pso}; use {Backend, DrawCount, IndexCount, InstanceCount, VertexCount, VertexOffset}; -use command::raw::DescriptorSetOffset; use queue::{Supports, Graphics}; use super::{ AttachmentClear, ClearValue, ClearValueRaw, CommandBuffer, RawCommandBuffer, - Shot, Level, Primary, Secondary, Submittable, Submit + Shot, Level, Primary, Secondary, Submittable, Submit, DescriptorSetOffset, }; /// Specifies how commands for the following renderpasses will be recorded.