PhysicalDevice::surface_present_modes should return Vec result (#2496)

* PhysicalDevice::surface_present_modes should return Vec result as any other this struct functions for consistency and to eliminate composing result back to Vec in outer usages, such as:
```rust
    let present_mode = physical_device
        .surface_present_modes(surface, SurfaceInfo::default())?
        .collect();
    Ok(SwapChainSupportDetails {
        _capabilities: capabilities,
        formats,
        present_mode,
    })
```

* fmt

* review fix
This commit is contained in:
maratik123 2024-03-13 19:05:17 +03:00 committed by GitHub
parent 87140ce3d0
commit 3472daa465
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 13 deletions

View File

@ -1981,7 +1981,7 @@ impl PhysicalDevice {
} = surface_info; } = surface_info;
if let Some(present_mode) = present_mode { if let Some(present_mode) = present_mode {
let mut present_modes = unsafe { let present_modes = unsafe {
self.surface_present_modes_unchecked( self.surface_present_modes_unchecked(
surface, surface,
SurfaceInfo { SurfaceInfo {
@ -1999,7 +1999,7 @@ impl PhysicalDevice {
})? })?
}; };
if !present_modes.any(|mode| mode == present_mode) { if !present_modes.into_iter().any(|mode| mode == present_mode) {
return Err(Box::new(ValidationError { return Err(Box::new(ValidationError {
problem: "`surface_info.present_mode` is not supported for `surface`".into(), problem: "`surface_info.present_mode` is not supported for `surface`".into(),
vuids: &["VUID-VkSurfacePresentModeEXT-presentMode-07780"], vuids: &["VUID-VkSurfacePresentModeEXT-presentMode-07780"],
@ -2355,7 +2355,7 @@ impl PhysicalDevice {
} = surface_info; } = surface_info;
if let Some(present_mode) = present_mode { if let Some(present_mode) = present_mode {
let mut present_modes = unsafe { let present_modes = unsafe {
self.surface_present_modes_unchecked( self.surface_present_modes_unchecked(
surface, surface,
SurfaceInfo { SurfaceInfo {
@ -2373,7 +2373,7 @@ impl PhysicalDevice {
})? })?
}; };
if !present_modes.any(|mode| mode == present_mode) { if !present_modes.into_iter().any(|mode| mode == present_mode) {
return Err(Box::new(ValidationError { return Err(Box::new(ValidationError {
problem: "`surface_info.present_mode` is not supported for `surface`".into(), problem: "`surface_info.present_mode` is not supported for `surface`".into(),
vuids: &["VUID-VkSurfacePresentModeEXT-presentMode-07780"], vuids: &["VUID-VkSurfacePresentModeEXT-presentMode-07780"],
@ -2601,7 +2601,7 @@ impl PhysicalDevice {
&self, &self,
surface: &Surface, surface: &Surface,
surface_info: SurfaceInfo, surface_info: SurfaceInfo,
) -> Result<impl Iterator<Item = PresentMode>, Validated<VulkanError>> { ) -> Result<Vec<PresentMode>, Validated<VulkanError>> {
self.validate_surface_present_modes(surface, &surface_info)?; self.validate_surface_present_modes(surface, &surface_info)?;
unsafe { Ok(self.surface_present_modes_unchecked(surface, surface_info)?) } unsafe { Ok(self.surface_present_modes_unchecked(surface, surface_info)?) }
@ -2718,10 +2718,10 @@ impl PhysicalDevice {
&self, &self,
surface: &Surface, surface: &Surface,
surface_info: SurfaceInfo, surface_info: SurfaceInfo,
) -> Result<impl Iterator<Item = PresentMode>, VulkanError> { ) -> Result<Vec<PresentMode>, VulkanError> {
surface surface.surface_present_modes.get_or_try_insert(
.surface_present_modes (self.handle, surface_info),
.get_or_try_insert((self.handle, surface_info), |(_, surface_info)| { |(_, surface_info)| {
let &SurfaceInfo { let &SurfaceInfo {
present_mode: _, present_mode: _,
full_screen_exclusive, full_screen_exclusive,
@ -2837,8 +2837,8 @@ impl PhysicalDevice {
.filter_map(|mode_vk| mode_vk.try_into().ok()) .filter_map(|mode_vk| mode_vk.try_into().ok())
.collect()) .collect())
} }
}) },
.map(IntoIterator::into_iter) )
} }
/// Returns whether queues of the given queue family can draw on the given surface. /// Returns whether queues of the given queue family can draw on the given surface.

View File

@ -621,7 +621,7 @@ impl Swapchain {
}) })
})? })?
}; };
let surface_present_modes: SmallVec<[_; PresentMode::COUNT]> = unsafe { let surface_present_modes = unsafe {
device device
.physical_device() .physical_device()
.surface_present_modes_unchecked( .surface_present_modes_unchecked(
@ -644,7 +644,6 @@ impl Swapchain {
..Default::default() ..Default::default()
}) })
})? })?
.collect()
}; };
if surface_capabilities if surface_capabilities