All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH xf86-video-ati 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates
@ 2017-07-31  9:48 Michel Dänzer
       [not found] ` <20170731094808.2552-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Michel Dänzer @ 2017-07-31  9:48 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

Preparation for following changes, no functional change intended yet.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 src/drmmode_display.c | 2 +-
 src/radeon_kms.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 245a92fb0..6be6513af 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -795,7 +795,7 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
 				DamageCreate(radeon_screen_damage_report,
 					     NULL, DamageReportRawRegion,
 					     TRUE, screen, NULL);
-			DamageRegister(&screen->GetScreenPixmap(screen)->drawable,
+			DamageRegister(&screen->root->drawable,
 				       drmmode_crtc->scanout_damage);
 		}
 
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index b22c98406..f76d76a91 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -981,7 +981,7 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id)
 	GCPtr gc = GetScratchGC(pDraw->depth, pScreen);
 
 	ValidateGC(pDraw, gc);
-	(*gc->ops->CopyArea)(&pScreen->GetScreenPixmap(pScreen)->drawable,
+	(*gc->ops->CopyArea)(&pScreen->GetWindowPixmap(pScreen->root)->drawable,
 			     pDraw, gc,
 			     xf86_crtc->x + extents.x1, xf86_crtc->y + extents.y1,
 			     extents.x2 - extents.x1, extents.y2 - extents.y1,
-- 
2.13.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH xf86-video-ati 2/3] Add drmmode_crtc_can_flip helper
       [not found] ` <20170731094808.2552-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
