builds
Change-Id: Ifd61455343de2a7a7b5849b29b9bb46d825a35de
diff --git a/src/ui/examples/flatland-view-provider/src/vulkan.rs b/src/ui/examples/flatland-view-provider/src/vulkan.rs
index 00f1ea5..9f10498 100644
--- a/src/ui/examples/flatland-view-provider/src/vulkan.rs
+++ b/src/ui/examples/flatland-view-provider/src/vulkan.rs
@@ -7,7 +7,7 @@
// // khr::{Surface, Swapchain},
};
use ash::{self, vk};
-// use std::borrow::Cow;
+use std::borrow::Cow;
// use std::cell::RefCell;
// use std::default::Default;
use std::ffi::CStr;
@@ -230,6 +230,8 @@
}
}
+*/
+
unsafe extern "system" fn vulkan_debug_callback(
message_severity: vk::DebugUtilsMessageSeverityFlagsEXT,
message_type: vk::DebugUtilsMessageTypeFlagsEXT,
@@ -263,21 +265,21 @@
vk::FALSE
}
-pub fn find_memorytype_index(
- memory_req: &vk::MemoryRequirements,
- memory_prop: &vk::PhysicalDeviceMemoryProperties,
- flags: vk::MemoryPropertyFlags,
-) -> Option<u32> {
- memory_prop.memory_types[..memory_prop.memory_type_count as _]
- .iter()
- .enumerate()
- .find(|(index, memory_type)| {
- (1 << index) & memory_req.memory_type_bits != 0
- && memory_type.property_flags & flags == flags
- })
- .map(|(index, _memory_type)| index as _)
-}
-*/
+// pub fn find_memorytype_index(
+// memory_req: &vk::MemoryRequirements,
+// memory_prop: &vk::PhysicalDeviceMemoryProperties,
+// flags: vk::MemoryPropertyFlags,
+// ) -> Option<u32> {
+// memory_prop.memory_types[..memory_prop.memory_type_count as _]
+// .iter()
+// .enumerate()
+// .find(|(index, memory_type)| {
+// (1 << index) & memory_req.memory_type_bits != 0
+// && memory_type.property_flags & flags == flags
+// })
+// .map(|(index, _memory_type)| index as _)
+// }
+
pub struct VkRender {
pub entry: ash::Entry,
pub instance: ash::Instance,
@@ -380,77 +382,84 @@
.enabled_extension_names(&extension_names)
.build();
- let _instance: ash::Instance = entry
+ let instance: ash::Instance = entry
.create_instance(&create_info, None)
.expect("Instance creation error");
- // let debug_info = vk::DebugUtilsMessengerCreateInfoEXT::default()
- // .message_severity(
- // vk::DebugUtilsMessageSeverityFlagsEXT::ERROR
- // | vk::DebugUtilsMessageSeverityFlagsEXT::WARNING
- // | vk::DebugUtilsMessageSeverityFlagsEXT::INFO,
- // )
- // .message_type(
- // vk::DebugUtilsMessageTypeFlagsEXT::GENERAL
- // | vk::DebugUtilsMessageTypeFlagsEXT::VALIDATION
- // | vk::DebugUtilsMessageTypeFlagsEXT::PERFORMANCE,
- // )
- // .pfn_user_callback(Some(vulkan_debug_callback));
+ let debug_info = vk::DebugUtilsMessengerCreateInfoEXT::builder()
+ .message_severity(
+ vk::DebugUtilsMessageSeverityFlagsEXT::ERROR
+ | vk::DebugUtilsMessageSeverityFlagsEXT::WARNING
+ | vk::DebugUtilsMessageSeverityFlagsEXT::INFO,
+ )
+ .message_type(
+ vk::DebugUtilsMessageTypeFlagsEXT::GENERAL
+ | vk::DebugUtilsMessageTypeFlagsEXT::VALIDATION
+ | vk::DebugUtilsMessageTypeFlagsEXT::PERFORMANCE,
+ )
+ .pfn_user_callback(Some(vulkan_debug_callback));
- // let debug_utils_loader = DebugUtils::new(&entry, &instance);
- // let debug_call_back = debug_utils_loader
- // .create_debug_utils_messenger(&debug_info, None)
- // .unwrap();
- // let surface = ash_window::create_surface(&entry, &instance, &window, None).unwrap();
- // let pdevices = instance
- // .enumerate_physical_devices()
- // .expect("Physical device error");
- // let surface_loader = Surface::new(&entry, &instance);
- // let (pdevice, queue_family_index) = pdevices
- // .iter()
- // .find_map(|pdevice| {
- // instance
- // .get_physical_device_queue_family_properties(*pdevice)
- // .iter()
- // .enumerate()
- // .find_map(|(index, info)| {
- // let supports_graphic_and_surface =
- // info.queue_flags.contains(vk::QueueFlags::GRAPHICS)
- // && surface_loader
- // .get_physical_device_surface_support(
- // *pdevice,
- // index as u32,
- // surface,
- // )
- // .unwrap();
- // if supports_graphic_and_surface {
- // Some((*pdevice, index))
- // } else {
- // None
- // }
- // })
- // })
- // .expect("Couldn't find suitable device.");
- // let queue_family_index = queue_family_index as u32;
- // let device_extension_names_raw = [Swapchain::name().as_ptr()];
- // let features = vk::PhysicalDeviceFeatures {
- // shader_clip_distance: 1,
- // ..Default::default()
- // };
- // let priorities = [1.0];
+ let debug_utils_loader = DebugUtils::new(&entry, &instance);
+ let _debug_call_back = debug_utils_loader
+ .create_debug_utils_messenger(&debug_info, None)
+ .unwrap();
+ // let surface = ash_window::create_surface(&entry, &instance, &window, None).unwrap();
+ let pdevices = instance
+ .enumerate_physical_devices()
+ .expect("Physical device error");
+ assert!(pdevices.len() > 0);
+ let pdevice_index = 0;
+ let pdevice = pdevices[pdevice_index];
+ // let surface_loader = Surface::new(&entry, &instance);
+ // let (pdevice, queue_family_index) = pdevices
+ // .iter()
+ // .find_map(|pdevice| {
+ // instance
+ // .get_physical_device_queue_family_properties(*pdevice)
+ // .iter()
+ // .enumerate()
+ // .find_map(|(index, info)| {
+ // let supports_graphic_and_surface =
+ // info.queue_flags.contains(vk::QueueFlags::GRAPHICS)
+ // && surface_loader
+ // .get_physical_device_surface_support(
+ // *pdevice,
+ // index as u32,
+ // surface,
+ // )
+ // .unwrap();
+ // if supports_graphic_and_surface {
+ // Some((*pdevice, index))
+ // } else {
+ // None
+ // }
+ // })
+ // })
+ // .expect("Couldn't find suitable device.");
+ // let queue_family_index = queue_family_index as u32;
+ let queue_family_index = 0;
+ // let device_extension_names_raw = [Swapchain::name().as_ptr()];
+ let features = vk::PhysicalDeviceFeatures::builder()
+ .shader_clip_distance(true).
+ build();
+ // shader_clip_distance: 1,
+ // ..Default::default()
+ // };
+ let priorities = [1.0];
- // let queue_info = vk::DeviceQueueCreateInfo::default()
- // .queue_family_index(queue_family_index)
- // .queue_priorities(&priorities);
+ let queue_info = vk::DeviceQueueCreateInfo::builder()
+ .queue_family_index(queue_family_index)
+ .queue_priorities(&priorities)
+ .build();
- // let device_create_info = vk::DeviceCreateInfo::default()
- // .queue_create_infos(std::slice::from_ref(&queue_info))
- // .enabled_extension_names(&device_extension_names_raw)
- // .enabled_features(&features);
+ let device_create_info = vk::DeviceCreateInfo::builder()
+ .queue_create_infos(std::slice::from_ref(&queue_info))
+ // .enabled_extension_names(&device_extension_names_raw)
+ .enabled_features(&features)
+ .build();
- // let device: Device = instance
- // .create_device(pdevice, &device_create_info, None)
- // .unwrap();
+ let _device = instance
+ .create_device(pdevice, &device_create_info, None)?;
// let present_queue = device.get_device_queue(queue_family_index as u32, 0);