diff options
| author | Irene Knapp <ireneista@irenes.space> | 2026-07-09 09:52:11 -0700 |
|---|---|---|
| committer | Irene Knapp <ireneista@irenes.space> | 2026-07-09 09:52:11 -0700 |
| commit | 1397f6fdd1af7878695c40d292041d179390513a (patch) | |
| tree | 2483b26dbe3c3b416ec5e3408e6cff9d4157289e /src | |
| parent | 738ae0b8bc0b2a7cb5c215f14d7253ddbff99d3c (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 35 |
1 files 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<vk::SurfaceFormatKHR>, - presentation_modes: Vec<vk::PresentModeKHR>, -} - 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<vk::SurfaceFormatKHR>, + presentation_modes: Vec<vk::PresentModeKHR>, +} + impl Surreality { fn new() -> Self { Surreality { @@ -632,19 +634,20 @@ impl Surreality { indices: &QueueFamilyIndices) -> Result<Swapchain> { - 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) |