pub struct Device { /* private fields */ }
Expand description
Represents a Vulkan context.
Implementations
sourceimpl Device
impl Device
sourcepub fn new<'a, I, Ext>(
phys: PhysicalDevice<'_>,
requested_features: &Features,
extensions: Ext,
queue_families: I
) -> Result<(Arc<Device>, QueuesIter), DeviceCreationError>where
I: IntoIterator<Item = (QueueFamily<'a>, f32)>,
Ext: Into<RawDeviceExtensions>,
pub fn new<'a, I, Ext>(
phys: PhysicalDevice<'_>,
requested_features: &Features,
extensions: Ext,
queue_families: I
) -> Result<(Arc<Device>, QueuesIter), DeviceCreationError>where
I: IntoIterator<Item = (QueueFamily<'a>, f32)>,
Ext: Into<RawDeviceExtensions>,
Builds a new Vulkan device for the given physical device.
You must pass two things when creating a logical device:
-
A list of optional Vulkan features that must be enabled on the device. Note that if a feature is not enabled at device creation, you can’t use it later even it it’s supported by the physical device.
-
An iterator to a list of queues to create. Each element of the iterator must indicate the family whose queue belongs to and a priority between 0.0 and 1.0 to assign to it. A queue with a higher value indicates that the commands will execute faster than on a queue with a lower value. Note however that no guarantee can be made on the way the priority value is handled by the implementation.
Panic
- Panics if one of the queue families doesn’t belong to the given 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.
sourcepub fn physical_device(&self) -> PhysicalDevice<'_>
pub fn physical_device(&self) -> PhysicalDevice<'_>
Returns the physical device that was used to create this device.
sourcepub fn active_queue_families<'a>(
&'a self
) -> Box<dyn ExactSizeIterator<Item = QueueFamily<'a>> + 'a>
pub fn active_queue_families<'a>(
&'a self
) -> Box<dyn ExactSizeIterator<Item = QueueFamily<'a>> + 'a>
Returns an iterator to the list of queues families that this device uses.
Note: Will return
-> impl ExactSizeIterator<Item = QueueFamily>
in the future.
sourcepub fn enabled_features(&self) -> &Features
pub fn enabled_features(&self) -> &Features
Returns the features that are enabled in the device.
sourcepub fn loaded_extensions(&self) -> &DeviceExtensions
pub fn loaded_extensions(&self) -> &DeviceExtensions
Returns the list of extensions that have been loaded.
sourcepub fn standard_pool(me: &Arc<Self>) -> Arc<StdMemoryPool>
pub fn standard_pool(me: &Arc<Self>) -> Arc<StdMemoryPool>
Returns the standard memory pool used by default if you don’t provide any other pool.
sourcepub fn standard_descriptor_pool(me: &Arc<Self>) -> Arc<StdDescriptorPool>
pub fn standard_descriptor_pool(me: &Arc<Self>) -> Arc<StdDescriptorPool>
Returns the standard descriptor pool used by default if you don’t provide any other pool.
sourcepub fn standard_command_pool(
me: &Arc<Self>,
queue: QueueFamily<'_>
) -> Arc<StandardCommandPool>
pub fn standard_command_pool(
me: &Arc<Self>,
queue: QueueFamily<'_>
) -> Arc<StandardCommandPool>
Returns the standard command buffer pool used by default if you don’t provide any other pool.
Panic
- Panics if the device and the queue family don’t belong to the same physical device.
sourcepub fn set_object_name<T: VulkanObject + DeviceOwned>(
&self,
object: &T,
name: &CStr
) -> Result<(), OomError>
pub fn set_object_name<T: VulkanObject + DeviceOwned>(
&self,
object: &T,
name: &CStr
) -> Result<(), OomError>
Assigns a human-readable name to object
for debugging purposes.
Panics
- If the
VK_EXT_debug_marker
device extension is not loaded. - If
object
is not owned by this device.
sourcepub unsafe fn set_object_name_raw(
&self,
ty: DebugReportObjectTypeEXT,
object: u64,
name: &CStr
) -> Result<(), OomError>
pub unsafe fn set_object_name_raw(
&self,
ty: DebugReportObjectTypeEXT,
object: u64,
name: &CStr
) -> Result<(), OomError>
Trait Implementations
sourceimpl VulkanObject for Device
impl VulkanObject for Device
sourceconst TYPE: DebugReportObjectTypeEXT = 3u32
const TYPE: DebugReportObjectTypeEXT = 3u32
DebugReportObjectTypeEXT
of the internal Vulkan handle.