From 52624455b306f586c7721aa8d1e8dc12582b5b4b Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Sat, 22 Feb 2025 11:23:26 +0100 Subject: [PATCH] vulkan: ignore paint region if framebuffer is undefined --- src/gfx_api.rs | 10 +++++----- src/gfx_apis/vulkan/renderer.rs | 10 ++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/gfx_api.rs b/src/gfx_api.rs index dc051d84..ce69fa93 100644 --- a/src/gfx_api.rs +++ b/src/gfx_api.rs @@ -283,6 +283,11 @@ pub trait GfxFramebuffer: Debug { ) -> Result, GfxError>; fn format(&self) -> &'static Format; + + fn full_region(&self) -> Region { + let (width, height) = self.physical_size(); + Region::new2(Rect::new_sized_unchecked(0, 0, width, height)) + } } pub trait GfxInternalFramebuffer: GfxFramebuffer { @@ -319,11 +324,6 @@ impl dyn GfxFramebuffer { ) } - fn full_region(&self) -> Region { - let (width, height) = self.physical_size(); - Region::new2(Rect::new_sized_unchecked(0, 0, width, height)) - } - pub fn clear( self: &Rc, acquire_sync: AcquireSync, diff --git a/src/gfx_apis/vulkan/renderer.rs b/src/gfx_apis/vulkan/renderer.rs index 58152b76..5bf9224d 100644 --- a/src/gfx_apis/vulkan/renderer.rs +++ b/src/gfx_apis/vulkan/renderer.rs @@ -4,8 +4,8 @@ use { cpu_worker::PendingJob, format::XRGB8888, gfx_api::{ - AcquireSync, BufferResv, BufferResvUser, GfxApiOpt, GfxFormat, GfxTexture, - GfxWriteModifier, ReleaseSync, SyncFile, + AcquireSync, BufferResv, BufferResvUser, GfxApiOpt, GfxFormat, GfxFramebuffer, + GfxTexture, GfxWriteModifier, ReleaseSync, SyncFile, }, gfx_apis::vulkan::{ VulkanError, @@ -1075,6 +1075,12 @@ impl VulkanRenderer { } fn create_paint_regions(&self, fb: &VulkanImage, region: &Region) { + let mut region = region; + let region_owned; + if fb.contents_are_undefined.get() { + region_owned = fb.full_region(); + region = ®ion_owned; + } let memory = &mut *self.memory.borrow_mut(); memory.paint_regions.clear(); for rect in region.rects() {