Commit 8f52f17d6892
tarball2 files changed+51-79
@@ -1,7 +1,7 @@
11
use crate::state::{ClientState, State};22
use smithay::backend::allocator::dmabuf::Dmabuf;33
use smithay::backend::renderer::ImportDma;4
-use smithay::backend::renderer::utils::on_commit_buffer_handler;4
+use smithay::backend::renderer::utils::{import_surface_tree, on_commit_buffer_handler};55
use smithay::desktop::{PopupKind, Window};66
use smithay::input::dnd::{DndGrabHandler, GrabType, Source};77
use smithay::input::pointer::CursorImageStatus;@@ -56,6 +56,11 @@ impl CompositorHandler for State {
5656
5757
fn commit(&mut self, surface: &WlSurface) {5858
on_commit_buffer_handler::<Self>(surface);59
+ // Importing at commit keeps first-time dmabuf imports, which take60
+ // milliseconds on NVIDIA, out of the render racing the next vblank.61
+ if let Err(e) = import_surface_tree(&mut self.renderer, surface) {62
+ tracing::debug!("early import failed: {e}");63
+ }5964
if !is_sync_subsurface(surface) {6065
let mut root = surface.clone();6166
while let Some(parent) = get_parent(&root) {@@ -1,81 +1,48 @@
1
- Finished `release` profile [optimized] target(s) in 0.07s1
+ Finished `release` profile [optimized] target(s) in 0.06s22
Running `target/release/monolith run --backend drm , vkcube`3
-2026-10-16T13:18:42.960033Z INFO monolith::drm: primary GPU path=/dev/dri/card14
-2026-10-16T13:18:43.191440Z INFO monolith::drm: output connected name="DP-2" w=2560 h=1440 refresh=1655
-2026-10-16T13:18:43.191538Z INFO monolith::ipc: control socket path=/run/user/1000/monolith-wayland-2.sock6
-2026-10-16T13:18:43.191556Z INFO monolith: monolith running socket="wayland-2" device="NVIDIA GeForce RTX 3060"7
-2026-10-16T13:18:43.192099Z INFO monolith::commands: spawned pid=339299 argv=[",", "vkcube"]8
-2026-10-16T13:18:43.206596Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=144188239
-2026-10-16T13:18:43.212094Z DEBUG monolith::drm: frame rate output="DP-2" presented=1 vblanks=8355033 budget_us=164183
+2026-10-16T13:32:43.669264Z INFO monolith::drm: primary GPU path=/dev/dri/card14
+2026-10-16T13:32:43.906857Z INFO monolith::drm: output connected name="DP-2" w=2560 h=1440 refresh=1655
+2026-10-16T13:32:43.906934Z INFO monolith::ipc: control socket path=/run/user/1000/monolith-wayland-2.sock6
+2026-10-16T13:32:43.906946Z INFO monolith: monolith running socket="wayland-2" device="NVIDIA GeForce RTX 3060"7
+2026-10-16T13:32:43.907346Z INFO monolith::commands: spawned pid=348266 argv=[",", "vkcube"]8
+2026-10-16T13:32:43.927078Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=19657007 scene_ns=1950 render_ns=12420942 queue_ns=1563929
+2026-10-16T13:32:43.931073Z DEBUG monolith::drm: frame rate output="DP-2" presented=1 vblanks=8493716 budget_us=216571010
Selected WSI platform: wayland1111
Selected GPU 0: NVIDIA GeForce RTX 3060, type: DiscreteGpu, apiVersion: 4211017 (1.4.329), driverVersion: -1797652352 (83.416.128) 12
-2026-10-16T13:18:44.212377Z DEBUG monolith::drm: frame rate output="DP-2" presented=80 vblanks=165 budget_us=178413
-2026-10-16T13:18:45.212592Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=147314
-2026-10-16T13:18:45.497520Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6009851 budget_ns=276455615
-2026-10-16T13:18:45.830980Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6064851 budget_ns=195591916
-2026-10-16T13:18:46.212848Z DEBUG monolith::drm: frame rate output="DP-2" presented=163 vblanks=164 budget_us=137417
-2026-10-16T13:18:47.190680Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=342637018
-2026-10-16T13:18:47.194947Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6049851 budget_ns=492637019
-2026-10-16T13:18:47.213154Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=165 budget_us=489620
-2026-10-16T13:18:48.213491Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=174321
-2026-10-16T13:18:49.140885Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=5945851 budget_ns=196555922
-2026-10-16T13:18:49.213628Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=164 budget_us=186023
-2026-10-16T13:18:49.225750Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6058851 budget_ns=236021024
-2026-10-16T13:18:49.874409Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=5916851 budget_ns=388797825
-2026-10-16T13:18:50.214055Z DEBUG monolith::drm: frame rate output="DP-2" presented=163 vblanks=165 budget_us=165326
-2026-10-16T13:18:51.214172Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=163627
-2026-10-16T13:18:51.769798Z DEBUG monolith::input: bind cmd=Fullscreen28
-2026-10-16T13:18:51.830166Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=1102304429
-2026-10-16T13:18:51.838579Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=30315404 budget_ns=1252304430
-2026-10-16T13:18:52.214455Z DEBUG monolith::drm: frame rate output="DP-2" presented=126 vblanks=164 budget_us=1221331
-2026-10-16T13:18:53.214677Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=165 budget_us=143032
-2026-10-16T13:18:54.215041Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=145233
-2026-10-16T13:18:55.215200Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=144234
-2026-10-16T13:18:55.403154Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6061851 budget_ns=191401835
-2026-10-16T13:18:56.106336Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6057851 budget_ns=194270936
-2026-10-16T13:18:56.215463Z DEBUG monolith::drm: frame rate output="DP-2" presented=163 vblanks=165 budget_us=169337
-2026-10-16T13:18:56.332434Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=340053938
-2026-10-16T13:18:56.336731Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6072851 budget_ns=504053939
-2026-10-16T13:18:56.399771Z DEBUG monolith::input: bind cmd=Fullscreen40
-2026-10-16T13:18:56.462019Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=725595741
-2026-10-16T13:18:56.470071Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=24228404 budget_ns=925595742
-2026-10-16T13:18:56.682281Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6073851 budget_ns=261296943
-2026-10-16T13:18:56.694386Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6049851 budget_ns=311296944
-2026-10-16T13:18:56.809547Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6062851 budget_ns=344296945
-2026-10-16T13:18:57.215731Z DEBUG monolith::drm: frame rate output="DP-2" presented=153 vblanks=165 budget_us=275146
-2026-10-16T13:18:58.161784Z DEBUG monolith::input: bind cmd=Spawn { argv: ["beer"] }47
-2026-10-16T13:18:58.162414Z INFO monolith::commands: spawned pid=339323 argv=["beer"]48
-2026-10-16T13:18:58.197792Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6063851 budget_ns=386744849
-2026-10-16T13:18:58.215976Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=165 budget_us=383750
-2026-10-16T13:18:58.271072Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=1041169251
-2026-10-16T13:18:58.276596Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=12125255 budget_ns=1235169252
-2026-10-16T13:18:59.216233Z DEBUG monolith::drm: frame rate output="DP-2" presented=132 vblanks=165 budget_us=152553
-2026-10-16T13:18:59.432766Z DEBUG monolith::input: bind cmd=Spawn { argv: ["beer"] }54
-2026-10-16T13:18:59.433294Z INFO monolith::commands: spawned pid=339344 argv=["beer"]55
-2026-10-16T13:18:59.458728Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6063851 budget_ns=279677656
-2026-10-16T13:18:59.495745Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=425081757
-2026-10-16T13:18:59.501210Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6080553 budget_ns=622081758
-2026-10-16T13:19:00.216526Z DEBUG monolith::drm: frame rate output="DP-2" presented=142 vblanks=165 budget_us=145759
-2026-10-16T13:19:00.835760Z DEBUG monolith::input: bind cmd=Move { dir: Left }60
-2026-10-16T13:19:00.853017Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6064851 budget_ns=345144961
-2026-10-16T13:19:01.216794Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=164 budget_us=146262
-2026-10-16T13:19:02.087739Z DEBUG monolith::input: bind cmd=InvertMove63
-2026-10-16T13:19:02.217007Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=138164
-2026-10-16T13:19:02.344360Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6068851 budget_ns=178889565
-2026-10-16T13:19:02.441740Z DEBUG monolith::input: bind cmd=Move { dir: Right }66
-2026-10-16T13:19:02.497884Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=423219667
-2026-10-16T13:19:02.501941Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6062553 budget_ns=601219668
-2026-10-16T13:19:02.786857Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6063851 budget_ns=465429769
-2026-10-16T13:19:03.217269Z DEBUG monolith::drm: frame rate output="DP-2" presented=159 vblanks=165 budget_us=158770
-2026-10-16T13:19:04.217526Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=146771
-2026-10-16T13:19:04.781348Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6070851 budget_ns=313079372
-2026-10-16T13:19:05.217834Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=165 budget_us=144273
-2026-10-16T13:19:05.633029Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=1919493974
-2026-10-16T13:19:05.636097Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=42437851 budget_ns=2069493975
-2026-10-16T13:19:06.218058Z DEBUG monolith::drm: frame rate output="DP-2" presented=158 vblanks=164 budget_us=146376
-2026-10-16T13:19:07.218340Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=147777
-2026-10-16T13:19:08.218585Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=163678
-2026-10-16T13:19:08.370131Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6046851 budget_ns=198999079
-2026-10-16T13:19:09.008493Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=324204580
-2026-10-16T13:19:09.012717Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6034851 budget_ns=474204581
-2026-10-16T13:19:09.031732Z DEBUG monolith::input: bind cmd=Quit12
+2026-10-16T13:32:44.610017Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=18188851 budget_ns=285844513
+2026-10-16T13:32:44.931284Z DEBUG monolith::drm: frame rate output="DP-2" presented=73 vblanks=164 budget_us=274514
+2026-10-16T13:32:45.931531Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=258215
+2026-10-16T13:32:46.931788Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=242616
+2026-10-16T13:32:47.932040Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=229517
+2026-10-16T13:32:47.944211Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6066851 budget_ns=282392618
+2026-10-16T13:32:48.932319Z DEBUG monolith::drm: frame rate output="DP-2" presented=164 vblanks=165 budget_us=265619
+2026-10-16T13:32:49.914539Z DEBUG monolith::input: bind cmd=Fullscreen20
+2026-10-16T13:32:49.932555Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=242021
+2026-10-16T13:32:49.998732Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=10737116 scene_ns=9140 render_ns=10458842 queue_ns=26519422
+2026-10-16T13:32:50.005318Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=42439255 budget_ns=286978423
+2026-10-16T13:32:50.017443Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6061851 budget_ns=330039824
+2026-10-16T13:32:50.672080Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=3180736 scene_ns=6370 render_ns=3057454 queue_ns=11451225
+2026-10-16T13:32:50.678316Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6140851 budget_ns=336145926
+2026-10-16T13:32:50.932811Z DEBUG monolith::drm: frame rate output="DP-2" presented=152 vblanks=165 budget_us=338527
+2026-10-16T13:32:51.933167Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=313628
+2026-10-16T13:32:52.933320Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=292529
+2026-10-16T13:32:53.933574Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=278330
+2026-10-16T13:32:54.933829Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=270431
+2026-10-16T13:32:55.743499Z DEBUG monolith::input: bind cmd=Fullscreen32
+2026-10-16T13:32:55.823060Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=9146473 scene_ns=9791 render_ns=8938449 queue_ns=19435333
+2026-10-16T13:32:55.831041Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=36380106 budget_ns=294952734
+2026-10-16T13:32:55.873474Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6067851 budget_ns=323781735
+2026-10-16T13:32:55.934079Z DEBUG monolith::drm: frame rate output="DP-2" presented=153 vblanks=164 budget_us=332236
+2026-10-16T13:32:56.934342Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=319337
+2026-10-16T13:32:56.952632Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=3303388 scene_ns=6890 render_ns=3235347 queue_ns=5939138
+2026-10-16T13:32:56.958585Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=6060851 budget_ns=337724939
+2026-10-16T13:32:57.145476Z DEBUG monolith::input: bind cmd=Spawn { argv: ["beer"] }40
+2026-10-16T13:32:57.146181Z INFO monolith::commands: spawned pid=348279 argv=["beer"]41
+2026-10-16T13:32:57.303481Z DEBUG monolith::drm: slow frame output="DP-2" took_ns=15769221 scene_ns=15331 render_ns=15528617 queue_ns=22209342
+2026-10-16T13:32:57.304343Z DEBUG monolith::drm: frame missed its vblank output="DP-2" late_ns=48504851 budget_ns=345846043
+2026-10-16T13:32:57.934592Z DEBUG monolith::drm: frame rate output="DP-2" presented=156 vblanks=164 budget_us=323844
+2026-10-16T13:32:58.934858Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=165 budget_us=307445
+2026-10-16T13:32:59.935104Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=291146
+2026-10-16T13:33:00.935356Z DEBUG monolith::drm: frame rate output="DP-2" presented=165 vblanks=164 budget_us=268847
+2026-10-16T13:33:01.853414Z DEBUG monolith::input: bind cmd=Quit48
+Io error: Broken pipe (os error 32)