MCPcopy Create free account
hub / github.com/Rust-GPU/rust-gpu / new

Method new

examples/runners/ash/src/main.rs:274–464  ·  view source on GitHub ↗
(window: winit::window::Window, options: &Options)

Source from the content-addressed store, hash-verified

272
273impl RenderBase {
274 pub fn new(window: winit::window::Window, options: &Options) -> Self {
275 cfg_if::cfg_if! {
276 if #[cfg(target_os = "macos")] {
277 let entry = ash_molten::load();
278 } else {
279 let entry = unsafe{ash::Entry::load()}.unwrap();
280 }
281 }
282
283 let instance: ash::Instance = {
284 let app_name = CString::new("VulkanTriangle").unwrap();
285
286 let layer_names = if options.debug_layer {
287 vec![CString::new("VK_LAYER_KHRONOS_validation").unwrap()]
288 } else {
289 vec![]
290 };
291 let layers_names_raw: Vec<*const i8> = layer_names
292 .iter()
293 .map(|raw_name| raw_name.as_ptr())
294 .collect();
295
296 let mut extension_names_raw =
297 ash_window::enumerate_required_extensions(window.raw_display_handle())
298 .unwrap()
299 .to_vec();
300 if options.debug_layer {
301 extension_names_raw.push(ext::DebugUtils::name().as_ptr());
302 }
303
304 let appinfo = vk::ApplicationInfo::builder()
305 .application_name(&app_name)
306 .application_version(0)
307 .engine_name(&app_name)
308 .engine_version(0)
309 .api_version(vk::make_api_version(0, 1, 2, 0));
310
311 let instance_create_info = vk::InstanceCreateInfo::builder()
312 .application_info(&appinfo)
313 .enabled_layer_names(&layers_names_raw)
314 .enabled_extension_names(&extension_names_raw);
315
316 unsafe {
317 entry
318 .create_instance(&instance_create_info, None)
319 .expect("Instance creation error")
320 }
321 };
322
323 let surface = unsafe {
324 ash_window::create_surface(
325 &entry,
326 &instance,
327 window.raw_display_handle(),
328 window.raw_window_handle(),
329 None,
330 )
331 .unwrap()

Callers

nothing calls this directly

Calls 5

iterMethod · 0.80
expectMethod · 0.80
collectMethod · 0.45
buildMethod · 0.45
as_refMethod · 0.45

Tested by

no test coverage detected