mirror of
https://github.com/italicsjenga/vello.git
synced 2025-01-10 12:41:30 +11:00
Vulkan: account for no limit on image count
when clamping image count within device bounds, some devices can report max_image_count = 0 to indicate no limit on image count. this triggers assertion in clamp because max < min. therefore if the device reports zero we treat it as `u32::MAX` see https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilitiesKHR.html
This commit is contained in:
parent
086e547aef
commit
1bdd2a7c86
|
@ -423,7 +423,11 @@ impl VkInstance {
|
||||||
// Note: can be 2 for non-Android to improve latency, but the real answer is to
|
// Note: can be 2 for non-Android to improve latency, but the real answer is to
|
||||||
// implement some kind of frame pacing.
|
// implement some kind of frame pacing.
|
||||||
const PREFERRED_IMAGE_COUNT: u32 = 3;
|
const PREFERRED_IMAGE_COUNT: u32 = 3;
|
||||||
let image_count = PREFERRED_IMAGE_COUNT.clamp(capabilities.min_image_count, capabilities.max_image_count);
|
let max_image_count = match capabilities.max_image_count {
|
||||||
|
0 => u32::MAX,
|
||||||
|
x => x,
|
||||||
|
};
|
||||||
|
let image_count = PREFERRED_IMAGE_COUNT.clamp(capabilities.min_image_count, max_image_count);
|
||||||
let mut extent = capabilities.current_extent;
|
let mut extent = capabilities.current_extent;
|
||||||
if extent.width == u32::MAX || extent.height == u32::MAX {
|
if extent.width == u32::MAX || extent.height == u32::MAX {
|
||||||
// We're deciding the size.
|
// We're deciding the size.
|
||||||
|
|
Loading…
Reference in a new issue