[xorg-x11-drv-intel/f15/master] actually make copy-fb build again

Ray Strode rstrode at fedoraproject.org
Mon Mar 14 16:44:23 UTC 2011


commit 7d2f33391676f459015f666bcfe3a578a8c9a4fc
Author: Ray Strode <rstrode at redhat.com>
Date:   Mon Mar 14 12:44:03 2011 -0400

    actually make copy-fb build again

 copy-fb.patch |  146 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 82 insertions(+), 64 deletions(-)
---
diff --git a/copy-fb.patch b/copy-fb.patch
index df1e589..9b0f004 100644
--- a/copy-fb.patch
+++ b/copy-fb.patch
@@ -1,65 +1,46 @@
-diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.0/src/drmmode_display.c
---- xf86-video-intel-2.10.0/src/drmmode_display.c.jx	2010-02-08 11:23:25.000000000 -0500
-+++ xf86-video-intel-2.10.0/src/drmmode_display.c	2010-02-08 11:23:46.000000000 -0500
-@@ -35,6 +35,8 @@
- #include <unistd.h>
- #include <errno.h>
+diff -up xf86-video-intel-2.14.0.bak/src/intel_display.c.copy-fb xf86-video-intel-2.14.0.bak/src/intel_display.c
+--- xf86-video-intel-2.14.0.bak/src/intel_display.c.copy-fb	2010-12-16 06:42:43.000000000 -0500
++++ xf86-video-intel-2.14.0.bak/src/intel_display.c	2011-03-11 12:55:21.370817438 -0500
+@@ -29,6 +29,7 @@
+ #include "config.h"
+ #endif
  
 +#include <sys/ioctl.h>
-+
- #include "xorgVersion.h"
- 
- #include "i830.h"
-@@ -1375,6 +1377,8 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scr
- 	if (old_front)
- 		i830_free_memory(scrn, old_front);
- 
-+	scrn->canDoBGNoneRoot = TRUE;
-+
- 	return TRUE;
- 
-  fail:
-@@ -1414,6 +1418,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
- 		return FALSE;
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+@@ -1645,6 +1657,99 @@ intel_mode_remove_fb(intel_screen_privat
  	}
- 
-+	scrn->canDoBGNoneRoot = TRUE;
- 	xf86CrtcSetSizeRange(scrn, 320, 200, drmmode->mode_res->max_width,
- 			     drmmode->mode_res->max_height);
- 	for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
-@@ -1458,3 +1463,98 @@ void drmmode_closefb(ScrnInfoPtr scrn)
- 	drmModeRmFB(drmmode->fd, drmmode->fb_id);
- 	drmmode->fb_id = 0;
  }
-+
+ 
 +static PixmapPtr
