pub struct Entry { /* private fields */ }
Expand description
Holds the Vulkan functions independent of a particular instance
Implementations§
Source§impl Entry
impl Entry
Vulkan core 1.0
Sourcepub fn linked() -> Self
pub fn linked() -> Self
Load entry points from a Vulkan loader linked at compile time
Compared to load
, this is infallible, but requires that the build
environment have Vulkan development packages installed (e.g. the Vulkan SDK, or Ubuntu’s
libvulkan-dev
), and prevents the resulting binary from starting in environments that do not
support Vulkan.
Note that instance/device functions are still fetched via vkGetInstanceProcAddr
and
vkGetDeviceProcAddr
for maximum performance.
use ash::{vk, Entry};
let entry = Entry::linked();
let app_info = vk::ApplicationInfo {
api_version: vk::make_api_version(0, 1, 0, 0),
..Default::default()
};
let create_info = vk::InstanceCreateInfo {
p_application_info: &app_info,
..Default::default()
};
let instance = unsafe { entry.create_instance(&create_info, None)? };
Sourcepub unsafe fn from_static_fn(static_fn: StaticFn) -> Self
pub unsafe fn from_static_fn(static_fn: StaticFn) -> Self
Load entry points based on an already-loaded vk::StaticFn
§Safety
static_fn
must contain valid function pointers that comply with the semantics specified by
Vulkan 1.0, which must remain valid for at least the lifetime of the returned Entry
.
pub fn fp_v1_0(&self) -> &EntryFnV1_0
pub fn static_fn(&self) -> &StaticFn
Sourcepub fn try_enumerate_instance_version(&self) -> VkResult<Option<u32>>
pub fn try_enumerate_instance_version(&self) -> VkResult<Option<u32>>
let entry = Entry::linked();
match entry.try_enumerate_instance_version()? {
// Vulkan 1.1+
Some(version) => {
let major = vk::version_major(version);
let minor = vk::version_minor(version);
let patch = vk::version_patch(version);
},
// Vulkan 1.0
None => {},
}
Sourcepub unsafe fn create_instance(
&self,
create_info: &InstanceCreateInfo,
allocation_callbacks: Option<&AllocationCallbacks>,
) -> VkResult<Instance>
pub unsafe fn create_instance( &self, create_info: &InstanceCreateInfo, allocation_callbacks: Option<&AllocationCallbacks>, ) -> VkResult<Instance>
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateInstance.html
§Safety
In order for the created Instance
to be valid for the duration of its
usage, the Entry
this was called on must be dropped later than the
resulting Instance
.
Sourcepub fn enumerate_instance_layer_properties(
&self,
) -> VkResult<Vec<LayerProperties>>
pub fn enumerate_instance_layer_properties( &self, ) -> VkResult<Vec<LayerProperties>>
Sourcepub fn enumerate_instance_extension_properties(
&self,
layer_name: Option<&CStr>,
) -> VkResult<Vec<ExtensionProperties>>
pub fn enumerate_instance_extension_properties( &self, layer_name: Option<&CStr>, ) -> VkResult<Vec<ExtensionProperties>>
Sourcepub unsafe fn get_instance_proc_addr(
&self,
instance: Instance,
p_name: *const c_char,
) -> PFN_vkVoidFunction
pub unsafe fn get_instance_proc_addr( &self, instance: Instance, p_name: *const c_char, ) -> PFN_vkVoidFunction
Source§impl Entry
impl Entry
Vulkan core 1.1
pub fn fp_v1_1(&self) -> &EntryFnV1_1
Sourcepub fn enumerate_instance_version(&self) -> VkResult<u32>
👎Deprecated: This function is unavailable and therefore panics on Vulkan 1.0, please use try_enumerate_instance_version()
instead
pub fn enumerate_instance_version(&self) -> VkResult<u32>
try_enumerate_instance_version()
insteadTrait Implementations§
Auto Trait Implementations§
impl Freeze for Entry
impl RefUnwindSafe for Entry
impl Send for Entry
impl Sync for Entry
impl Unpin for Entry
impl UnwindSafe for Entry
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)