pub struct Entry { /* private fields */ }Expand description
Holds the Vulkan functions independent of a particular instance
Implementations
Vulkan core 1.0
This is supported on crate feature loaded only.
loaded only.Load default Vulkan library for the current platform
Prefer this over linked when your application can gracefully handle
environments that lack Vulkan support, and when the build environment might not have Vulkan
development packages installed (e.g. the Vulkan SDK, or Ubuntu’s libvulkan-dev).
Safety
dlopening native libraries is inherently unsafe. The safety guidelines
for Library::new() and Library::get() apply here.
use ash::{vk, Entry};
let entry = unsafe { Entry::load()? };
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)? };This is supported on crate feature linked only.
linked only.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)? };This is supported on crate feature loaded only.
loaded only.Load Vulkan library at path
Safety
dlopening native libraries is inherently unsafe. The safety guidelines
for Library::new() and Library::get() apply here.
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.
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 => {},
}pub 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.2-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.
pub 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
Vulkan core 1.1
👎 Deprecated: This function is unavailable and therefore panics on Vulkan 1.0, please use try_enumerate_instance_version instead
This function is unavailable and therefore panics on Vulkan 1.0, please use try_enumerate_instance_version instead
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Entry
impl UnwindSafe for Entry
Blanket Implementations
Mutably borrows from an owned value. Read more