mira

Crates.iomira
lib.rsmira
version0.1.26
sourcesrc
created_at2021-10-04 17:42:34.415758
updated_at2024-11-25 15:27:55.209438
descriptionPure and simple Vulkan bindings generated from Vulkan-Headers!
homepage
repositoryhttps://github.com/onlymaresia/mira
max_upload_size
id460224
size1,500,465
maresia (onlymaresia)

documentation

https://docs.rs/mira

README

mira

crates.io docs.rs license

Pure and simple Vulkan bindings generated from Vulkan-Headers!

Mira provides a simple and straightforward way to interact with Vulkan. Everything was generated by bindgen and uses the original API names.

This crate provides:

  • 👀 Raw function pointers!
  • 💯 Dynamic loader of instance and device commands!
  • ✍️ Original names of commands, structures and macros!

Code

Enumerate all instance extensions (rust 2021 edition).

use mira::error::MiraError;
use mira::loader;
use mira::mem::{from_cstring, zeroed_vec};
use mira::vulkan::*;

fn main() -> Result<(), MiraError> {
    let enumerate_instance_extensions: PFN_vkEnumerateInstanceExtensionProperties;
    enumerate_instance_extensions = unsafe {
        loader::instance(
            std::ptr::null_mut(),
            c"vkEnumerateInstanceExtensionProperties",
        )?
    };

    let mut count: u32 = 0;
    unsafe {
        enumerate_instance_extensions(std::ptr::null_mut(), &mut count, std::ptr::null_mut())
    };
    let mut extensions = unsafe { zeroed_vec::<VkExtensionProperties>(count as usize) };

    unsafe {
        enumerate_instance_extensions(std::ptr::null_mut(), &mut count, extensions.as_mut_ptr())
    };

    println!("Instance extensions");
    for extension in extensions.iter().enumerate() {
        let str = match unsafe { from_cstring(extension.1.extensionName.as_ptr()) } {
            Ok(str) => str,
            Err(_) => continue,
        };

        println!("extension #{} - {}", extension.0, str);
    }

    Ok(())
}

Examples

Successfully tested on Linux(Lubuntu 20.04) with Intel(R) HD Graphics 620 (KBL GT2).

Color

Displays a window with a purple background.

cargo run --example color

screenshot

Vulkan version

1.3.302 (with av1, h264 and h265 video extensions)

For a version in sync with the official vulkan headers repository clone this project from github and run the generator.

Vulkan Changelog

License

Apache 2.0

Commit count: 39

cargo fmt