diff --git a/packages/x11/driver/xf86-video-intel/build b/packages/x11/driver/xf86-video-intel/build index e806661c96..657d198034 100755 --- a/packages/x11/driver/xf86-video-intel/build +++ b/packages/x11/driver/xf86-video-intel/build @@ -9,8 +9,6 @@ $SCRIPTS/build xorg-server xorg_drv_configure_prepend cd $PKG_BUILD - -automake ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=/usr \ diff --git a/packages/x11/driver/xf86-video-intel/patches/copy-fb.diff b/packages/x11/driver/xf86-video-intel/patches/copy-fb.diff deleted file mode 100644 index df1e589728..0000000000 --- a/packages/x11/driver/xf86-video-intel/patches/copy-fb.diff +++ /dev/null @@ -1,151 +0,0 @@ -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 - #include - -+#include -+ - #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; - } - -+ 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) -+{ -+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); -+ drmmode_crtc_private_ptr drmmode_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 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) -+ continue; -+ fbcon = drmModeGetFB(drmmode->fd, -+ drmmode_crtc->mode_crtc->buffer_id); -+ if (fbcon != NULL) -+ break; -+ } -+ if (i == drmmode->mode_res->count_crtcs) -+ return NULL; -+ -+ flink.handle = fbcon->handle; -+ if (ioctl(drmmode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Couldn't flink fbcon handle\n"); -+ return NULL; -+ } -+ -+ bo = drm_intel_bo_gem_create_from_name(intel->bufmgr, -+ "fbcon", flink.name); -+ if (bo == NULL) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Couldn't allocate bo for fbcon handle\n"); -+ return NULL; -+ } -+ -+ pixmap = GetScratchPixmapHeader(pScreen, -+ fbcon->width, fbcon->height, -+ fbcon->depth, fbcon->bpp, -+ fbcon->pitch, NULL); -+ if (pixmap == NULL) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Couldn't allocate pixmap fbcon contents\n"); -+ return NULL; -+ } -+ -+ i830_set_pixmap_bo(pixmap, bo); -+ drm_intel_bo_unreference(bo); -+ drmModeFreeFB(fbcon); -+ -+ return pixmap; -+} -+ -+void drmmode_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); -+ if (src == NULL) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Couldn't create pixmap for fbcon\n"); -+ return; -+ } -+ -+ /* We dont have a screen Pixmap yet */ -+ dst = GetScratchPixmapHeader(pScreen, -+ scrn->virtualX, scrn->virtualY, -+ scrn->depth, scrn->bitsPerPixel, -+ pitch, -+ NULL); -+ i830_set_pixmap_bo(dst, intel->front_buffer->bo); -+ -+ intel->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES); -+ -+ intel->uxa_driver->copy(dst, 0, 0, 0, 0, -+ scrn->virtualX, scrn->virtualY); -+ -+ intel->uxa_driver->done_copy(dst); -+ -+ /* I830EmitFlush(scrn); */ -+ intel_batch_submit(scrn); -+ -+ (*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); - -+ drmmode_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 --git a/packages/x11/driver/xf86-video-intel/patches/uevent.diff b/packages/x11/driver/xf86-video-intel/patches/uevent.diff deleted file mode 100644 index b978d4774c..0000000000 --- a/packages/x11/driver/xf86-video-intel/patches/uevent.diff +++ /dev/null @@ -1,146 +0,0 @@ -diff -up xf86-video-intel-2.10.0/src/i830_driver.c.dave xf86-video-intel-2.10.0/src/i830_driver.c ---- xf86-video-intel-2.10.0/src/i830_driver.c.dave 2010-01-13 18:48:49.000000000 +1000 -+++ xf86-video-intel-2.10.0/src/i830_driver.c 2010-01-13 18:51:09.000000000 +1000 -@@ -83,6 +83,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. - #include "i915_drm.h" - #include - -+#include "libudev.h" -+ - #define BIT(x) (1 << (x)) - #define MAX(a,b) ((a) > (b) ? (a) : (b)) - #define NB_OF(x) (sizeof (x) / sizeof (*x)) -@@ -1167,6 +1169,80 @@ int i830_crtc_to_pipe(xf86CrtcPtr crtc) - return drmmode_get_pipe_from_crtc_id(intel->bufmgr, crtc); - } - -+static void -+I830HandleUEvents(int fd, void *closure) -+{ -+ ScrnInfoPtr scrn = closure; -+ intel_screen_private *intel = intel_get_screen_private(scrn); -+ struct udev_device *dev; -+ -+ dev = udev_monitor_receive_device(intel->uevent_monitor); -+ if (!dev) -+ return; -+ -+ /* -+ * technically we should inspect the event to see that it's a hotplug. -+ * but we know it's a hotplug, we don't get events for anything else. -+ * XXX but we should definitely trim by drm node -+ */ -+ -+ RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE); -+ -+ udev_device_unref(dev); -+} -+ -+static void -+I830UeventInit(ScrnInfoPtr scrn) -+{ -+ intel_screen_private *intel = intel_get_screen_private(scrn); -+ struct udev *u; -+ struct udev_monitor *mon; -+ -+ u = udev_new(); -+ if (!u) -+ return; -+ -+ mon = udev_monitor_new_from_netlink(u, "udev"); -+ -+ if (!mon) { -+ udev_unref(u); -+ return; -+ } -+ -+ if (udev_monitor_filter_add_match_subsystem_devtype(mon, -+ "drm", -+ "drm_minor") < 0 || -+ udev_monitor_enable_receiving(mon) < 0) -+ { -+ udev_monitor_unref(mon); -+ udev_unref(u); -+ return; -+ } -+ -+ intel->uevent_handler = -+ xf86AddGeneralHandler(udev_monitor_get_fd(mon), -+ I830HandleUEvents, -+ scrn); -+ -+ intel->uevent_monitor = mon; -+} -+ -+static void -+I830UeventFini(ScrnInfoPtr scrn) -+{ -+ intel_screen_private *intel = intel_get_screen_private(scrn); -+ -+ if (intel->uevent_handler) -+ { -+ struct udev *u = udev_monitor_get_udev(intel->uevent_monitor); -+ -+ xf86RemoveGeneralHandler(intel->uevent_handler); -+ -+ udev_monitor_unref(intel->uevent_monitor); -+ udev_unref(u); -+ } -+} -+ - static Bool - I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) - { -@@ -1425,6 +1501,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr - - intel->suspended = FALSE; - -+ I830UeventInit(scrn); -+ - return TRUE; - } - -@@ -1529,7 +1607,8 @@ static Bool I830CloseScreen(int scrnInde - { - ScrnInfoPtr scrn = xf86Screens[scrnIndex]; - intel_screen_private *intel = intel_get_screen_private(scrn); -- -+ -+ I830UeventFini(scrn); - if (scrn->vtSema == TRUE) { - I830LeaveVT(scrnIndex, 0); - } -diff -up xf86-video-intel-2.10.0/src/i830.h.dave xf86-video-intel-2.10.0/src/i830.h ---- xf86-video-intel-2.10.0/src/i830.h.dave 2010-01-13 18:48:50.000000000 +1000 -+++ xf86-video-intel-2.10.0/src/i830.h 2010-01-13 18:50:01.000000000 +1000 -@@ -47,6 +47,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN - #ifndef _I830_H_ - #define _I830_H_ - -+#include "libudev.h" -+ - #include "xf86_OSproc.h" - #include "compiler.h" - #include "xf86PciInfo.h" -@@ -385,6 +387,9 @@ typedef struct intel_screen_private { - */ - Bool fallback_debug; - unsigned debug_flush; -+ -+ struct udev_monitor *uevent_monitor; -+ InputHandlerProc uevent_handler; - } intel_screen_private; - - enum { -diff -up xf86-video-intel-2.10.0/src/Makefile.am.dave xf86-video-intel-2.10.0/src/Makefile.am ---- xf86-video-intel-2.10.0/src/Makefile.am.dave 2010-01-05 08:09:52.000000000 +1000 -+++ xf86-video-intel-2.10.0/src/Makefile.am 2010-01-13 18:49:14.000000000 +1000 -@@ -32,7 +32,7 @@ AM_CFLAGS = @CWARNFLAGS@ @XORG_CFLAGS@ @ - intel_drv_la_LTLIBRARIES = intel_drv.la - intel_drv_la_LDFLAGS = -module -avoid-version - intel_drv_ladir = @moduledir@/drivers --intel_drv_la_LIBADD = -lm @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la -+intel_drv_la_LIBADD = -lm @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la -ludev - intel_drv_la_LIBADD += @PCIACCESS_LIBS@ - - INTEL_DRI_SRCS = \ diff --git a/packages/x11/driver/xf86-video-intel/url b/packages/x11/driver/xf86-video-intel/url index b45558e5ce..4d395a3ed3 100644 --- a/packages/x11/driver/xf86-video-intel/url +++ b/packages/x11/driver/xf86-video-intel/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xf86-video-intel-20100221.tar.bz2 +http://xorg.freedesktop.org/archive/individual/driver/xf86-video-intel-2.10.901.tar.bz2 \ No newline at end of file