erupt-bootstrap 0.2.1

vk-bootstrap for Rust
Documentation

erupt-bootstrap

docs.rs crates.io

Vulkan Bootstrapping library for Rust, inspired by vk-bootstrap.

  • ✅ Instance creation
  • ✅ Physical Device selection
  • ✅ Device creation
  • ✅ Getting queues
  • ✅ Swapchain handling (courtesy of Ralith - thanks!)

Cargo Features

Example

let entry = EntryLoader::new().unwrap();
let instance_builder = InstanceBuilder::new()
    .validation_layers(ValidationLayers::Request)
    .request_debug_messenger(DebugMessenger::Default)
    .require_surface_extensions(&window)
    .unwrap();
let (instance, debug_messenger, instance_metadata) =
    unsafe { instance_builder.build(&entry) }.unwrap();

let surface =
    unsafe { erupt::utils::surface::create_surface(&instance, &window, None) }.unwrap();

let graphics_present = QueueFamilyCriteria::graphics_present();
let transfer = QueueFamilyCriteria::preferably_separate_transfer();

let device_features = vk::PhysicalDeviceFeatures2Builder::new()
    .features(vk::PhysicalDeviceFeaturesBuilder::new().build());

let device_builder = DeviceBuilder::new()
    .queue_family(graphics_present)
    .queue_family(transfer)
    .require_features(&device_features)
    .for_surface(surface);
let (device, device_metadata) =
    unsafe { device_builder.build(&instance, &instance_metadata) }.unwrap();
let graphics_present = device_metadata
    .device_queue(&instance, &device, graphics_present, 0)
    .unwrap()
    .unwrap();
let transfer = device_metadata
    .device_queue(&instance, &device, transfer, 0)
    .unwrap()
    .unwrap();

For more examples, visit the git repo.

Licensing

This project is licensed under the zlib License.

vk-bootstrap, the inspiration of this project, is licensed under the MIT license.