Trait gfx_hal::queue::RawCommandQueue
source · pub trait RawCommandQueue<B: Backend>: Any + Send + Sync {
unsafe fn submit<'a, T, Ic, S, Iw, Is>(
&mut self,
submission: Submission<Ic, Iw, Is>,
fence: Option<&B::Fence>
)
where
T: 'a + Borrow<B::CommandBuffer>,
Ic: IntoIterator<Item = &'a T>,
S: 'a + Borrow<B::Semaphore>,
Iw: IntoIterator<Item = (&'a S, PipelineStage)>,
Is: IntoIterator<Item = &'a S>;
unsafe fn present<'a, W, Is, S, Iw>(
&mut self,
swapchains: Is,
wait_semaphores: Iw
) -> Result<(), ()>
where
Self: Sized,
W: 'a + Borrow<B::Swapchain>,
Is: IntoIterator<Item = (&'a W, SwapImageIndex)>,
S: 'a + Borrow<B::Semaphore>,
Iw: IntoIterator<Item = &'a S>;
fn wait_idle(&self) -> Result<(), HostExecutionError>;
}
Expand description
RawCommandQueue
are abstractions to the internal GPU execution engines.
Commands are executed on the the device by submitting command buffers to queues.
Required Methods
sourceunsafe fn submit<'a, T, Ic, S, Iw, Is>(
&mut self,
submission: Submission<Ic, Iw, Is>,
fence: Option<&B::Fence>
)where
T: 'a + Borrow<B::CommandBuffer>,
Ic: IntoIterator<Item = &'a T>,
S: 'a + Borrow<B::Semaphore>,
Iw: IntoIterator<Item = (&'a S, PipelineStage)>,
Is: IntoIterator<Item = &'a S>,
unsafe fn submit<'a, T, Ic, S, Iw, Is>(
&mut self,
submission: Submission<Ic, Iw, Is>,
fence: Option<&B::Fence>
)where
T: 'a + Borrow<B::CommandBuffer>,
Ic: IntoIterator<Item = &'a T>,
S: 'a + Borrow<B::Semaphore>,
Iw: IntoIterator<Item = (&'a S, PipelineStage)>,
Is: IntoIterator<Item = &'a S>,
Submit command buffers to queue for execution.
fence
will be signalled after submission and must be unsignalled.
Unsafe because it’s not checked that the queue can process the submitted command buffers. Trying to submit compute commands to a graphics queue will result in undefined behavior. Each queue implements safe wrappers according to their supported functionalities!
sourceunsafe fn present<'a, W, Is, S, Iw>(
&mut self,
swapchains: Is,
wait_semaphores: Iw
) -> Result<(), ()>where
Self: Sized,
W: 'a + Borrow<B::Swapchain>,
Is: IntoIterator<Item = (&'a W, SwapImageIndex)>,
S: 'a + Borrow<B::Semaphore>,
Iw: IntoIterator<Item = &'a S>,
unsafe fn present<'a, W, Is, S, Iw>(
&mut self,
swapchains: Is,
wait_semaphores: Iw
) -> Result<(), ()>where
Self: Sized,
W: 'a + Borrow<B::Swapchain>,
Is: IntoIterator<Item = (&'a W, SwapImageIndex)>,
S: 'a + Borrow<B::Semaphore>,
Iw: IntoIterator<Item = &'a S>,
Presents the result of the queue to the given swapchains, after waiting on all the
semaphores given in wait_semaphores
. A given swapchain must not appear in this
list more than once.
Unsafe for the same reasons as submit()
.
sourcefn wait_idle(&self) -> Result<(), HostExecutionError>
fn wait_idle(&self) -> Result<(), HostExecutionError>
Wait for the queue to idle.