xf86-video-intel: 3 commits - src/intel_display.c src/intel_dri.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Sep 27 06:47:02 PDT 2012


 src/intel_display.c |    2 +-
 src/intel_dri.c     |   10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

New commits:
commit feef53005b57d6b4489a15f8d0db8245dcb0cfaa
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Sep 27 13:36:55 2012 +0100

    uxa: Do not attempt to pageflip whilst not master
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_dri.c b/src/intel_dri.c
index ccb10d1..b0e4830 100644
--- a/src/intel_dri.c
+++ b/src/intel_dri.c
@@ -932,6 +932,9 @@ can_exchange(DrawablePtr drawable, DRI2BufferPtr front, DRI2BufferPtr back)
 	struct intel_pixmap *front_intel = intel_get_pixmap_private(front_pixmap);
 	struct intel_pixmap *back_intel = intel_get_pixmap_private(back_pixmap);
 
+	if (!pScrn->vtSema)
+		return FALSE;
+
 	if (I830DRI2DrawablePipe(draw) < 0)
 		return FALSE;
 
commit 5a45cbacb777e478d8fbda9223b0fb5c705d7249
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Sep 27 13:31:27 2012 +0100

    uxa: Confirm the pipe is alive before flipping
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_display.c b/src/intel_display.c
index 60af415..ab73e24 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -1575,7 +1575,7 @@ intel_do_pageflip(intel_screen_private *intel,
 	mode->fe_tv_usec = 0;
 
 	for (i = 0; i < config->num_crtc; i++) {
-		if (!config->crtc[i]->enabled)
+		if (!intel_crtc_on(config->crtc[i]))
 			continue;
 
 		mode->flip_info = flip_info;
commit edc5b7f741a4bb8e9a58b5eb2201fa9304f94ef7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Sep 27 13:27:20 2012 +0100

    uxa/dri: Confirm Drawable is still attached to an active pipe before flipping
    
    If we schedule a flip to happen on a far distant vblank, it is possible
    for us to disable the pipes with a modeset, whilst maintaining the fb
    size, or with a DPMS command. If the pipe is disabled and we still try
    to flip, then we trigger an EINVAL error from the kernel.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_dri.c b/src/intel_dri.c
index 8cab73f..ccb10d1 100644
--- a/src/intel_dri.c
+++ b/src/intel_dri.c
@@ -455,7 +455,7 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion,
 		BoxPtr box;
 		BoxRec crtcbox;
 		int y1, y2;
-		int pipe = -1, event, load_scan_lines_pipe;
+		int event, load_scan_lines_pipe;
 		xf86CrtcPtr crtc;
 		Bool full_height = FALSE;
 
@@ -467,7 +467,7 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion,
 		 * buffer
 		 */
 		if (crtc != NULL && !crtc->rotatedData) {
-			pipe = intel_crtc_to_pipe(crtc);
+			int pipe = intel_crtc_to_pipe(crtc);
 
 			/*
 			 * Make sure we don't wait for a scanline that will
@@ -932,6 +932,9 @@ can_exchange(DrawablePtr drawable, DRI2BufferPtr front, DRI2BufferPtr back)
 	struct intel_pixmap *front_intel = intel_get_pixmap_private(front_pixmap);
 	struct intel_pixmap *back_intel = intel_get_pixmap_private(back_pixmap);
 
+	if (I830DRI2DrawablePipe(draw) < 0)
+		return FALSE;
+
 	if (!DRI2CanFlip(drawable))
 		return FALSE;
 


More information about the xorg-commit mailing list