@ 2017-07-31  9:48   ` Michel Dänzer
  2017-07-31  9:48   ` [PATCH xf86-video-ati 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers Michel Dänzer
  2017-08-01  9:19   ` [PATCH xf86-video-ati v2 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates Michel Dänzer
  2 siblings, 0 replies; 8+ messages in thread
From: Michel Dänzer @ 2017-07-31  9:48 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

To reduce code duplication between DRI2 and Present. No functional
change intended yet.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 src/drmmode_display.h | 11 +++++++++++
 src/radeon_dri2.c     |  5 +----
 src/radeon_present.c  |  8 +++-----
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index b9bc8fd8c..4378be86f 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -139,6 +139,17 @@ enum drmmode_flip_sync {
 };
 
 
+/* Can the page flip ioctl be used for this CRTC? */
+static inline Bool
+drmmode_crtc_can_flip(xf86CrtcPtr crtc)
+{
+    drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+
+    return crtc->enabled &&
+	drmmode_crtc->pending_dpms_mode == DPMSModeOn;
+}
+
+
 static inline void
 drmmode_fb_reference_loc(int drm_fd, struct drmmode_fb **old, struct drmmode_fb *new,
 			 const char *caller, unsigned line)
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 35fb60d91..70751b0bf 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -774,14 +774,11 @@ can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
 	xf86CrtcPtr crtc = config->crtc[i];
 	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 
-	if (!crtc->enabled)
-	    continue;
-
 	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
 	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
 	    return FALSE;
 
-	if (drmmode_crtc->pending_dpms_mode == DPMSModeOn)
+	if (drmmode_crtc_can_flip(crtc))
 	    num_crtcs_on++;
     }
 
diff --git a/src/radeon_present.c b/src/radeon_present.c
index e3a8f7e2b..85da655db 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -243,16 +243,14 @@ radeon_present_check_unflip(ScrnInfoPtr scrn)
 	return FALSE;
 
     for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
-	drmmode_crtc_private_ptr drmmode_crtc = config->crtc[i]->driver_private;
-
-	if (!config->crtc[i]->enabled)
-	    continue;
+	xf86CrtcPtr crtc = config->crtc[i];
+	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 
 	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
 	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
 	    return FALSE;
 
-	if (drmmode_crtc->pending_dpms_mode == DPMSModeOn)
+	if (drmmode_crtc_can_flip(crtc))
 	    num_crtcs_on++;
     }
 
-- 
2.13.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH xf86-video-ati 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers
       [not found] ` <20170731094808.2552-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2017-07-31  9:48   ` [PATCH xf86-video-ati 2/3] Add drmmode_crtc_can_flip helper Michel Dänzer
@ 2017-07-31  9:48   ` Michel Dänzer
       [not found]     ` <20170731094808.2552-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2017-08-01  9:19   ` [PATCH xf86-video-ati v2 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates Michel Dänzer
  2 siblings, 1 reply; 8+ messages in thread
From: Michel Dänzer @ 2017-07-31  9:48 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

As long as the CRTC we're synchronizing to doesn't.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 man/radeon.man        |  2 +-
 src/drmmode_display.c |  2 +-
 src/drmmode_display.h |  4 +++-
 src/radeon_dri2.c     | 18 +++++++-----------
 src/radeon_present.c  | 12 ++++--------
 5 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/man/radeon.man b/man/radeon.man
index 3e1723f21..1e9a7bebf 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -285,7 +285,7 @@ Set the default value of the per-output 'TearFree' property, which controls
 tearing prevention using the hardware page flipping mechanism. TearFree is
 on for any CRTC associated with one or more outputs with TearFree on. Two
 separate scanout buffers need to be allocated for each CRTC with TearFree
-on. While TearFree is on for any CRTC, it currently prevents clients from using
+on. While TearFree is on for any CRTC, it may prevent clients from using
 DRI page flipping. If this option is set, the default value of the property
 is 'on' or 'off' accordingly. If this option isn't set, the default value of the
 property is
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 6be6513af..d8031875b 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -3007,7 +3007,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client,
 	for (i = 0; i < config->num_crtc; i++) {
 		crtc = config->crtc[i];
 
-		if (!crtc->enabled)
+		if (!drmmode_crtc_can_flip(crtc))
 			continue;
 
 		flipdata->flip_count++;
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index 4378be86f..f859377c2 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -146,7 +146,9 @@ drmmode_crtc_can_flip(xf86CrtcPtr crtc)
     drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 
     return crtc->enabled &&
-	drmmode_crtc->pending_dpms_mode == DPMSModeOn;
+	drmmode_crtc->pending_dpms_mode == DPMSModeOn &&
+	!drmmode_crtc->rotate.bo &&
+	!drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo;
 }
 
 
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 70751b0bf..42ef9ae77 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -754,9 +754,10 @@ can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
 }
 
 static Bool
-can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
+can_flip(xf86CrtcPtr crtc, DrawablePtr draw,
 	 DRI2BufferPtr front, DRI2BufferPtr back)
 {
+    ScrnInfoPtr pScrn = crtc->scrn;
     RADEONInfoPtr info = RADEONPTR(pScrn);
     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
     int num_crtcs_on;
@@ -771,15 +772,10 @@ can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
 	return FALSE;
 
     for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
-	xf86CrtcPtr crtc = config->crtc[i];
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-
-	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
-	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
-	    return FALSE;
-
-	if (drmmode_crtc_can_flip(crtc))
+	if (drmmode_crtc_can_flip(config->crtc[i]))
 	    num_crtcs_on++;
+	else if (config->crtc[i] == crtc)
+	    return FALSE;
     }
 
     return num_crtcs_on > 0 && can_exchange(pScrn, draw, front, back);
@@ -859,7 +855,7 @@ static void radeon_dri2_frame_event_handler(xf86CrtcPtr crtc, uint32_t seq,
 
     switch (event->type) {
     case DRI2_FLIP:
-	if (can_flip(scrn, drawable, event->front, event->back) &&
+	if (can_flip(crtc, drawable, event->front, event->back) &&
 	    radeon_dri2_schedule_flip(crtc,
 				      event->client,
 				      drawable,
@@ -1352,7 +1348,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw,
     current_msc &= 0xffffffff;
 
     /* Flips need to be submitted one frame before */
-    if (can_flip(scrn, draw, front, back)) {
+    if (can_flip(crtc, draw, front, back)) {
 	swap_info->type = DRI2_FLIP;
 	flip = 1;
     }
diff --git a/src/radeon_present.c b/src/radeon_present.c
index 85da655db..4d43733e9 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -243,14 +243,7 @@ radeon_present_check_unflip(ScrnInfoPtr scrn)
 	return FALSE;
 
     for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
-	xf86CrtcPtr crtc = config->crtc[i];
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-
-	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
-	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
-	    return FALSE;
-
-	if (drmmode_crtc_can_flip(crtc))
+	if (drmmode_crtc_can_flip(config->crtc[i]))
 	    num_crtcs_on++;
     }
 
@@ -286,6 +279,9 @@ radeon_present_check_flip(RRCrtcPtr crtc, WindowPtr window, PixmapPtr pixmap,
 	radeon_present_get_pixmap_tiling_flags(info, screen_pixmap))
 	return FALSE;
 
+    if (!drmmode_crtc_can_flip(crtc->devPrivate))
+	return FALSE;
+
     return radeon_present_check_unflip(scrn);
 }
 
-- 
2.13.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* RE: [PATCH xf86-video-ati 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers
       [not found]     ` <20170731094808.2552-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
@ 2017-07-31 14:54       ` Deucher, Alexander
  2017-08-01  8:57       ` [PATCH xf86-video-ati v2 " Michel Dänzer
  1 sibling, 0 replies; 8+ messages in thread
From: Deucher, Alexander @ 2017-07-31 14:54 UTC (permalink / raw)
  To: 'Michel Dänzer', amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org] On Behalf
> Of Michel Dänzer
> Sent: Monday, July 31, 2017 5:48 AM
> To: amd-gfx@lists.freedesktop.org
> Subject: [PATCH xf86-video-ati 3/3] Allow DRI page flipping when some
> CRTCs use separate scanout buffers
> 
> From: Michel Dänzer <michel.daenzer@amd.com>
> 
> As long as the CRTC we're synchronizing to doesn't.
> 
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>

Series is:
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  man/radeon.man        |  2 +-
>  src/drmmode_display.c |  2 +-
>  src/drmmode_display.h |  4 +++-
>  src/radeon_dri2.c     | 18 +++++++-----------
>  src/radeon_present.c  | 12 ++++--------
>  5 files changed, 16 insertions(+), 22 deletions(-)
> 
> diff --git a/man/radeon.man b/man/radeon.man
> index 3e1723f21..1e9a7bebf 100644
> --- a/man/radeon.man
> +++ b/man/radeon.man
> @@ -285,7 +285,7 @@ Set the default value of the per-output 'TearFree'
> property, which controls
>  tearing prevention using the hardware page flipping mechanism. TearFree is
>  on for any CRTC associated with one or more outputs with TearFree on. Two
>  separate scanout buffers need to be allocated for each CRTC with TearFree
> -on. While TearFree is on for any CRTC, it currently prevents clients from
> using
> +on. While TearFree is on for any CRTC, it may prevent clients from using
>  DRI page flipping. If this option is set, the default value of the property
>  is 'on' or 'off' accordingly. If this option isn't set, the default value of the
>  property is
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 6be6513af..d8031875b 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -3007,7 +3007,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn,
> ClientPtr client,
>  	for (i = 0; i < config->num_crtc; i++) {
>  		crtc = config->crtc[i];
> 
> -		if (!crtc->enabled)
> +		if (!drmmode_crtc_can_flip(crtc))
>  			continue;
> 
>  		flipdata->flip_count++;
> diff --git a/src/drmmode_display.h b/src/drmmode_display.h
> index 4378be86f..f859377c2 100644
> --- a/src/drmmode_display.h
> +++ b/src/drmmode_display.h
> @@ -146,7 +146,9 @@ drmmode_crtc_can_flip(xf86CrtcPtr crtc)
>      drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> 
>      return crtc->enabled &&
> -	drmmode_crtc->pending_dpms_mode == DPMSModeOn;
> +	drmmode_crtc->pending_dpms_mode == DPMSModeOn &&
> +	!drmmode_crtc->rotate.bo &&
> +	!drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo;
>  }
> 
> 
> diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
> index 70751b0bf..42ef9ae77 100644
> --- a/src/radeon_dri2.c
> +++ b/src/radeon_dri2.c
> @@ -754,9 +754,10 @@ can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
>  }
> 
>  static Bool
> -can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
> +can_flip(xf86CrtcPtr crtc, DrawablePtr draw,
>  	 DRI2BufferPtr front, DRI2BufferPtr back)
>  {
> +    ScrnInfoPtr pScrn = crtc->scrn;
>      RADEONInfoPtr info = RADEONPTR(pScrn);
>      xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
>      int num_crtcs_on;
> @@ -771,15 +772,10 @@ can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
>  	return FALSE;
> 
>      for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
> -	xf86CrtcPtr crtc = config->crtc[i];
> -	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> -
> -	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
> -	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
> -	    return FALSE;
> -
> -	if (drmmode_crtc_can_flip(crtc))
> +	if (drmmode_crtc_can_flip(config->crtc[i]))
>  	    num_crtcs_on++;
> +	else if (config->crtc[i] == crtc)
> +	    return FALSE;
>      }
> 
>      return num_crtcs_on > 0 && can_exchange(pScrn, draw, front, back);
> @@ -859,7 +855,7 @@ static void
> radeon_dri2_frame_event_handler(xf86CrtcPtr crtc, uint32_t seq,
> 
>      switch (event->type) {
>      case DRI2_FLIP:
> -	if (can_flip(scrn, drawable, event->front, event->back) &&
> +	if (can_flip(crtc, drawable, event->front, event->back) &&
>  	    radeon_dri2_schedule_flip(crtc,
>  				      event->client,
>  				      drawable,
> @@ -1352,7 +1348,7 @@ static int radeon_dri2_schedule_swap(ClientPtr
> client, DrawablePtr draw,
>      current_msc &= 0xffffffff;
> 
>      /* Flips need to be submitted one frame before */
> -    if (can_flip(scrn, draw, front, back)) {
> +    if (can_flip(crtc, draw, front, back)) {
>  	swap_info->type = DRI2_FLIP;
>  	flip = 1;
>      }
> diff --git a/src/radeon_present.c b/src/radeon_present.c
> index 85da655db..4d43733e9 100644
> --- a/src/radeon_present.c
> +++ b/src/radeon_present.c
> @@ -243,14 +243,7 @@ radeon_present_check_unflip(ScrnInfoPtr scrn)
>  	return FALSE;
> 
>      for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
> -	xf86CrtcPtr crtc = config->crtc[i];
> -	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> -
> -	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
> -	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
> -	    return FALSE;
> -
> -	if (drmmode_crtc_can_flip(crtc))
> +	if (drmmode_crtc_can_flip(config->crtc[i]))
>  	    num_crtcs_on++;
>      }
> 
> @@ -286,6 +279,9 @@ radeon_present_check_flip(RRCrtcPtr crtc,
> WindowPtr window, PixmapPtr pixmap,
>  	radeon_present_get_pixmap_tiling_flags(info, screen_pixmap))
>  	return FALSE;
> 
> +    if (!drmmode_crtc_can_flip(crtc->devPrivate))
> +	return FALSE;
> +
>      return radeon_present_check_unflip(scrn);
>  }
> 
> --
> 2.13.3
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH xf86-video-ati v2 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers
       [not found]     ` <20170731094808.2552-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2017-07-31 14:54       ` Deucher, Alexander
@ 2017-08-01  8:57       ` Michel Dänzer
       [not found]         ` <20170801085737.25904-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  1 sibling, 1 reply; 8+ messages in thread
From: Michel Dänzer @ 2017-08-01  8:57 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

As long as the CRTC we're synchronizing to doesn't.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---

v2: Remove redundant checks from can_exchange which still prevented DRI2
    page flipping

 man/radeon.man        |  2 +-
 src/drmmode_display.c |  2 +-
 src/drmmode_display.h |  4 +++-
 src/radeon_dri2.c     | 30 +++++++-----------------------
 src/radeon_present.c  | 12 ++++--------
 5 files changed, 16 insertions(+), 34 deletions(-)

diff --git a/man/radeon.man b/man/radeon.man
index 3e1723f21..1e9a7bebf 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -285,7 +285,7 @@ Set the default value of the per-output 'TearFree' property, which controls
 tearing prevention using the hardware page flipping mechanism. TearFree is
 on for any CRTC associated with one or more outputs with TearFree on. Two
 separate scanout buffers need to be allocated for each CRTC with TearFree
-on. While TearFree is on for any CRTC, it currently prevents clients from using
+on. While TearFree is on for any CRTC, it may prevent clients from using
 DRI page flipping. If this option is set, the default value of the property
 is 'on' or 'off' accordingly. If this option isn't set, the default value of the
 property is
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 6be6513af..d8031875b 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -3007,7 +3007,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client,
 	for (i = 0; i < config->num_crtc; i++) {
 		crtc = config->crtc[i];
 
-		if (!crtc->enabled)
+		if (!drmmode_crtc_can_flip(crtc))
 			continue;
 
 		flipdata->flip_count++;
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index 4378be86f..f859377c2 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -146,7 +146,9 @@ drmmode_crtc_can_flip(xf86CrtcPtr crtc)
     drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 
     return crtc->enabled &&
-	drmmode_crtc->pending_dpms_mode == DPMSModeOn;
+	drmmode_crtc->pending_dpms_mode == DPMSModeOn &&
+	!drmmode_crtc->rotate.bo &&
+	!drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo;
 }
 
 
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 70751b0bf..4b059897e 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -720,18 +720,6 @@ can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
     struct dri2_buffer_priv *back_priv = back->driverPrivate;
     PixmapPtr front_pixmap;
     PixmapPtr back_pixmap = back_priv->pixmap;
-    xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
-    int i;
-
-    for (i = 0; i < xf86_config->num_crtc; i++) {
-	xf86CrtcPtr crtc = xf86_config->crtc[i];
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-
-	if (crtc->enabled &&
-	    (crtc->rotatedData ||
-	     drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo))
-	    return FALSE;
-    }
 
     if (!update_front(draw, front))
 	return FALSE;
@@ -754,9 +742,10 @@ can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
 }
 
 static Bool
-can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
+can_flip(xf86CrtcPtr crtc, DrawablePtr draw,
 	 DRI2BufferPtr front, DRI2BufferPtr back)
 {
+    ScrnInfoPtr pScrn = crtc->scrn;
     RADEONInfoPtr info = RADEONPTR(pScrn);
     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
     int num_crtcs_on;
@@ -771,15 +760,10 @@ can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
 	return FALSE;
 
     for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
-	xf86CrtcPtr crtc = config->crtc[i];
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-
-	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
-	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
-	    return FALSE;
-
-	if (drmmode_crtc_can_flip(crtc))
+	if (drmmode_crtc_can_flip(config->crtc[i]))
 	    num_crtcs_on++;
+	else if (config->crtc[i] == crtc)
+	    return FALSE;
     }
 
     return num_crtcs_on > 0 && can_exchange(pScrn, draw, front, back);
@@ -859,7 +843,7 @@ static void radeon_dri2_frame_event_handler(xf86CrtcPtr crtc, uint32_t seq,
 
     switch (event->type) {
     case DRI2_FLIP:
-	if (can_flip(scrn, drawable, event->front, event->back) &&
+	if (can_flip(crtc, drawable, event->front, event->back) &&
 	    radeon_dri2_schedule_flip(crtc,
 				      event->client,
 				      drawable,
@@ -1352,7 +1336,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw,
     current_msc &= 0xffffffff;
 
     /* Flips need to be submitted one frame before */
-    if (can_flip(scrn, draw, front, back)) {
+    if (can_flip(crtc, draw, front, back)) {
 	swap_info->type = DRI2_FLIP;
 	flip = 1;
     }
diff --git a/src/radeon_present.c b/src/radeon_present.c
index 85da655db..4d43733e9 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -243,14 +243,7 @@ radeon_present_check_unflip(ScrnInfoPtr scrn)
 	return FALSE;
 
     for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
-	xf86CrtcPtr crtc = config->crtc[i];
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-
-	if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
-	    drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
-	    return FALSE;
-
-	if (drmmode_crtc_can_flip(crtc))
+	if (drmmode_crtc_can_flip(config->crtc[i]))
 	    num_crtcs_on++;
     }
 
@@ -286,6 +279,9 @@ radeon_present_check_flip(RRCrtcPtr crtc, WindowPtr window, PixmapPtr pixmap,
 	radeon_present_get_pixmap_tiling_flags(info, screen_pixmap))
 	return FALSE;
 
+    if (!drmmode_crtc_can_flip(crtc->devPrivate))
+	return FALSE;
+
     return radeon_present_check_unflip(scrn);
 }
 
-- 
2.13.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH xf86-video-ati v2 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates
       [not found] ` <20170731094808.2552-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2017-07-31  9:48   ` [PATCH xf86-video-ati 2/3] Add drmmode_crtc_can_flip helper Michel Dänzer
  2017-07-31  9:48   ` [PATCH xf86-video-ati 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers Michel Dänzer
@ 2017-08-01  9:19   ` Michel Dänzer
       [not found]     ` <20170801091959.28685-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2 siblings, 1 reply; 8+ messages in thread
From: Michel Dänzer @ 2017-08-01  9:19 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

Preparation for following changes, no functional change intended yet.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com> # v1
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---

v2: Add drmmode_screen_damage_destroy to prevent use-after-free on
    server shutdown

 src/drmmode_display.c | 21 ++++++++++++++-------
 src/radeon_kms.c      |  2 +-
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 245a92fb0..309ccbd6d 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -529,11 +529,8 @@ drmmode_crtc_scanout_free(drmmode_crtc_private_ptr drmmode_crtc)
 					     &drmmode_crtc->scanout[1]);
 	}
 
-	if (drmmode_crtc->scanout_damage) {
+	if (drmmode_crtc->scanout_damage)
 		DamageDestroy(drmmode_crtc->scanout_damage);
-		drmmode_crtc->scanout_damage = NULL;
-		RegionUninit(&drmmode_crtc->scanout_last_region);
-	}
 }
 
 void
@@ -605,6 +602,15 @@ radeon_screen_damage_report(DamagePtr damage, RegionPtr region, void *closure)
 	damage->damage.data = NULL;
 }
 
+static void
+drmmode_screen_damage_destroy(DamagePtr damage, void *closure)
+{
+	drmmode_crtc_private_ptr drmmode_crtc = closure;
+
+	drmmode_crtc->scanout_damage = NULL;
+	RegionUninit(&drmmode_crtc->scanout_last_region);
+}
+
 static Bool
 drmmode_can_use_hw_cursor(xf86CrtcPtr crtc)
 {
@@ -793,9 +799,10 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
 		if (!drmmode_crtc->scanout_damage) {
 			drmmode_crtc->scanout_damage =
 				DamageCreate(radeon_screen_damage_report,
-					     NULL, DamageReportRawRegion,
-					     TRUE, screen, NULL);
-			DamageRegister(&screen->GetScreenPixmap(screen)->drawable,
+					     drmmode_screen_damage_destroy,
+					     DamageReportRawRegion,
+					     TRUE, screen, drmmode_crtc);
+			DamageRegister(&screen->root->drawable,
 				       drmmode_crtc->scanout_damage);
 		}
 
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index b22c98406..f76d76a91 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -981,7 +981,7 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id)
 	GCPtr gc = GetScratchGC(pDraw->depth, pScreen);
 
 	ValidateGC(pDraw, gc);
-	(*gc->ops->CopyArea)(&pScreen->GetScreenPixmap(pScreen)->drawable,
+	(*gc->ops->CopyArea)(&pScreen->GetWindowPixmap(pScreen->root)->drawable,
 			     pDraw, gc,
 			     xf86_crtc->x + extents.x1, xf86_crtc->y + extents.y1,
 			     extents.x2 - extents.x1, extents.y2 - extents.y1,
-- 
2.13.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH xf86-video-ati v2 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers
       [not found]         ` <20170801085737.25904-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
@ 2017-08-01 13:32           ` Alex Deucher
  0 siblings, 0 replies; 8+ messages in thread
From: Alex Deucher @ 2017-08-01 13:32 UTC (permalink / raw)
  To: Michel Dänzer; +Cc: amd-gfx list

On Tue, Aug 1, 2017 at 4:57 AM, Michel Dänzer <michel@daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer@amd.com>
>
> As long as the CRTC we're synchronizing to doesn't.
>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
> ---
>
> v2: Remove redundant checks from can_exchange which still prevented DRI2
>     page flipping

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

>
>  man/radeon.man        |  2 +-
>  src/drmmode_display.c |  2 +-
>  src/drmmode_display.h |  4 +++-
>  src/radeon_dri2.c     | 30 +++++++-----------------------
>  src/radeon_present.c  | 12 ++++--------
>  5 files changed, 16 insertions(+), 34 deletions(-)
>
> diff --git a/man/radeon.man b/man/radeon.man
> index 3e1723f21..1e9a7bebf 100644
> --- a/man/radeon.man
> +++ b/man/radeon.man
> @@ -285,7 +285,7 @@ Set the default value of the per-output 'TearFree' property, which controls
>  tearing prevention using the hardware page flipping mechanism. TearFree is
>  on for any CRTC associated with one or more outputs with TearFree on. Two
>  separate scanout buffers need to be allocated for each CRTC with TearFree
> -on. While TearFree is on for any CRTC, it currently prevents clients from using
> +on. While TearFree is on for any CRTC, it may prevent clients from using
>  DRI page flipping. If this option is set, the default value of the property
>  is 'on' or 'off' accordingly. If this option isn't set, the default value of the
>  property is
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 6be6513af..d8031875b 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -3007,7 +3007,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client,
>         for (i = 0; i < config->num_crtc; i++) {
>                 crtc = config->crtc[i];
>
> -               if (!crtc->enabled)
> +               if (!drmmode_crtc_can_flip(crtc))
>                         continue;
>
>                 flipdata->flip_count++;
> diff --git a/src/drmmode_display.h b/src/drmmode_display.h
> index 4378be86f..f859377c2 100644
> --- a/src/drmmode_display.h
> +++ b/src/drmmode_display.h
> @@ -146,7 +146,9 @@ drmmode_crtc_can_flip(xf86CrtcPtr crtc)
>      drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
>
>      return crtc->enabled &&
> -       drmmode_crtc->pending_dpms_mode == DPMSModeOn;
> +       drmmode_crtc->pending_dpms_mode == DPMSModeOn &&
> +       !drmmode_crtc->rotate.bo &&
> +       !drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo;
>  }
>
>
> diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
> index 70751b0bf..4b059897e 100644
> --- a/src/radeon_dri2.c
> +++ b/src/radeon_dri2.c
> @@ -720,18 +720,6 @@ can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
>      struct dri2_buffer_priv *back_priv = back->driverPrivate;
>      PixmapPtr front_pixmap;
>      PixmapPtr back_pixmap = back_priv->pixmap;
> -    xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
> -    int i;
> -
> -    for (i = 0; i < xf86_config->num_crtc; i++) {
> -       xf86CrtcPtr crtc = xf86_config->crtc[i];
> -       drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> -
> -       if (crtc->enabled &&
> -           (crtc->rotatedData ||
> -            drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo))
> -           return FALSE;
> -    }
>
>      if (!update_front(draw, front))
>         return FALSE;
> @@ -754,9 +742,10 @@ can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
>  }
>
>  static Bool
> -can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
> +can_flip(xf86CrtcPtr crtc, DrawablePtr draw,
>          DRI2BufferPtr front, DRI2BufferPtr back)
>  {
> +    ScrnInfoPtr pScrn = crtc->scrn;
>      RADEONInfoPtr info = RADEONPTR(pScrn);
>      xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
>      int num_crtcs_on;
> @@ -771,15 +760,10 @@ can_flip(ScrnInfoPtr pScrn, DrawablePtr draw,
>         return FALSE;
>
>      for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
> -       xf86CrtcPtr crtc = config->crtc[i];
> -       drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> -
> -       if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
> -           drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
> -           return FALSE;
> -
> -       if (drmmode_crtc_can_flip(crtc))
> +       if (drmmode_crtc_can_flip(config->crtc[i]))
>             num_crtcs_on++;
> +       else if (config->crtc[i] == crtc)
> +           return FALSE;
>      }
>
>      return num_crtcs_on > 0 && can_exchange(pScrn, draw, front, back);
> @@ -859,7 +843,7 @@ static void radeon_dri2_frame_event_handler(xf86CrtcPtr crtc, uint32_t seq,
>
>      switch (event->type) {
>      case DRI2_FLIP:
> -       if (can_flip(scrn, drawable, event->front, event->back) &&
> +       if (can_flip(crtc, drawable, event->front, event->back) &&
>             radeon_dri2_schedule_flip(crtc,
>                                       event->client,
>                                       drawable,
> @@ -1352,7 +1336,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw,
>      current_msc &= 0xffffffff;
>
>      /* Flips need to be submitted one frame before */
> -    if (can_flip(scrn, draw, front, back)) {
> +    if (can_flip(crtc, draw, front, back)) {
>         swap_info->type = DRI2_FLIP;
>         flip = 1;
>      }
> diff --git a/src/radeon_present.c b/src/radeon_present.c
> index 85da655db..4d43733e9 100644
> --- a/src/radeon_present.c
> +++ b/src/radeon_present.c
> @@ -243,14 +243,7 @@ radeon_present_check_unflip(ScrnInfoPtr scrn)
>         return FALSE;
>
>      for (i = 0, num_crtcs_on = 0; i < config->num_crtc; i++) {
> -       xf86CrtcPtr crtc = config->crtc[i];
> -       drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> -
> -       if (!drmmode_crtc || drmmode_crtc->rotate.bo ||
> -           drmmode_crtc->scanout[drmmode_crtc->scanout_id].bo)
> -           return FALSE;
> -
> -       if (drmmode_crtc_can_flip(crtc))
> +       if (drmmode_crtc_can_flip(config->crtc[i]))
>             num_crtcs_on++;
>      }
>
> @@ -286,6 +279,9 @@ radeon_present_check_flip(RRCrtcPtr crtc, WindowPtr window, PixmapPtr pixmap,
>         radeon_present_get_pixmap_tiling_flags(info, screen_pixmap))
>         return FALSE;
>
> +    if (!drmmode_crtc_can_flip(crtc->devPrivate))
> +       return FALSE;
> +
>      return radeon_present_check_unflip(scrn);
>  }
>
> --
> 2.13.3
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH xf86-video-ati v2 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates
       [not found]     ` <20170801091959.28685-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
@ 2017-08-01 14:10       ` Alex Deucher
  0 siblings, 0 replies; 8+ messages in thread
From: Alex Deucher @ 2017-08-01 14:10 UTC (permalink / raw)
  To: Michel Dänzer; +Cc: amd-gfx list

On Tue, Aug 1, 2017 at 5:19 AM, Michel Dänzer <michel@daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer@amd.com>
>
> Preparation for following changes, no functional change intended yet.
>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> # v1
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
> ---
>
> v2: Add drmmode_screen_damage_destroy to prevent use-after-free on
>     server shutdown

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

>
>  src/drmmode_display.c | 21 ++++++++++++++-------
>  src/radeon_kms.c      |  2 +-
>  2 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 245a92fb0..309ccbd6d 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -529,11 +529,8 @@ drmmode_crtc_scanout_free(drmmode_crtc_private_ptr drmmode_crtc)
>                                              &drmmode_crtc->scanout[1]);
>         }
>
> -       if (drmmode_crtc->scanout_damage) {
> +       if (drmmode_crtc->scanout_damage)
>                 DamageDestroy(drmmode_crtc->scanout_damage);
> -               drmmode_crtc->scanout_damage = NULL;
> -               RegionUninit(&drmmode_crtc->scanout_last_region);
> -       }
>  }
>
>  void
> @@ -605,6 +602,15 @@ radeon_screen_damage_report(DamagePtr damage, RegionPtr region, void *closure)
>         damage->damage.data = NULL;
>  }
>
> +static void
> +drmmode_screen_damage_destroy(DamagePtr damage, void *closure)
> +{
> +       drmmode_crtc_private_ptr drmmode_crtc = closure;
> +
> +       drmmode_crtc->scanout_damage = NULL;
> +       RegionUninit(&drmmode_crtc->scanout_last_region);
> +}
> +
>  static Bool
>  drmmode_can_use_hw_cursor(xf86CrtcPtr crtc)
>  {
> @@ -793,9 +799,10 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
>                 if (!drmmode_crtc->scanout_damage) {
>                         drmmode_crtc->scanout_damage =
>                                 DamageCreate(radeon_screen_damage_report,
> -                                            NULL, DamageReportRawRegion,
> -                                            TRUE, screen, NULL);
> -                       DamageRegister(&screen->GetScreenPixmap(screen)->drawable,
> +                                            drmmode_screen_damage_destroy,
> +                                            DamageReportRawRegion,
> +                                            TRUE, screen, drmmode_crtc);
> +                       DamageRegister(&screen->root->drawable,
>                                        drmmode_crtc->scanout_damage);
>                 }
>
> diff --git a/src/radeon_kms.c b/src/radeon_kms.c
> index b22c98406..f76d76a91 100644
> --- a/src/radeon_kms.c
> +++ b/src/radeon_kms.c
> @@ -981,7 +981,7 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id)
>         GCPtr gc = GetScratchGC(pDraw->depth, pScreen);
>
>         ValidateGC(pDraw, gc);
> -       (*gc->ops->CopyArea)(&pScreen->GetScreenPixmap(pScreen)->drawable,
> +       (*gc->ops->CopyArea)(&pScreen->GetWindowPixmap(pScreen->root)->drawable,
>                              pDraw, gc,
>                              xf86_crtc->x + extents.x1, xf86_crtc->y + extents.y1,
>                              extents.x2 - extents.x1, extents.y2 - extents.y1,
> --
> 2.13.3
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-08-01 14:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-31  9:48 [PATCH xf86-video-ati 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates Michel Dänzer
     [not found] ` <20170731094808.2552-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-07-31  9:48   ` [PATCH xf86-video-ati 2/3] Add drmmode_crtc_can_flip helper Michel Dänzer
2017-07-31  9:48   ` [PATCH xf86-video-ati 3/3] Allow DRI page flipping when some CRTCs use separate scanout buffers Michel Dänzer
     [not found]     ` <20170731094808.2552-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-07-31 14:54       ` Deucher, Alexander
2017-08-01  8:57       ` [PATCH xf86-video-ati v2 " Michel Dänzer
     [not found]         ` <20170801085737.25904-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-08-01 13:32           ` Alex Deucher
2017-08-01  9:19   ` [PATCH xf86-video-ati v2 1/3] Use root window (pixmap) instead of screen pixmap for scanout updates Michel Dänzer
     [not found]     ` <20170801091959.28685-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-08-01 14:10       ` Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.