pub struct Device { /* private fields */ }
Expand description
Represents a Vulkan context.
Implementations
sourceimpl Device
impl Device
sourcepub fn new(
physical_device: Arc<PhysicalDevice>,
create_info: DeviceCreateInfo
) -> Result<(Arc<Device>, impl ExactSizeIterator<Item = Arc<Queue>>), DeviceCreationError>
pub fn new(
physical_device: Arc<PhysicalDevice>,
create_info: DeviceCreateInfo
) -> Result<(Arc<Device>, impl ExactSizeIterator<Item = Arc<Queue>>), DeviceCreationError>
Creates a new Device
.
Panics
- Panics if
create_info.queues
is empty. - Panics if one of the queue families in
create_info.queues
doesn’t belong to the given physical device. - Panics if
create_info.queues
contains multiple elements for the same queue family. - Panics if
create_info.queues
contains an element wherequeues
is empty. - Panics if
create_info.queues
contains an element wherequeues
contains a value that is not between 0.0 and 1.0 inclusive.
sourcepub fn api_version(&self) -> Version
pub fn api_version(&self) -> Version
Returns the Vulkan version supported by the device.
This is the lower of the
physical device’s supported version
and the instance’s max_api_version
.
sourcepub fn fns(&self) -> &DeviceFunctions
pub fn fns(&self) -> &DeviceFunctions
Returns pointers to the raw Vulkan functions of the device.
sourcepub fn physical_device(&self) -> &Arc<PhysicalDevice>
pub fn physical_device(&self) -> &Arc<PhysicalDevice>
Returns the physical device that was used to create this device.
sourcepub fn active_queue_family_indices(&self) -> &[u32]
pub fn active_queue_family_indices(&self) -> &[u32]
Returns the queue family indices that this device uses.
sourcepub fn enabled_extensions(&self) -> &DeviceExtensions
pub fn enabled_extensions(&self) -> &DeviceExtensions
Returns the extensions that have been enabled on the device.
sourcepub fn enabled_features(&self) -> &Features
pub fn enabled_features(&self) -> &Features
Returns the features that have been enabled on the device.
sourcepub fn standard_memory_pool(self: &Arc<Self>) -> Arc<StandardMemoryPool>
pub fn standard_memory_pool(self: &Arc<Self>) -> Arc<StandardMemoryPool>
Returns the standard memory pool used by default if you don’t provide any other pool.
sourcepub fn with_standard_descriptor_pool<T>(
self: &Arc<Self>,
f: impl FnOnce(&mut StandardDescriptorPool) -> T
) -> T
pub fn with_standard_descriptor_pool<T>(
self: &Arc<Self>,
f: impl FnOnce(&mut StandardDescriptorPool) -> T
) -> T
Gives you access to the standard descriptor pool that is used by default if you don’t provide any other pool.
Pools are stored in thread-local storage to avoid locks, which means that a pool is only dropped once both the thread exits and all descriptor sets allocated from it are dropped. A pool is created lazily for each thread.
Panics
- Panics if called again from within the callback.
sourcepub fn with_standard_command_pool<T>(
self: &Arc<Self>,
queue_family_index: u32,
f: impl FnOnce(&Arc<StandardCommandPool>) -> T
) -> Result<T, OomError>
pub fn with_standard_command_pool<T>(
self: &Arc<Self>,
queue_family_index: u32,
f: impl FnOnce(&Arc<StandardCommandPool>) -> T
) -> Result<T, OomError>
Gives you access to the standard command buffer pool used by default if you don’t provide any other pool.
Pools are stored in thread-local storage to avoid locks, which means that a pool is only
dropped once both the thread exits and all command buffers allocated from it are dropped.
A pool is created lazily for each thread, device and queue family combination as needed,
which is why this function might return an OomError
.
Panics
- Panics if the device and the queue family don’t belong to the same physical device.
- Panics if called again from within the callback.
sourcepub unsafe fn memory_fd_properties(
&self,
handle_type: ExternalMemoryHandleType,
file: File
) -> Result<MemoryFdProperties, MemoryFdPropertiesError>
pub unsafe fn memory_fd_properties(
&self,
handle_type: ExternalMemoryHandleType,
file: File
) -> Result<MemoryFdProperties, MemoryFdPropertiesError>
Retrieves the properties of an external file descriptor when imported as a given external handle type.
An error will be returned if the
khr_external_memory_fd
extension was not
enabled on the device, or if handle_type
is ExternalMemoryHandleType::OpaqueFd
.
Safety
file
must be a handle to external memory that was created outside the Vulkan API.
sourcepub fn set_debug_utils_object_name<T: VulkanObject + DeviceOwned>(
&self,
object: &T,
object_name: Option<&str>
) -> Result<(), OomError>
pub fn set_debug_utils_object_name<T: VulkanObject + DeviceOwned>(
&self,
object: &T,
object_name: Option<&str>
) -> Result<(), OomError>
Assigns a human-readable name to object
for debugging purposes.
If object_name
is None
, a previously set object name is removed.
Panics
- If
object
is not owned by this device.
sourcepub unsafe fn wait(&self) -> Result<(), OomError>
pub unsafe fn wait(&self) -> Result<(), OomError>
Waits until all work on this device has finished. You should never need to call this function, but it can be useful for debugging or benchmarking purposes.
Note: This is the Vulkan equivalent of OpenGL’s
glFinish
.
Safety
This function is not thread-safe. You must not submit anything to any of the queue of the device (either explicitly or implicitly, for example with a future’s destructor) while this function is waiting.