egui_ash/
utils.rs

1#[cfg(feature = "persistence")]
2use egui_winit::winit::event_loop::EventLoopWindowTarget;
3
4pub(crate) fn insert_image_memory_barrier(
5    device: &ash::Device,
6    cmd: &ash::vk::CommandBuffer,
7    image: &ash::vk::Image,
8    src_q_family_index: u32,
9    dst_q_family_index: u32,
10    src_access_mask: ash::vk::AccessFlags,
11    dst_access_mask: ash::vk::AccessFlags,
12    old_image_layout: ash::vk::ImageLayout,
13    new_image_layout: ash::vk::ImageLayout,
14    src_stage_mask: ash::vk::PipelineStageFlags,
15    dst_stage_mask: ash::vk::PipelineStageFlags,
16    subresource_range: ash::vk::ImageSubresourceRange,
17) {
18    let image_memory_barrier = ash::vk::ImageMemoryBarrier::builder()
19        .src_queue_family_index(src_q_family_index)
20        .dst_queue_family_index(dst_q_family_index)
21        .src_access_mask(src_access_mask)
22        .dst_access_mask(dst_access_mask)
23        .old_layout(old_image_layout)
24        .new_layout(new_image_layout)
25        .image(*image)
26        .subresource_range(subresource_range)
27        .build();
28    unsafe {
29        device.cmd_pipeline_barrier(
30            *cmd,
31            src_stage_mask,
32            dst_stage_mask,
33            ash::vk::DependencyFlags::BY_REGION,
34            &[],
35            &[],
36            &[image_memory_barrier],
37        );
38    }
39}
40
41#[cfg(feature = "persistence")]
42pub(crate) fn largest_monitor_point_size<E>(
43    egui_zoom_factor: f32,
44    event_loop: &EventLoopWindowTarget<E>,
45) -> egui::Vec2 {
46    let mut max_size = egui::Vec2::ZERO;
47
48    let available_monitors = { event_loop.available_monitors() };
49
50    for monitor in available_monitors {
51        let size = monitor
52            .size()
53            .to_logical::<f32>(egui_zoom_factor as f64 * monitor.scale_factor());
54        let size = egui::vec2(size.width, size.height);
55        max_size = max_size.max(size);
56    }
57
58    if max_size == egui::Vec2::ZERO {
59        egui::Vec2::splat(16000.0)
60    } else {
61        max_size
62    }
63}