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.