Struct screen_13::driver::Instance

source ·
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

source

pub fn create<'a>( debug: bool, required_extensions: impl Iterator<Item = &'a CStr> ) -> Result<Self, DriverError>

Creates a new Vulkan instance.

source

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.

source

pub fn entry(this: &Self) -> &Entry

Returns the ash entrypoint for Vulkan functions.

source

pub fn is_debug(this: &Self) -> bool

Returns true if this instance was created with debug layers enabled.

source

pub fn physical_devices(this: &Self) -> Result<Vec<PhysicalDevice>, DriverError>

Returns the available physical devices of this instance.

Methods from Deref<Target = Instance>§

source

pub fn handle(&self) -> Instance

source

pub fn fp_v1_3(&self) -> &InstanceFnV1_3

source

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()

source

pub unsafe fn get_physical_device_tool_properties( &self, physical_device: PhysicalDevice, out: &mut [PhysicalDeviceToolProperties] ) -> Result<(), Result>

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceToolProperties.html

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.

source

pub fn fp_v1_2(&self) -> &InstanceFnV1_2

source

pub fn fp_v1_1(&self) -> &InstanceFnV1_1

source

pub unsafe fn enumerate_physical_device_groups_len( &self ) -> Result<usize, Result>

Retrieve the number of elements to pass to enumerate_physical_device_groups()

source

pub unsafe fn enumerate_physical_device_groups( &self, out: &mut [PhysicalDeviceGroupProperties] ) -> Result<(), Result>

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEnumeratePhysicalDeviceGroups.html

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.

source

pub unsafe fn get_physical_device_features2( &self, physical_device: PhysicalDevice, features: &mut PhysicalDeviceFeatures2 )

source

pub unsafe fn get_physical_device_properties2( &self, physical_device: PhysicalDevice, prop: &mut PhysicalDeviceProperties2 )

source

pub unsafe fn get_physical_device_format_properties2( &self, physical_device: PhysicalDevice, format: Format, out: &mut FormatProperties2 )

source

pub unsafe fn get_physical_device_image_format_properties2( &self, physical_device: PhysicalDevice, format_info: &PhysicalDeviceImageFormatInfo2, image_format_prop: &mut ImageFormatProperties2 ) -> Result<(), Result>

source

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()

source

pub unsafe fn get_physical_device_queue_family_properties2( &self, physical_device: PhysicalDevice, out: &mut [QueueFamilyProperties2] )

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html

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.

source

pub unsafe fn get_physical_device_memory_properties2( &self, physical_device: PhysicalDevice, out: &mut PhysicalDeviceMemoryProperties2 )

source

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()

source

pub unsafe fn get_physical_device_sparse_image_format_properties2( &self, physical_device: PhysicalDevice, format_info: &PhysicalDeviceSparseImageFormatInfo2, out: &mut [SparseImageFormatProperties2] )

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html

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.

source

pub unsafe fn get_physical_device_external_buffer_properties( &self, physical_device: PhysicalDevice, external_buffer_info: &PhysicalDeviceExternalBufferInfo, out: &mut ExternalBufferProperties )

source

pub unsafe fn get_physical_device_external_fence_properties( &self, physical_device: PhysicalDevice, external_fence_info: &PhysicalDeviceExternalFenceInfo, out: &mut ExternalFenceProperties )

source

pub unsafe fn get_physical_device_external_semaphore_properties( &self, physical_device: PhysicalDevice, external_semaphore_info: &PhysicalDeviceExternalSemaphoreInfo, out: &mut ExternalSemaphoreProperties )

source

pub fn fp_v1_0(&self) -> &InstanceFnV1_0

source

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.

source

pub unsafe fn get_device_proc_addr( &self, device: Device, p_name: *const i8 ) -> Option<unsafe extern "system" fn()>

source

pub unsafe fn destroy_instance( &self, allocation_callbacks: Option<&AllocationCallbacks> )

source

pub unsafe fn get_physical_device_format_properties( &self, physical_device: PhysicalDevice, format: Format ) -> FormatProperties

source

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>

source

pub unsafe fn get_physical_device_memory_properties( &self, physical_device: PhysicalDevice ) -> PhysicalDeviceMemoryProperties

source

pub unsafe fn get_physical_device_properties( &self, physical_device: PhysicalDevice ) -> PhysicalDeviceProperties

source

pub unsafe fn get_physical_device_queue_family_properties( &self, physical_device: PhysicalDevice ) -> Vec<QueueFamilyProperties>

source

pub unsafe fn get_physical_device_features( &self, physical_device: PhysicalDevice ) -> PhysicalDeviceFeatures

source

pub unsafe fn enumerate_physical_devices( &self ) -> Result<Vec<PhysicalDevice>, Result>

source

pub unsafe fn enumerate_device_extension_properties( &self, device: PhysicalDevice ) -> Result<Vec<ExtensionProperties>, Result>

source

pub unsafe fn enumerate_device_layer_properties( &self, device: PhysicalDevice ) -> Result<Vec<LayerProperties>, Result>

source

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§

source§

impl Debug for Instance

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Deref for Instance

§

type Target = Instance

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Drop for Instance

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more