diff options
Diffstat (limited to 'src/command_buffer/pool/mod.rs')
-rw-r--r-- | src/command_buffer/pool/mod.rs | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/src/command_buffer/pool/mod.rs b/src/command_buffer/pool/mod.rs deleted file mode 100644 index e7a6fb6..0000000 --- a/src/command_buffer/pool/mod.rs +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (c) 2016 The vulkano developers -// Licensed under the Apache License, Version 2.0 -// <LICENSE-APACHE or -// https://www.apache.org/licenses/LICENSE-2.0> or the MIT -// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, -// at your option. All files in the project carrying such -// notice may not be copied, modified, or distributed except -// according to those terms. - -//! In the Vulkan API, command buffers must be allocated from *command pools*. -//! -//! A command pool holds and manages the memory of one or more command buffers. If you destroy a -//! command pool, all of its command buffers are automatically destroyed. -//! -//! In vulkano, creating a command buffer requires passing an implementation of the `CommandPool` -//! trait. By default vulkano will use the `StandardCommandPool` struct, but you can implement -//! this trait yourself by wrapping around the `UnsafeCommandPool` type. - -use crate::device::physical::QueueFamily; - -use crate::device::DeviceOwned; -use crate::OomError; - -pub use self::standard::StandardCommandPool; -pub use self::sys::CommandPoolTrimError; -pub use self::sys::UnsafeCommandPool; -pub use self::sys::UnsafeCommandPoolAlloc; -pub use self::sys::UnsafeCommandPoolAllocIter; - -pub mod standard; -mod sys; - -/// Types that manage the memory of command buffers. -/// -/// # Safety -/// -/// A Vulkan command pool must be externally synchronized as if it owned the command buffers that -/// were allocated from it. This includes allocating from the pool, freeing from the pool, -/// resetting the pool or individual command buffers, and most importantly recording commands to -/// command buffers. -/// -/// The implementation of `CommandPool` is expected to manage this. For as long as a `Builder` -/// is alive, the trait implementation is expected to lock the pool that allocated the `Builder` -/// for the current thread. -/// -/// > **Note**: This may be modified in the future to allow different implementation strategies. -/// -/// The destructors of the `CommandPoolBuilderAlloc` and the `CommandPoolAlloc` are expected to -/// free the command buffer, reset the command buffer, or add it to a pool so that it gets reused. -/// If the implementation frees or resets the command buffer, it must not forget that this -/// operation must lock the pool. -/// -pub unsafe trait CommandPool: DeviceOwned { - /// See `alloc()`. - type Iter: Iterator<Item = Self::Builder>; - /// Represents a command buffer that has been allocated and that is currently being built. - type Builder: CommandPoolBuilderAlloc<Alloc = Self::Alloc>; - /// Represents a command buffer that has been allocated and that is pending execution or is - /// being executed. - type Alloc: CommandPoolAlloc; - - /// Allocates command buffers from this pool. - /// - /// Returns an iterator that contains an bunch of allocated command buffers. - fn alloc(&self, secondary: bool, count: u32) -> Result<Self::Iter, OomError>; - - /// Returns the queue family that this pool targets. - fn queue_family(&self) -> QueueFamily; -} - -/// A command buffer allocated from a pool and that can be recorded. -/// -/// # Safety -/// -/// See `CommandPool` for information about safety. -/// -pub unsafe trait CommandPoolBuilderAlloc: DeviceOwned { - /// Return type of `into_alloc`. - type Alloc: CommandPoolAlloc; - - /// Returns the internal object that contains the command buffer. - fn inner(&self) -> &UnsafeCommandPoolAlloc; - - /// Turns this builder into a command buffer that is pending execution. - fn into_alloc(self) -> Self::Alloc; - - /// Returns the queue family that the pool targets. - fn queue_family(&self) -> QueueFamily; -} - -/// A command buffer allocated from a pool that has finished being recorded. -/// -/// # Safety -/// -/// See `CommandPool` for information about safety. -/// -pub unsafe trait CommandPoolAlloc: DeviceOwned { - /// Returns the internal object that contains the command buffer. - fn inner(&self) -> &UnsafeCommandPoolAlloc; - - /// Returns the queue family that the pool targets. - fn queue_family(&self) -> QueueFamily; -} |