mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 05:00:09 +01:00
anv/wsi_wayland: Fix FIFO mode
Previously, there were a number of things we were doing wrong:
1) We weren't flushing the wl_display so dead-looping clients weren't
guaranteed to work.
2) We were sending the frame event after calling wl_surface.commit() so it
wasn't getting assigned to the correct frame
3) We weren't actually setting fifo_ready to false.
Unfortunately, we never noticed because (3) was hiding the other two. This
commit fixes all three and clients that use FIFO mode are now properly
refresh-rate limited.
This commit is contained in:
parent
ddcedb979a
commit
9ac3dde3a0
1 changed files with 4 additions and 1 deletions
|
|
@ -516,14 +516,17 @@ wsi_wl_queue_present(struct anv_swap_chain *anv_chain,
|
|||
assert(image_index < chain->image_count);
|
||||
wl_surface_attach(chain->surface, chain->images[image_index].buffer, 0, 0);
|
||||
wl_surface_damage(chain->surface, 0, 0, INT32_MAX, INT32_MAX);
|
||||
wl_surface_commit(chain->surface);
|
||||
|
||||
if (chain->present_mode == VK_PRESENT_MODE_FIFO_WSI) {
|
||||
struct wl_callback *frame = wl_surface_frame(chain->surface);
|
||||
wl_proxy_set_queue((struct wl_proxy *)frame, chain->queue);
|
||||
wl_callback_add_listener(frame, &frame_listener, chain);
|
||||
chain->fifo_ready = false;
|
||||
}
|
||||
|
||||
wl_surface_commit(chain->surface);
|
||||
wl_display_flush(chain->display->display);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue