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