Open freddycansic opened 7 months ago
I am noticing you are using my branch for your project. I am unable to reproduce the problem, even after running your project just after updating egui
in your Cargo.toml
to 0.27
.
Maybe try running cargo update
and doing the same to see if the issue is resolved in the newest egui release, or if that does not work try to run the examples in my repository if your have not done that and see if those also experience lag.
Would be happy to help you with your problem.
Thank you for the quick response.
Unfortunately none of these fixes have solved my problem. The examples in your repository don't experience the same lag.
Also now I've updated the egui
version to 0.27
, I'm getting crashes after 1-4 frames of rendering. Here's the logs for that.
The application panicked (crashed).
Message: called `Result::unwrap()` on an `Err` value: a validation error occurred
Caused by:
access to a resource has been denied (resource use: Some(ResourceUseRef { command_index: 0, command_name: "begin_render_pass", resource_in_command: FramebufferAttachment { index: 0 }, secondary_use_ref: None }), error: the resource is already in use, and there is no tracking of concurrent usages)
Location: /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/command_buffer/traits.rs:215
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⋮ 9 frames hidden ⋮
10: core::result::Result<T,E>::unwrap::h57694997138fa6a0
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/result.rs:1077
11: <vulkano::command_buffer::traits::CommandBufferExecFuture<F> as vulkano::sync::future::GpuFuture>::flush::hf5d148cc8f78687f
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/command_buffer/traits.rs:215
213 │ SubmitAnyBuilder::Empty => {}
214 │ SubmitAnyBuilder::CommandBuffer(submit_info, fence) => {
215 > queue_submit(&self.queue, submit_info, fence, &self.previous).unwrap();
216 │ }
217 │ _ => unreachable!(),
12: <alloc::boxed::Box<F> as vulkano::sync::future::GpuFuture>::flush::hd19f76425fd7f176
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/mod.rs:409
407 │
408 │ fn flush(&self) -> Result<(), Validated<VulkanError>> {
409 > (**self).flush()
410 │ }
411 │
13: <vulkano::swapchain::acquire_present::PresentFuture<P> as vulkano::sync::future::GpuFuture>::build_submission::h650d2a9245d95fc3
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/swapchain/acquire_present.rs:855
853 │ }
854 │ SubmitAnyBuilder::CommandBuffer(_, _) => {
855 > self.previous.flush()?;
856 │
857 │ SubmitAnyBuilder::QueuePresent(PresentInfo {
14: vulkano::sync::future::fence_signal::FenceSignalFuture<F>::flush_impl::h8c2eadea0c74f9f6
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/fence_signal.rs:233
231 │ Full(E),
232 │ }
233 > let result = match previous.build_submission()? {
234 │ SubmitAnyBuilder::Empty => {
235 │ debug_assert!(!partially_flushed);
15: <vulkano::sync::future::fence_signal::FenceSignalFuture<F> as vulkano::sync::future::GpuFuture>::flush::h1675dfb48aa38e6c
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/fence_signal.rs:432
430 │ fn flush(&self) -> Result<(), Validated<VulkanError>> {
431 │ let mut state = self.state.lock();
432 > self.flush_impl(&mut state)
433 │ }
434 │
16: vulkano::sync::future::GpuFuture::then_signal_fence_and_flush::hc198a6f6793c76a4
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/mod.rs:327
325 │ {
326 │ let f = self.then_signal_fence();
327 > f.flush()?;
328 │
329 │ Ok(f)
17: vulkano_teapot::app::App::render::h651d12c975208449
at /home/freddy/dev/vulkano-teapot/src/app.rs:359
357 │ );
358 │
359 > let future = gui_future
360 │ .then_swapchain_present(
361 │ self.vulkan_context.queue.clone(),
18: vulkano_teapot::app::App::run::{{closure}}::h6bb50ebbe1097ceb
at /home/freddy/dev/vulkano-teapot/src/app.rs:190
188 │ });
189 │ });
190 > self.render(&mut frame_state);
191 │ frame_state.frame_count = (frame_state.frame_count + 1) % u128::MAX;
192 │ self.input.reset_just_released();
19: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h2e8180dabea1a2ff
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/ops/function.rs:294
20: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h4e9a32d24fcba407
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/ops/function.rs:294
21: winit::platform_impl::platform::x11::EventLoop<T>::single_iteration::h9dd78153994b86fd
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:602
600 │ for window_id in windows {
601 │ let window_id = crate::window::WindowId(window_id);
602 > callback(
603 │ Event::WindowEvent {
604 │ window_id,
22: winit::platform_impl::platform::x11::EventLoop<T>::poll_events_with_timeout::he99e19cd40641348
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:541
539 │ }
540 │
541 > self.single_iteration(&mut callback, cause);
542 │ }
543 │
23: winit::platform_impl::platform::x11::EventLoop<T>::pump_events::h886f330c08933ab6
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:447
445 │ // request to Exit.
446 │ if !self.exiting() {
447 > self.poll_events_with_timeout(timeout, &mut callback);
448 │ }
449 │ if let Some(code) = self.exit_code() {
24: winit::platform_impl::platform::x11::EventLoop<T>::run_on_demand::h1149e8fef66e36e8
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:408
406 │
407 │ let exit = loop {
408 > match self.pump_events(None, &mut event_handler) {
409 │ PumpStatus::Exit(0) => {
410 │ break Ok(());
25: winit::platform_impl::platform::EventLoop<T>::run_on_demand::h2307ac378ef21318
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/mod.rs:829
827 │ F: FnMut(crate::event::Event<T>, &RootELW<T>),
828 │ {
829 > x11_or_wayland!(match self; EventLoop(evlp) => evlp.run_on_demand(callback))
830 │ }
831 │
26: winit::platform_impl::platform::EventLoop<T>::run::h4563f994199e9e97
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/mod.rs:822
820 │ F: FnMut(crate::event::Event<T>, &RootELW<T>),
821 │ {
822 > self.run_on_demand(callback)
823 │ }
824 │
27: winit::event_loop::EventLoop<T>::run::h5d90d01a4595d410
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/event_loop.rs:249
247 │ F: FnMut(Event<T>, &EventLoopWindowTarget<T>),
248 │ {
249 > self.event_loop.run(event_handler)
250 │ }
251 │
28: vulkano_teapot::app::App::run::he2418a0c0c78684b
at /home/freddy/dev/vulkano-teapot/src/app.rs:144
142 │ };
143 │
144 > event_loop
145 │ .run(move |event, event_loop_window_target| {
146 │ println!("{:?}", event);
29: vulkano_teapot::main::h756cc3867071c21b
at /home/freddy/dev/vulkano-teapot/src/main.rs:27
25 │
26 │ let app = App::new(&event_loop);
27 > app.run(event_loop);
28 │ }
30: core::ops::function::FnOnce::call_once::hf9ff53839cfeca28
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/ops/function.rs:250
⋮ 16 frames hidden ⋮
Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyFramebuffer-framebuffer-00892] [validation] Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x90d1cd00000000b4[] that is currently in use by VkCommandBuffer 0x55bafd5ce940[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyFramebuffer-framebuffer-00892] [validation] Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x84ad8300000000ba[] that is currently in use by VkCommandBuffer 0x55bafd5d2180[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyBuffer-buffer-00922] [validation] Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0xd10d270000000018[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyBuffer-buffer-00922] [validation] Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x95a125000000001a[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyBuffer-buffer-00922] [validation] Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0xcb1c7c000000001b[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyBuffer-buffer-00922] [validation] Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x2cfba2000000001c[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyImageView-imageView-01026] [validation] Validation Error: [ VUID-vkDestroyImageView-imageView-01026 ] | MessageID = 0x63ac21f0 | vkDestroyImageView(): can't be called on VkImageView 0xb097c90000000027[] that is currently in use by VkDescriptorSet 0x4e4775000000006e[]. The Vulkan spec states: All submitted commands that refer to imageView must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyImageView-imageView-01026)
[18:14:39 ERROR vulkano_teapot::debug] [VUID-vkDestroyImage-image-01000] [validation] Validation Error: [ VUID-vkDestroyImage-image-01000 ] | MessageID = 0xf2d29b5a | vkDestroyImage(): can't be called on VkImage 0xa2eb680000000026[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000)
VUID-vkDestroyFramebuffer-framebuffer-00892(ERROR / SPEC): msgNum: -617577710 - Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x5c5283000000003e[] that is currently in use by VkCommandBuffer 0x55bafd139a60[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
Objects: 0
VUID-vkDestroyFramebuffer-framebuffer-00892(ERROR / SPEC): msgNum: -617577710 - Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x56c9bd0000000040[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
Objects: 0
VUID-vkDestroyImage-image-01000(ERROR / SPEC): msgNum: -221078694 - Validation Error: [ VUID-vkDestroyImage-image-01000 ] | MessageID = 0xf2d29b5a | vkDestroyImage(): can't be called on VkImage 0x5eb05e000000003b[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000)
Objects: 0
VUID-vkDestroyPipeline-pipeline-00765(ERROR / SPEC): msgNum: 1809638909 - Validation Error: [ VUID-vkDestroyPipeline-pipeline-00765 ] | MessageID = 0x6bdce5fd | vkDestroyPipeline(): can't be called on VkPipeline 0xe88693000000000c[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to pipeline must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyPipeline-pipeline-00765)
Objects: 0
VUID-vkDestroyRenderPass-renderPass-00873(ERROR / SPEC): msgNum: 1194727853 - Validation Error: [ VUID-vkDestroyRenderPass-renderPass-00873 ] | MessageID = 0x473619ad | vkDestroyRenderPass(): can't be called on VkRenderPass 0xf443490000000006[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to renderPass must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyRenderPass-renderPass-00873)
Objects: 0
VUID-vkDestroyBuffer-buffer-00922(ERROR / SPEC): msgNum: -464217071 - Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x1dc49b00000000b2[] that is currently in use by VkDescriptorSet 0x4f8a8b0000000046[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
Objects: 0
VUID-vkDestroyBuffer-buffer-00922(ERROR / SPEC): msgNum: -464217071 - Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x89e60f0000000042[] that is currently in use by VkCommandBuffer 0x55bafd118cf0[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
Objects: 0
VUID-vkDestroyBuffer-buffer-00922(ERROR / SPEC): msgNum: -464217071 - Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x1c252400000000b5[] that is currently in use by VkCommandBuffer 0x55bafd137230[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
Objects: 0
VUID-vkDestroyBuffer-buffer-00922(ERROR / SPEC): msgNum: -464217071 - Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x2602c100000000b8[] that is currently in use by VkDescriptorSet 0x7323f50000000048[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
Objects: 0
VUID-vkDestroyBuffer-buffer-00922(ERROR / SPEC): msgNum: -464217071 - Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] | MessageID = 0xe4549c11 | vkDestroyBuffer(): can't be called on VkBuffer 0x2df7c500000000bc[] that is currently in use by VkCommandBuffer 0x55bafd139a60[]. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
Objects: 0
VUID-vkDestroyCommandPool-commandPool-00041(ERROR / SPEC): msgNum: -1387836198 - Validation Error: [ VUID-vkDestroyCommandPool-commandPool-00041 ] Object 0: handle = 0x55bafd118cf0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x2e2941000000001f, type = VK_OBJECT_TYPE_COMMAND_POOL; | MessageID = 0xad474cda | vkDestroyCommandPool(): (VkCommandBuffer 0x55bafd118cf0[]) is in use. The Vulkan spec states: All VkCommandBuffer objects allocated from commandPool must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyCommandPool-commandPool-00041)
Objects: 2
[0] 0x55bafd118cf0, type: 6, name: NULL
[1] 0x2e2941000000001f, type: 25, name: NULL
VUID-vkDestroyCommandPool-commandPool-00041(ERROR / SPEC): msgNum: -1387836198 - Validation Error: [ VUID-vkDestroyCommandPool-commandPool-00041 ] Object 0: handle = 0x55bafd137230, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x2e2941000000001f, type = VK_OBJECT_TYPE_COMMAND_POOL; | MessageID = 0xad474cda | vkDestroyCommandPool(): (VkCommandBuffer 0x55bafd137230[]) is in use. The Vulkan spec states: All VkCommandBuffer objects allocated from commandPool must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyCommandPool-commandPool-00041)
Objects: 2
[0] 0x55bafd137230, type: 6, name: NULL
[1] 0x2e2941000000001f, type: 25, name: NULL
VUID-vkDestroyCommandPool-commandPool-00041(ERROR / SPEC): msgNum: -1387836198 - Validation Error: [ VUID-vkDestroyCommandPool-commandPool-00041 ] Object 0: handle = 0x55bafd139a60, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x2e2941000000001f, type = VK_OBJECT_TYPE_COMMAND_POOL; | MessageID = 0xad474cda | vkDestroyCommandPool(): (VkCommandBuffer 0x55bafd139a60[]) is in use. The Vulkan spec states: All VkCommandBuffer objects allocated from commandPool must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyCommandPool-commandPool-00041)
Objects: 2
[0] 0x55bafd139a60, type: 6, name: NULL
[1] 0x2e2941000000001f, type: 25, name: NULL
VUID-vkDestroyFence-fence-01120(ERROR / SPEC): msgNum: 1562993224 - Validation Error: [ VUID-vkDestroyFence-fence-01120 ] Object 0: handle = 0x149d740000000087, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x5d296248 | vkDestroyFence(): fence (VkFence 0x149d740000000087[]) is in use. The Vulkan spec states: All queue submission commands that refer to fence must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFence-fence-01120)
Objects: 1
[0] 0x149d740000000087, type: 7, name: NULL
VUID-vkDestroyFence-fence-01120(ERROR / SPEC): msgNum: 1562993224 - Validation Error: [ VUID-vkDestroyFence-fence-01120 ] Object 0: handle = 0x95ff2600000000b7, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x5d296248 | vkDestroyFence(): fence (VkFence 0x95ff2600000000b7[]) is in use. The Vulkan spec states: All queue submission commands that refer to fence must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFence-fence-01120)
Objects: 1
[0] 0x95ff2600000000b7, type: 7, name: NULL
VUID-vkDestroyFence-fence-01120(ERROR / SPEC): msgNum: 1562993224 - Validation Error: [ VUID-vkDestroyFence-fence-01120 ] Object 0: handle = 0x2ec10700000000be, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x5d296248 | vkDestroyFence(): fence (VkFence 0x2ec10700000000be[]) is in use. The Vulkan spec states: All queue submission commands that refer to fence must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFence-fence-01120)
Objects: 1
[0] 0x2ec10700000000be, type: 7, name: NULL
Thanks again for helping.
Following fix it for me on windows:
egui = "0.27.0"
(does nothing with regards to the issue, but needed it for compilation)build.rs
(might be just a windows issue, also needed it for compilation).then_signal_fence_and_flush()
leaving only the one just before match future.map_err(Validated::unwrap)
. This gets rid of the errors (resource in use).Duration::from_millis(10)
. This was a quick debug, so didn't dig deep into further... e.g. resizing crashes the app entirely on my machine.
Maybe this helps a bit.
Thanks for the response.
Unfortunately none of these fixes have worked for me, I'm still experiencing the same crash. Commenting out gui.draw_on_image
stops the crash so I'm pretty sure that is where the error originates.
Here's what I've done.
Updated egui
version.
-egui = "0.26.0"
+egui = "0.27.0"
Added os specific targeting for build script.
fn main() {
+ #[cfg(target_os = "linux")]
println!(
"cargo:rustc-link-search={}",
std::env::var("NIX_LD_LIBRARY_PATH").unwrap_or_default()
Added in an aquire swapchain image timeout.
- match acquire_next_image(self.rendering_context.swapchain.clone(), None)
+ match acquire_next_image(
+ self.rendering_context.swapchain.clone(),
+ Some(Duration::from_millis(10)),
+ )
Removed the first then_signal_fence_and_flush()
call.
.unwrap()
.join(acquire_future)
.then_execute(self.vulkan_context.queue.clone(), command_buffer)
- .unwrap()
- .then_signal_fence_and_flush()
.unwrap();
Here's the full stacktrace.
The application panicked (crashed).
Message: called `Result::unwrap()` on an `Err` value: a validation error occurred
Caused by:
access to a resource has been denied (resource use: Some(ResourceUseRef { command_index: 0, command_name: "begin_render_pass", resource_in_command: FramebufferAttachment { index: 0 }, secondary_use_ref: None }), error: the resource is already in use, and there is no tracking of concurrent usages)
Location: /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/command_buffer/traits.rs:215
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⋮ 9 frames hidden ⋮
10: core::result::Result<T,E>::unwrap::hfa6837c5b0db220c
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/result.rs:1077
11: <vulkano::command_buffer::traits::CommandBufferExecFuture<F> as vulkano::sync::future::GpuFuture>::flush::h2451a32eefdaa8a9
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/command_buffer/traits.rs:215
213 │ SubmitAnyBuilder::Empty => {}
214 │ SubmitAnyBuilder::CommandBuffer(submit_info, fence) => {
215 > queue_submit(&self.queue, submit_info, fence, &self.previous).unwrap();
216 │ }
217 │ _ => unreachable!(),
12: <alloc::boxed::Box<F> as vulkano::sync::future::GpuFuture>::flush::h4cfa5fbfc0d595a8
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/mod.rs:409
407 │
408 │ fn flush(&self) -> Result<(), Validated<VulkanError>> {
409 > (**self).flush()
410 │ }
411 │
13: <vulkano::swapchain::acquire_present::PresentFuture<P> as vulkano::sync::future::GpuFuture>::build_submission::hb6cf1d8612f868ea
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/swapchain/acquire_present.rs:855
853 │ }
854 │ SubmitAnyBuilder::CommandBuffer(_, _) => {
855 > self.previous.flush()?;
856 │
857 │ SubmitAnyBuilder::QueuePresent(PresentInfo {
14: vulkano::sync::future::fence_signal::FenceSignalFuture<F>::flush_impl::hd42a10f6e2910b8d
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/fence_signal.rs:233
231 │ Full(E),
232 │ }
233 > let result = match previous.build_submission()? {
234 │ SubmitAnyBuilder::Empty => {
235 │ debug_assert!(!partially_flushed);
15: <vulkano::sync::future::fence_signal::FenceSignalFuture<F> as vulkano::sync::future::GpuFuture>::flush::hc17eb5574540fb57
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/fence_signal.rs:432
430 │ fn flush(&self) -> Result<(), Validated<VulkanError>> {
431 │ let mut state = self.state.lock();
432 > self.flush_impl(&mut state)
433 │ }
434 │
16: vulkano::sync::future::GpuFuture::then_signal_fence_and_flush::h5a015bc0e5f177c6
at /home/freddy/.cargo/git/checkouts/vulkano-cb672043253a6e8d/18c88cd/vulkano/src/sync/future/mod.rs:327
325 │ {
326 │ let f = self.then_signal_fence();
327 > f.flush()?;
328 │
329 │ Ok(f)
17: vulkano_teapot::app::App::render::hde1e518b26fceae3
at /home/freddy/dev/vulkano-teapot/src/app.rs:373
371 │ );
372 │
373 > let future = gui_future
374 │ .then_swapchain_present(
375 │ self.vulkan_context.queue.clone(),
18: vulkano_teapot::app::App::run::{{closure}}::haa576b965f0210ac
at /home/freddy/dev/vulkano-teapot/src/app.rs:215
213 │ });
214 │ });
215 > self.render(&mut frame_state);
216 │ frame_state.frame_count = (frame_state.frame_count + 1) % u128::MAX;
217 │ self.input.reset_just_released();
19: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h1add303851441a63
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/ops/function.rs:294
20: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h58121531202b027c
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/ops/function.rs:294
21: winit::platform_impl::platform::x11::EventLoop<T>::single_iteration::h9d64587fa066db53
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:602
600 │ for window_id in windows {
601 │ let window_id = crate::window::WindowId(window_id);
602 > callback(
603 │ Event::WindowEvent {
604 │ window_id,
22: winit::platform_impl::platform::x11::EventLoop<T>::poll_events_with_timeout::he65223d419ee84ac
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:541
539 │ }
540 │
541 > self.single_iteration(&mut callback, cause);
542 │ }
543 │
23: winit::platform_impl::platform::x11::EventLoop<T>::pump_events::hb74d9afe36e95f35
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:447
445 │ // request to Exit.
446 │ if !self.exiting() {
447 > self.poll_events_with_timeout(timeout, &mut callback);
448 │ }
449 │ if let Some(code) = self.exit_code() {
24: winit::platform_impl::platform::x11::EventLoop<T>::run_on_demand::h0cef644bcddab5df
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/x11/mod.rs:408
406 │
407 │ let exit = loop {
408 > match self.pump_events(None, &mut event_handler) {
409 │ PumpStatus::Exit(0) => {
410 │ break Ok(());
25: winit::platform_impl::platform::EventLoop<T>::run_on_demand::h307f2433570c534b
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/mod.rs:829
827 │ F: FnMut(crate::event::Event<T>, &RootELW<T>),
828 │ {
829 > x11_or_wayland!(match self; EventLoop(evlp) => evlp.run_on_demand(callback))
830 │ }
831 │
26: winit::platform_impl::platform::EventLoop<T>::run::h33ae712bb3262232
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/platform_impl/linux/mod.rs:822
820 │ F: FnMut(crate::event::Event<T>, &RootELW<T>),
821 │ {
822 > self.run_on_demand(callback)
823 │ }
824 │
27: winit::event_loop::EventLoop<T>::run::h911c2925cb4825bc
at /home/freddy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.15/src/event_loop.rs:249
247 │ F: FnMut(Event<T>, &EventLoopWindowTarget<T>),
248 │ {
249 > self.event_loop.run(event_handler)
250 │ }
251 │
28: vulkano_teapot::app::App::run::h5f8c91cd1faa1d49
at /home/freddy/dev/vulkano-teapot/src/app.rs:131
129 │ };
130 │
131 > event_loop
132 │ .run(move |event, event_loop_window_target| {
133 │ // println!("{:?}", event);
29: vulkano_teapot::main::he78e220f056f2eae
at /home/freddy/dev/vulkano-teapot/src/main.rs:27
25 │
26 │ let app = App::new(&event_loop);
27 > app.run(event_loop);
28 │ }
30: core::ops::function::FnOnce::call_once::h11a82bf5f4be8d24
at /rustc/3c85e56249b0b1942339a6a989a971bf6f1c9e0f/library/core/src/ops/function.rs:250
⋮ 16 frames hidden ⋮
Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
[11:05:59 ERROR vulkano_teapot::debug] [VUID-vkDestroyFramebuffer-framebuffer-00892] [validation] Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x993a4d000000008f[] that is currently in use by VkCommandBuffer 0x55e9927df630[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
[11:05:59 ERROR vulkano_teapot::debug] [VUID-vkDestroyFramebuffer-framebuffer-00892] [validation] Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0xd68cbb0000000091[] that is currently in use by VkCommandBuffer 0x55e9927e3140[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
VUID-vkDestroyFramebuffer-framebuffer-00892(ERROR / SPEC): msgNum: -617577710 - Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x2723ba0000000037[] that is currently in use by VkCommandBuffer 0x55e9924c80b0[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
Objects: 0
VUID-vkDestroyFramebuffer-framebuffer-00892(ERROR / SPEC): msgNum: -617577710 - Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] | MessageID = 0xdb308312 | vkDestroyFramebuffer(): can't be called on VkFramebuffer 0x944a2c0000000039[] that is currently in use by VkCommandBuffer 0x55e9924cb740[]. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892)
Objects: 0
VUID-vkDestroyImage-image-01000(ERROR / SPEC): msgNum: -221078694 - Validation Error: [ VUID-vkDestroyImage-image-01000 ] | MessageID = 0xf2d29b5a | vkDestroyImage(): can't be called on VkImage 0x2b424a0000000034[] that is currently in use by VkCommandBuffer 0x55e9924cb740[]. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000)
Objects: 0
VUID-vkDestroyPipeline-pipeline-00765(ERROR / SPEC): msgNum: 1809638909 - Validation Error: [ VUID-vkDestroyPipeline-pipeline-00765 ] | MessageID = 0x6bdce5fd | vkDestroyPipeline(): can't be called on VkPipeline 0xe88693000000000c[] that is currently in use by VkCommandBuffer 0x55e9924cb740[]. The Vulkan spec states: All submitted commands that refer to pipeline must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyPipeline-pipeline-00765)
Objects: 0
VUID-vkDestroyRenderPass-renderPass-00873(ERROR / SPEC): msgNum: 1194727853 - Validation Error: [ VUID-vkDestroyRenderPass-renderPass-00873 ] | MessageID = 0x473619ad | vkDestroyRenderPass(): can't be called on VkRenderPass 0xf443490000000006[] that is currently in use by VkCommandBuffer 0x55e9924cb740[]. The Vulkan spec states: All submitted commands that refer to renderPass must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyRenderPass-renderPass-00873)
Objects: 0
VUID-vkDestroyCommandPool-commandPool-00041(ERROR / SPEC): msgNum: -1387836198 - Validation Error: [ VUID-vkDestroyCommandPool-commandPool-00041 ] Object 0: handle = 0x55e9924cb740, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0xd10d270000000018, type = VK_OBJECT_TYPE_COMMAND_POOL; | MessageID = 0xad474cda | vkDestroyCommandPool(): (VkCommandBuffer 0x55e9924cb740[]) is in use. The Vulkan spec states: All VkCommandBuffer objects allocated from commandPool must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyCommandPool-commandPool-00041)
Objects: 2
[0] 0x55e9924cb740, type: 6, name: NULL
[1] 0xd10d270000000018, type: 25, name: NULL
VUID-vkDestroyCommandPool-commandPool-00041(ERROR / SPEC): msgNum: -1387836198 - Validation Error: [ VUID-vkDestroyCommandPool-commandPool-00041 ] Object 0: handle = 0x55e9924c80b0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0xd10d270000000018, type = VK_OBJECT_TYPE_COMMAND_POOL; | MessageID = 0xad474cda | vkDestroyCommandPool(): (VkCommandBuffer 0x55e9924c80b0[]) is in use. The Vulkan spec states: All VkCommandBuffer objects allocated from commandPool must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyCommandPool-commandPool-00041)
Objects: 2
[0] 0x55e9924c80b0, type: 6, name: NULL
[1] 0xd10d270000000018, type: 25, name: NULL
VUID-vkDestroyFence-fence-01120(ERROR / SPEC): msgNum: 1562993224 - Validation Error: [ VUID-vkDestroyFence-fence-01120 ] Object 0: handle = 0xd3dd54000000008e, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x5d296248 | vkDestroyFence(): fence (VkFence 0xd3dd54000000008e[]) is in use. The Vulkan spec states: All queue submission commands that refer to fence must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFence-fence-01120)
Objects: 1
[0] 0xd3dd54000000008e, type: 7, name: NULL
VUID-vkDestroyFence-fence-01120(ERROR / SPEC): msgNum: 1562993224 - Validation Error: [ VUID-vkDestroyFence-fence-01120 ] Object 0: handle = 0x176083000000005f, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x5d296248 | vkDestroyFence(): fence (VkFence 0x176083000000005f[]) is in use. The Vulkan spec states: All queue submission commands that refer to fence must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFence-fence-01120)
Objects: 1
[0] 0x176083000000005f, type: 7, name: NULL
VUID-vkDestroyFence-fence-01120(ERROR / SPEC): msgNum: 1562993224 - Validation Error: [ VUID-vkDestroyFence-fence-01120 ] Object 0: handle = 0xe9b2ee0000000094, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x5d296248 | vkDestroyFence(): fence (VkFence 0xe9b2ee0000000094[]) is in use. The Vulkan spec states: All queue submission commands that refer to fence must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFence-fence-01120)
Objects: 1
[0] 0xe9b2ee0000000094, type: 7, name: NULL
Here's a link to the updated git repository https://github.com/freddycansic/vulkano-teapot/tree/4bbedd05e4f5cf31b0a918d65a918be21fca5aab
Update: The lag does not occur on WSL2. Although I can't seem to make the GUI appear at all, I can still feel the lag through non-GUI keybinds (i.e. move camera forward) which makes me think this might be a winit
issue. I'm really not sure.
Update: Lag appears on gnome too, its my code for sure.
Expected Behaviour
GUI is responsive
Observed Behaviour
There is a long lag time between interacting with GUI elements and them responding.
Environment
Video
https://github.com/hakolao/egui_winit_vulkano/assets/93549743/94fdaca4-93f4-41a9-9732-010ef5df2147
Code
I'm using approach 4 to ensure egui renders into the correct color space.
Enable
khr_swapchain_mutable_format
.Create swapchain with
SwapchainCreateFlags::MUTABLE_FORMAT
.Create
Format::R8G8B8A8_UNORM
image views of swapchain images.Initialise
Gui
object with correct image view format.Create GUI elements in render loop.
Render scene and GUI then present.
This issue comes from my repo, vulkano-teapot. You can look at the whole source here if you need.
This issue does not happen in your examples, so something's wrong with my code somewhere.
This is a link to a flamegraph I generated using cargo-flamegraph https://github.com/hakolao/egui_winit_vulkano/assets/93549743/63f474b4-6bde-4f44-9407-c5d5071475a9
Thanks in advance for taking the time to look over this issue :)