[Mesa-dev] [PATCH v11 13/15] x11/dri3: Store raw present completion mode

Eric Engestrom eric.engestrom at imgtec.com
Wed Feb 21 14:52:53 UTC 2018


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 <daniels at collabora.com>

Reviewed-by: Eric Engestrom <eric.engestrom at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list