mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-25 22:25:58 +01:00
output: add wlr_output_event_present.commit_seq
This is set to the value of wlr_output.commit_seq when the frame has been submitted. This allows tracking presentation with more then 1 full frame of latency. References: https://github.com/swaywm/wlroots/issues/1917
This commit is contained in:
parent
cde544de81
commit
6c649bab53
3 changed files with 7 additions and 0 deletions
|
@ -1497,6 +1497,9 @@ static void page_flip_handler(int fd, unsigned seq,
|
||||||
.tv_nsec = tv_usec * 1000,
|
.tv_nsec = tv_usec * 1000,
|
||||||
};
|
};
|
||||||
struct wlr_output_event_present present_event = {
|
struct wlr_output_event_present present_event = {
|
||||||
|
/* The DRM backend guarantees that the presentation event will be for
|
||||||
|
* the last submitted frame. */
|
||||||
|
.commit_seq = conn->output.commit_seq,
|
||||||
.when = &present_time,
|
.when = &present_time,
|
||||||
.seq = seq,
|
.seq = seq,
|
||||||
.refresh = mhz_to_nsec(conn->output.refresh),
|
.refresh = mhz_to_nsec(conn->output.refresh),
|
||||||
|
|
|
@ -173,6 +173,9 @@ enum wlr_output_present_flag {
|
||||||
|
|
||||||
struct wlr_output_event_present {
|
struct wlr_output_event_present {
|
||||||
struct wlr_output *output;
|
struct wlr_output *output;
|
||||||
|
// Frame submission for which this presentation event is for (see
|
||||||
|
// wlr_output.commit_seq).
|
||||||
|
uint32_t commit_seq;
|
||||||
// Time when the content update turned into light the first time.
|
// Time when the content update turned into light the first time.
|
||||||
struct timespec *when;
|
struct timespec *when;
|
||||||
// Vertical retrace counter. Zero if unavailable.
|
// Vertical retrace counter. Zero if unavailable.
|
||||||
|
|
|
@ -569,6 +569,7 @@ void wlr_output_send_present(struct wlr_output *output,
|
||||||
struct wlr_output_event_present _event = {0};
|
struct wlr_output_event_present _event = {0};
|
||||||
if (event == NULL) {
|
if (event == NULL) {
|
||||||
event = &_event;
|
event = &_event;
|
||||||
|
event->commit_seq = output->commit_seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
event->output = output;
|
event->output = output;
|
||||||
|
|
Loading…
Reference in a new issue