On 16/10/17 07:02 AM, Louis-Francis Ratté-Boulianne wrote:
> Add 'check_flip2' hook for driver to let know the core
> about why flipping is not possible ('reason').
> If it is because of unsupported buffer format/modifier,
> a PresentCompleteNotify event is sent to the client with
> the PresentCompleteModeSuboptimalCopy mode.
> 
> v4: It replaces the old mechanism for format renegotiation

This is v1 of a new patch, not v4 of an existing patch.


> @@ -177,7 +178,12 @@ present_check_flip(RRCrtcPtr    crtc,
>      }
>  
>      /* Ask the driver for permission */
> -    if (screen_priv->info->check_flip) {
> +    if (screen_priv->info->check_flip2 && reason) {

The check_flip2 field can only be used if (screen_priv->info->version >= 1).


> @@ -564,6 +570,7 @@ present_check_flip_window (WindowPtr window)
>      present_window_priv_ptr     window_priv = present_window_priv(window);
>      present_vblank_ptr          flip_pending = screen_priv->flip_pending;
>      present_vblank_ptr          vblank;
> +    int                         reason = 0;

This variable doesn't really need to be initialized, does it?


> @@ -756,10 +764,14 @@ present_execute(present_vblank_ptr vblank, uint64_t 
> ust, uint64_t crtc_msc)
>      /* Compute correct CompleteMode
>       */
>      if (vblank->kind == PresentCompleteKindPixmap) {
> -        if (vblank->pixmap && vblank->window)
> -            mode = PresentCompleteModeCopy;
> -        else
> +        if (vblank->pixmap && vblank->window) {
> +            if (vblank->reason == PresentFlipReasonBufferFormat)
> +                mode = PresentCompleteModeSuboptimalCopy;

Setting PresentCompleteModeSuboptimalCopy will break clients which don't
know about it. There needs to be some kind of handshake to know that the
client can handle it. E.g. via a new PresentOption, or via the minor
version passed in by the client in the PresentQueryVersion request.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to