On Wednesday, 2018-02-21 14:05:57 +0000, Daniel Stone wrote: > The DRI3 drawable info struct currently stores a boolean for whether the > last completed operation was a flip or not. As we need to track the full > completion mode for handling suboptimal returns, change the 'flipping' > field to the raw present completion mode from the server. > > Signed-off-by: Daniel Stone <dani...@collabora.com>
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com> > --- > src/loader/loader_dri3_helper.c | 12 +++--------- > src/loader/loader_dri3_helper.h | 2 +- > 2 files changed, 4 insertions(+), 10 deletions(-) > > diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c > index cb947c58728..426966a786a 100644 > --- a/src/loader/loader_dri3_helper.c > +++ b/src/loader/loader_dri3_helper.c > @@ -196,7 +196,7 @@ dri3_fence_await(xcb_connection_t *c, struct > loader_dri3_drawable *draw, > static void > dri3_update_num_back(struct loader_dri3_drawable *draw) > { > - if (draw->flipping) > + if (draw->last_present_mode == XCB_PRESENT_COMPLETE_MODE_FLIP) > draw->num_back = 3; > else > draw->num_back = 2; > @@ -369,14 +369,8 @@ dri3_handle_present_event(struct loader_dri3_drawable > *draw, > draw->recv_sbc = (draw->send_sbc & 0xffffffff00000000LL) | > ce->serial; > if (draw->recv_sbc > draw->send_sbc) > draw->recv_sbc -= 0x100000000; > - switch (ce->mode) { > - case XCB_PRESENT_COMPLETE_MODE_FLIP: > - draw->flipping = true; > - break; > - case XCB_PRESENT_COMPLETE_MODE_COPY: > - draw->flipping = false; > - break; > - } > + > + draw->last_present_mode = ce->mode; > > if (draw->vtable->show_fps) > draw->vtable->show_fps(draw, ce->ust); > diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h > index 839cba30df0..5caf214b372 100644 > --- a/src/loader/loader_dri3_helper.h > +++ b/src/loader/loader_dri3_helper.h > @@ -116,7 +116,6 @@ struct loader_dri3_drawable { > uint8_t have_back; > uint8_t have_fake_front; > uint8_t is_pixmap; > - uint8_t flipping; > > /* Information about the GPU owning the buffer */ > __DRIscreen *dri_screen; > @@ -157,6 +156,7 @@ struct loader_dri3_drawable { > > unsigned int swap_method; > unsigned int back_format; > + xcb_present_complete_mode_t last_present_mode; > > /* Currently protects the following fields: > * event_cnd, has_event_waiter, > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev