From 1397f6fdd1af7878695c40d292041d179390513a Mon Sep 17 00:00:00 2001 From: Irene Knapp Date: Thu, 9 Jul 2026 09:52:11 -0700 Subject: slightly change how SwapchainFeatures is used the goal is to make clear that it's a single-purpose value-return struct Force-Push: yes Change-Id: Idf3a3ebce2d44ea4fa2c75073e33b34c9055ca8b --- src/main.rs | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main.rs b/src/main.rs index 61a770a..d7791d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -67,13 +67,6 @@ struct QueueFamilyIndices { presentation: u32, } -#[derive(Debug)] -struct SwapchainFeatures { - capabilities: vk::SurfaceCapabilitiesKHR, - formats: Vec, - presentation_modes: Vec, -} - struct Surreality { // The "window" is the usual operating-system concept of a window; it's @@ -201,6 +194,15 @@ struct DeviceCreation { enable_swapchain: bool, } +// This struct exists for a single use, returning from +// find_device_swapchain_features(). +#[derive(Debug)] +struct SwapchainFeatures { + capabilities: vk::SurfaceCapabilitiesKHR, + formats: Vec, + presentation_modes: Vec, +} + impl Surreality { fn new() -> Self { Surreality { @@ -632,19 +634,20 @@ impl Surreality { indices: &QueueFamilyIndices) -> Result { - let features = Self::find_device_swapchain_features( - instance, surface, physical_device)?.require()?; + let SwapchainFeatures { capabilities, formats, presentation_modes } + = Self::find_device_swapchain_features( + instance, surface, physical_device)?.require()?; - let format = Self::pick_surface_format(&features.formats)?; + let format = Self::pick_surface_format(&formats)?; let presentation_mode - = Self::pick_presentation_mode(&features.presentation_modes)?; - let extent = Self::pick_image_extent(window, features.capabilities)?; + = Self::pick_presentation_mode(&presentation_modes)?; + let extent = Self::pick_image_extent(window, capabilities)?; - let mut image_count = features.capabilities.min_image_count + 1; - if features.capabilities.max_image_count != 0 { + let mut image_count = capabilities.min_image_count + 1; + if capabilities.max_image_count != 0 { image_count - = image_count.clamp(0, features.capabilities.max_image_count); + = image_count.clamp(0, capabilities.max_image_count); } let mut unique_queue_family_indices = BTreeSet::new(); @@ -673,7 +676,7 @@ impl Surreality { .image_usage(vk::ImageUsageFlags::COLOR_ATTACHMENT) .image_sharing_mode(sharing_mode) .queue_family_indices(&ordered_indices) - .pre_transform(features.capabilities.current_transform) + .pre_transform(capabilities.current_transform) .composite_alpha(vk::CompositeAlphaFlagsKHR::OPAQUE) .present_mode(presentation_mode) .clipped(true) -- cgit 1.4.1