Crate erupt_bootstrap
source · [−]Expand description
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
surface(enabled by default): Enables the use ofraw-window-handle.
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.