-+drmmode_create_pixmap_for_fbcon(ScrnInfoPtr scrn)
++intel_create_pixmap_for_fbcon(ScrnInfoPtr scrn)
 +{
 +	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
-+	drmmode_crtc_private_ptr drmmode_crtc = xf86_config->crtc[0]->driver_private;
++	struct intel_crtc *intel_crtc = xf86_config->crtc[0]->driver_private;
 +	ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
-+	drmmode_ptr drmmode = drmmode_crtc->drmmode;
 +	intel_screen_private *intel = intel_get_screen_private(scrn);
-+	drmModeFBPtr fbcon;
++	struct intel_mode *mode = intel->modes;
++	drmModeFBPtr fbcon = NULL;
 +	struct drm_gem_flink flink;
 +	drm_intel_bo *bo;
 +	PixmapPtr pixmap = NULL;
 +	int i;
 +
-+	for (i = 0; i < drmmode->mode_res->count_crtcs; i++) {
-+		drmmode_crtc = xf86_config->crtc[i]->driver_private;
-+		if (drmmode_crtc->mode_crtc->buffer_id == 0)
++	for (i = 0; i < mode->mode_res->count_crtcs; i++) {
++		intel_crtc = xf86_config->crtc[i]->driver_private;
++		if (intel_crtc->mode_crtc->buffer_id == 0)
 +			continue;
-+		fbcon = drmModeGetFB(drmmode->fd,
-+				     drmmode_crtc->mode_crtc->buffer_id);
++		fbcon = drmModeGetFB(mode->fd,
++				     intel_crtc->mode_crtc->buffer_id);
 +		if (fbcon != NULL)
 +			break;
 +	}
-+	if (i == drmmode->mode_res->count_crtcs)
++	if (fbcon == NULL)
 +		return NULL;
 +
 +	flink.handle = fbcon->handle;
-+	if (ioctl(drmmode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
++	if (ioctl(mode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
 +		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't flink fbcon handle\n");
 +		return NULL;
@@ -83,21 +64,21 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
 +		return NULL;
 +	}
 +
-+	i830_set_pixmap_bo(pixmap, bo);
++	intel_set_pixmap_bo(pixmap, bo);
 +	drm_intel_bo_unreference(bo);
 +	drmModeFreeFB(fbcon);
 +
 +	return pixmap;
 +}
 +
-+void drmmode_copy_fb(ScrnInfoPtr scrn)
++void intel_copy_fb(ScrnInfoPtr scrn)
 +{
 +	ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
 +	intel_screen_private *intel = intel_get_screen_private(scrn);
 +	PixmapPtr src, dst;
 +	unsigned int pitch = scrn->displayWidth * intel->cpp;
 +
-+	src = drmmode_create_pixmap_for_fbcon(scrn);
++	src = intel_create_pixmap_for_fbcon(scrn);
 +	if (src == NULL) {
 +		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't create pixmap for fbcon\n");
@@ -110,7 +91,7 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
 +				     scrn->depth, scrn->bitsPerPixel,
 +				     pitch,
 +				     NULL);
-+	i830_set_pixmap_bo(dst, intel->front_buffer->bo);
++	intel_set_pixmap_bo(dst, intel->front_buffer);
 +
 +	intel->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES);
 +
@@ -119,33 +100,70 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
 +
 +	intel->uxa_driver->done_copy(dst);
 +
-+	/* I830EmitFlush(scrn); */
-+	intel_batch_submit(scrn);
++	intel_batch_submit(scrn, TRUE);
 +
 +	(*pScreen->DestroyPixmap)(src);
 +	(*pScreen->DestroyPixmap)(dst);
 +}
 +
-diff -up xf86-video-intel-2.10.0/src/i830_driver.c.jx xf86-video-intel-2.10.0/src/i830_driver.c
---- xf86-video-intel-2.10.0/src/i830_driver.c.jx	2010-01-04 17:09:52.000000000 -0500
-+++ xf86-video-intel-2.10.0/src/i830_driver.c	2010-02-08 11:23:46.000000000 -0500
-@@ -1507,6 +1507,8 @@ static Bool I830EnterVT(int scrnIndex, i
- 	if (IS_I965G(intel))
- 		gen4_render_state_init(scrn);
+ void
+ intel_mode_fini(intel_screen_private *intel)
+ {
+diff -up xf86-video-intel-2.14.0.bak/src/intel_driver.c.copy-fb xf86-video-intel-2.14.0.bak/src/intel_driver.c
+--- xf86-video-intel-2.14.0.bak/src/intel_driver.c.copy-fb	2011-01-03 18:06:09.000000000 -0500
++++ xf86-video-intel-2.14.0.bak/src/intel_driver.c	2011-03-11 15:01:41.405246824 -0500
+@@ -960,6 +960,9 @@ I830ScreenInit(int scrnIndex, ScreenPtr 
+ #endif
+ 	struct pci_device *const device = intel->PciInfo;
+ 	int fb_bar = IS_GEN2(intel) ? 0 : 2;
++	int result;
++
++	screen->canDoBGNoneRoot = TRUE;
+ 
+ 	/*
+ 	 * The "VideoRam" config file parameter specifies the maximum amount of
+@@ -1083,9 +1086,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr 
+ 	 * later memory should be bound when allocating, e.g rotate_mem */
+ 	scrn->vtSema = TRUE;
+ 
+-	if (!I830EnterVT(scrnIndex, 0))
+-		return FALSE;
+-
+ 	intel->BlockHandler = screen->BlockHandler;
+ 	screen->BlockHandler = I830BlockHandler;
+ 
+@@ -1159,7 +1159,12 @@ I830ScreenInit(int scrnIndex, ScreenPtr 
+ 	I830UeventInit(scrn);
+ #endif
+ 
+-	return uxa_resources_init(screen);
++	result = uxa_resources_init(screen);
++
++	if (!I830EnterVT(scrnIndex, 0))
++		return FALSE;
++
++	return result;
+ }
+ 
+ static void i830AdjustFrame(int scrnIndex, int x, int y, int flags)
+@@ -1222,6 +1227,8 @@ static Bool I830EnterVT(int scrnIndex, i
+ 
+ 	intel_set_gem_max_sizes(scrn);
  
-+	drmmode_copy_fb(scrn);
++	intel_copy_fb(scrn);
 +
  	if (!xf86SetDesiredModes(scrn))
  		return FALSE;
  
-diff -up xf86-video-intel-2.10.0/src/i830.h.jx xf86-video-intel-2.10.0/src/i830.h
---- xf86-video-intel-2.10.0/src/i830.h.jx	2010-01-04 17:09:52.000000000 -0500
-+++ xf86-video-intel-2.10.0/src/i830.h	2010-02-08 11:23:46.000000000 -0500
-@@ -430,6 +430,7 @@ extern void drmmode_closefb(ScrnInfoPtr 
- extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr * bufmgr,
- 					 xf86CrtcPtr crtc);
- extern int drmmode_output_dpms_status(xf86OutputPtr output);
-+extern void drmmode_copy_fb(ScrnInfoPtr scrn);
- extern int drmmode_crtc_id(xf86CrtcPtr crtc);
- void drmmode_crtc_set_cursor_bo(xf86CrtcPtr crtc, dri_bo * cursor);
+diff -up xf86-video-intel-2.14.0.bak/src/intel.h.copy-fb xf86-video-intel-2.14.0.bak/src/intel.h
+--- xf86-video-intel-2.14.0.bak/src/intel.h.copy-fb	2011-01-04 09:30:57.000000000 -0500
++++ xf86-video-intel-2.14.0.bak/src/intel.h	2011-03-11 12:39:40.637186138 -0500
+@@ -501,6 +501,7 @@ extern void intel_mode_fini(intel_screen
+ extern int intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc);
+ extern int intel_crtc_id(xf86CrtcPtr crtc);
+ extern int intel_output_dpms_status(xf86OutputPtr output);
++extern void intel_copy_fb(ScrnInfoPtr scrn);
  
+ extern Bool intel_do_pageflip(intel_screen_private *intel,
+ 			      dri_bo *new_front,
+


More information about the scm-commits mailing list