linux/x11: prioritize input in the event loop (#8253)
With this change, interaction with Zed is actually real-time and usable 🚀 🎉 The gist of it is - trying to process all of the input events before rendering anything. Release Notes: - N/A **Note**: this can be further improved in a follow-up. Currently, once the input and runnables are processed, we'd try to draw + render a frame. Presentation starts with acquiring a new frame. We currently have FIFO presentation method, so acquiring a frame is blocking on that swapchain image to become available. As the result, presentation takes around 16 ms, most of which is just busy wait. Ideally, we'd be able to process more input in this time frame, instead. **Note2**: it's a bit laggy in Debug for me, but that's just because of the extra-long `draw` times, which is unrelated to rendering (or platform support, for the matter). I'm curious how come on MacOS the `draw()` times in Debug are more modest.
This commit is contained in:
parent
cab8b5a9a3
commit
885ae2d863
2 changed files with 26 additions and 18 deletions
|
@ -507,16 +507,16 @@ impl BladeRenderer {
|
|||
}
|
||||
|
||||
pub fn draw(&mut self, scene: &Scene) {
|
||||
self.command_encoder.start();
|
||||
self.atlas.before_frame(&mut self.command_encoder);
|
||||
self.rasterize_paths(scene.paths());
|
||||
|
||||
let frame = {
|
||||
profiling::scope!("acquire frame");
|
||||
self.gpu.acquire_frame()
|
||||
};
|
||||
self.command_encoder.start();
|
||||
self.command_encoder.init_texture(frame.texture());
|
||||
|
||||
self.atlas.before_frame(&mut self.command_encoder);
|
||||
self.rasterize_paths(scene.paths());
|
||||
|
||||
let globals = GlobalParams {
|
||||
viewport_size: [
|
||||
self.viewport_size.width as f32,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue