pub struct Instance { /* private fields */ }Expand description
There is no global state in Vulkan and all per-application state is stored in a VkInstance object.
Creating an Instance initializes the Vulkan library and allows the application to pass information about itself to the implementation.
Implementations§
source§impl Instance
impl Instance
sourcepub fn create<'a>(
debug: bool,
required_extensions: impl Iterator<Item = &'a CStr>
) -> Result<Self, DriverError>
pub fn create<'a>( debug: bool, required_extensions: impl Iterator<Item = &'a CStr> ) -> Result<Self, DriverError>
Creates a new Vulkan instance.
sourcepub fn load(entry: Entry, instance: Instance) -> Result<Self, DriverError>
pub fn load(entry: Entry, instance: Instance) -> Result<Self, DriverError>
Loads an existing Vulkan instance that may have been created by other means.
This is useful when you want to use a Vulkan instance created by some other library, such as OpenXR.
sourcepub fn is_debug(this: &Self) -> bool
pub fn is_debug(this: &Self) -> bool
Returns true if this instance was created with debug layers enabled.
sourcepub fn physical_devices(this: &Self) -> Result<Vec<PhysicalDevice>, DriverError>
pub fn physical_devices(this: &Self) -> Result<Vec<PhysicalDevice>, DriverError>
Returns the available physical devices of this instance.
Methods from Deref<Target = Instance>§
pub fn handle(&self) -> Instance
pub fn fp_v1_3(&self) -> &InstanceFnV1_3
sourcepub unsafe fn get_physical_device_tool_properties_len(
&self,
physical_device: PhysicalDevice
) -> Result<usize, Result>
pub unsafe fn get_physical_device_tool_properties_len( &self, physical_device: PhysicalDevice ) -> Result<usize, Result>
Retrieve the number of elements to pass to get_physical_device_tool_properties()
sourcepub unsafe fn get_physical_device_tool_properties(
&self,
physical_device: PhysicalDevice,
out: &mut [PhysicalDeviceToolProperties]
) -> Result<(), Result>
pub unsafe fn get_physical_device_tool_properties( &self, physical_device: PhysicalDevice, out: &mut [PhysicalDeviceToolProperties] ) -> Result<(), Result>
Call get_physical_device_tool_properties_len() to query the number of elements to pass to out.
Be sure to Default::default()-initialize these elements and optionally set their p_next pointer.
pub fn fp_v1_2(&self) -> &InstanceFnV1_2
pub fn fp_v1_1(&self) -> &InstanceFnV1_1
sourcepub unsafe fn enumerate_physical_device_groups_len(
&self
) -> Result<usize, Result>
pub unsafe fn enumerate_physical_device_groups_len( &self ) -> Result<usize, Result>
Retrieve the number of elements to pass to enumerate_physical_device_groups()
sourcepub unsafe fn enumerate_physical_device_groups(
&self,
out: &mut [PhysicalDeviceGroupProperties]
) -> Result<(), Result>
pub unsafe fn enumerate_physical_device_groups( &self, out: &mut [PhysicalDeviceGroupProperties] ) -> Result<(), Result>
Call enumerate_physical_device_groups_len() to query the number of elements to pass to out.
Be sure to Default::default()-initialize these elements and optionally set their p_next pointer.
sourcepub unsafe fn get_physical_device_features2(
&self,
physical_device: PhysicalDevice,
features: &mut PhysicalDeviceFeatures2
)
pub unsafe fn get_physical_device_features2( &self, physical_device: PhysicalDevice, features: &mut PhysicalDeviceFeatures2 )
sourcepub unsafe fn get_physical_device_properties2(
&self,
physical_device: PhysicalDevice,
prop: &mut PhysicalDeviceProperties2
)
pub unsafe fn get_physical_device_properties2( &self, physical_device: PhysicalDevice, prop: &mut PhysicalDeviceProperties2 )
sourcepub unsafe fn get_physical_device_format_properties2(
&self,
physical_device: PhysicalDevice,
format: Format,
out: &mut FormatProperties2
)
pub unsafe fn get_physical_device_format_properties2( &self, physical_device: PhysicalDevice, format: Format, out: &mut FormatProperties2 )
sourcepub unsafe fn get_physical_device_image_format_properties2(
&self,
physical_device: PhysicalDevice,
format_info: &PhysicalDeviceImageFormatInfo2,
image_format_prop: &mut ImageFormatProperties2
) -> Result<(), Result>
pub unsafe fn get_physical_device_image_format_properties2( &self, physical_device: PhysicalDevice, format_info: &PhysicalDeviceImageFormatInfo2, image_format_prop: &mut ImageFormatProperties2 ) -> Result<(), Result>
sourcepub unsafe fn get_physical_device_queue_family_properties2_len(
&self,
physical_device: PhysicalDevice
) -> usize
pub unsafe fn get_physical_device_queue_family_properties2_len( &self, physical_device: PhysicalDevice ) -> usize
Retrieve the number of elements to pass to get_physical_device_queue_family_properties2()
sourcepub unsafe fn get_physical_device_queue_family_properties2(
&self,
physical_device: PhysicalDevice,
out: &mut [QueueFamilyProperties2]
)
pub unsafe fn get_physical_device_queue_family_properties2( &self, physical_device: PhysicalDevice, out: &mut [QueueFamilyProperties2] )
Call get_physical_device_queue_family_properties2_len() to query the number of elements to pass to out.
Be sure to Default::default()-initialize these elements and optionally set their p_next pointer.
sourcepub unsafe fn get_physical_device_memory_properties2(
&self,
physical_device: PhysicalDevice,
out: &mut PhysicalDeviceMemoryProperties2
)
pub unsafe fn get_physical_device_memory_properties2( &self, physical_device: PhysicalDevice, out: &mut PhysicalDeviceMemoryProperties2 )
sourcepub unsafe fn get_physical_device_sparse_image_format_properties2_len(
&self,
physical_device: PhysicalDevice,
format_info: &PhysicalDeviceSparseImageFormatInfo2
) -> usize
pub unsafe fn get_physical_device_sparse_image_format_properties2_len( &self, physical_device: PhysicalDevice, format_info: &PhysicalDeviceSparseImageFormatInfo2 ) -> usize
Retrieve the number of elements to pass to get_physical_device_sparse_image_format_properties2()
sourcepub unsafe fn get_physical_device_sparse_image_format_properties2(
&self,
physical_device: PhysicalDevice,
format_info: &PhysicalDeviceSparseImageFormatInfo2,
out: &mut [SparseImageFormatProperties2]
)
pub unsafe fn get_physical_device_sparse_image_format_properties2( &self, physical_device: PhysicalDevice, format_info: &PhysicalDeviceSparseImageFormatInfo2, out: &mut [SparseImageFormatProperties2] )
Call get_physical_device_sparse_image_format_properties2_len() to query the number of elements to pass to out.
Be sure to Default::default()-initialize these elements and optionally set their p_next pointer.
sourcepub unsafe fn get_physical_device_external_buffer_properties(
&self,
physical_device: PhysicalDevice,
external_buffer_info: &PhysicalDeviceExternalBufferInfo,
out: &mut ExternalBufferProperties
)
pub unsafe fn get_physical_device_external_buffer_properties( &self, physical_device: PhysicalDevice, external_buffer_info: &PhysicalDeviceExternalBufferInfo, out: &mut ExternalBufferProperties )
sourcepub unsafe fn get_physical_device_external_fence_properties(
&self,
physical_device: PhysicalDevice,
external_fence_info: &PhysicalDeviceExternalFenceInfo,
out: &mut ExternalFenceProperties
)
pub unsafe fn get_physical_device_external_fence_properties( &self, physical_device: PhysicalDevice, external_fence_info: &PhysicalDeviceExternalFenceInfo, out: &mut ExternalFenceProperties )
sourcepub unsafe fn get_physical_device_external_semaphore_properties(
&self,
physical_device: PhysicalDevice,
external_semaphore_info: &PhysicalDeviceExternalSemaphoreInfo,
out: &mut ExternalSemaphoreProperties
)
pub unsafe fn get_physical_device_external_semaphore_properties( &self, physical_device: PhysicalDevice, external_semaphore_info: &PhysicalDeviceExternalSemaphoreInfo, out: &mut ExternalSemaphoreProperties )
pub fn fp_v1_0(&self) -> &InstanceFnV1_0
sourcepub unsafe fn create_device(
&self,
physical_device: PhysicalDevice,
create_info: &DeviceCreateInfo,
allocation_callbacks: Option<&AllocationCallbacks>
) -> Result<Device, Result>
pub unsafe fn create_device( &self, physical_device: PhysicalDevice, create_info: &DeviceCreateInfo, allocation_callbacks: Option<&AllocationCallbacks> ) -> Result<Device, Result>
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDevice.html
§Safety
There is a parent/child relation between Instance and the resulting Device. The
application must not destroy the parent Instance object
before first destroying the returned Device child object.
Device does not implement drop semantics and can only be destroyed via
destroy_device().
See the [Entry::create_instance()] documentation for more destruction ordering rules on
Instance.
sourcepub unsafe fn get_device_proc_addr(
&self,
device: Device,
p_name: *const i8
) -> Option<unsafe extern "system" fn()>
pub unsafe fn get_device_proc_addr( &self, device: Device, p_name: *const i8 ) -> Option<unsafe extern "system" fn()>
sourcepub unsafe fn destroy_instance(
&self,
allocation_callbacks: Option<&AllocationCallbacks>
)
pub unsafe fn destroy_instance( &self, allocation_callbacks: Option<&AllocationCallbacks> )
sourcepub unsafe fn get_physical_device_format_properties(
&self,
physical_device: PhysicalDevice,
format: Format
) -> FormatProperties
pub unsafe fn get_physical_device_format_properties( &self, physical_device: PhysicalDevice, format: Format ) -> FormatProperties
sourcepub unsafe fn get_physical_device_image_format_properties(
&self,
physical_device: PhysicalDevice,
format: Format,
typ: ImageType,
tiling: ImageTiling,
usage: ImageUsageFlags,
flags: ImageCreateFlags
) -> Result<ImageFormatProperties, Result>
pub unsafe fn get_physical_device_image_format_properties( &self, physical_device: PhysicalDevice, format: Format, typ: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags ) -> Result<ImageFormatProperties, Result>
sourcepub unsafe fn get_physical_device_memory_properties(
&self,
physical_device: PhysicalDevice
) -> PhysicalDeviceMemoryProperties
pub unsafe fn get_physical_device_memory_properties( &self, physical_device: PhysicalDevice ) -> PhysicalDeviceMemoryProperties
sourcepub unsafe fn get_physical_device_properties(
&self,
physical_device: PhysicalDevice
) -> PhysicalDeviceProperties
pub unsafe fn get_physical_device_properties( &self, physical_device: PhysicalDevice ) -> PhysicalDeviceProperties
sourcepub unsafe fn get_physical_device_queue_family_properties(
&self,
physical_device: PhysicalDevice
) -> Vec<QueueFamilyProperties>
pub unsafe fn get_physical_device_queue_family_properties( &self, physical_device: PhysicalDevice ) -> Vec<QueueFamilyProperties>
sourcepub unsafe fn get_physical_device_features(
&self,
physical_device: PhysicalDevice
) -> PhysicalDeviceFeatures
pub unsafe fn get_physical_device_features( &self, physical_device: PhysicalDevice ) -> PhysicalDeviceFeatures
sourcepub unsafe fn enumerate_physical_devices(
&self
) -> Result<Vec<PhysicalDevice>, Result>
pub unsafe fn enumerate_physical_devices( &self ) -> Result<Vec<PhysicalDevice>, Result>
sourcepub unsafe fn enumerate_device_extension_properties(
&self,
device: PhysicalDevice
) -> Result<Vec<ExtensionProperties>, Result>
pub unsafe fn enumerate_device_extension_properties( &self, device: PhysicalDevice ) -> Result<Vec<ExtensionProperties>, Result>
sourcepub unsafe fn enumerate_device_layer_properties(
&self,
device: PhysicalDevice
) -> Result<Vec<LayerProperties>, Result>
pub unsafe fn enumerate_device_layer_properties( &self, device: PhysicalDevice ) -> Result<Vec<LayerProperties>, Result>
sourcepub unsafe fn get_physical_device_sparse_image_format_properties(
&self,
physical_device: PhysicalDevice,
format: Format,
typ: ImageType,
samples: SampleCountFlags,
usage: ImageUsageFlags,
tiling: ImageTiling
) -> Vec<SparseImageFormatProperties>
pub unsafe fn get_physical_device_sparse_image_format_properties( &self, physical_device: PhysicalDevice, format: Format, typ: ImageType, samples: SampleCountFlags, usage: ImageUsageFlags, tiling: ImageTiling ) -> Vec<SparseImageFormatProperties>
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for Instance
impl Send for Instance
impl Sync for Instance
impl Unpin for Instance
impl UnwindSafe for Instance
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.