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
.