This is a major update to the latest stable version.
Requires xorg-x11-server-devel >= 1.13.2 to be sure to compile for the new version of the x-server.
+++ /dev/null
-Index: xf86-video-intel-2.11.0/src/drmmode_display.c
-===================================================================
---- xf86-video-intel-2.11.0/src/drmmode_display.c
-+++ xf86-video-intel-2.11.0/src/drmmode_display.c 2010-04-29 00:18:34.000000000 +0200
-@@ -103,6 +103,7 @@
- "asus-laptop",
- "eeepc",
- "thinkpad_screen",
-+ "mbp_backlight",
- "acpi_video1",
- "acpi_video0",
- "fujitsu-laptop",
+++ /dev/null
-diff -up xf86-video-intel-20100319/src/drmmode_display.c.jx xf86-video-intel-20100319/src/drmmode_display.c
---- xf86-video-intel-20100319/src/drmmode_display.c.jx 2010-03-22 13:24:13.483183499 -0400
-+++ xf86-video-intel-20100319/src/drmmode_display.c 2010-03-22 13:25:59.810184060 -0400
-@@ -1452,7 +1452,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn,
- intel_screen_private *intel = intel_get_screen_private(scrn);
- struct drm_i915_getparam gp;
- drmmode_ptr drmmode;
-- unsigned int i;
-+ unsigned int i, lvds = -1;
- int has_flipping = 0;
-
- drmmode = xnfalloc(sizeof *drmmode);
-@@ -1473,9 +1473,22 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn,
- drmmode->mode_res->max_height);
- for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
- drmmode_crtc_init(scrn, drmmode, i);
-+
-+ /* do LVDS first */
-+ for (i = 0; i < drmmode->mode_res->count_connectors; i++) {
-+ drmModeConnectorPtr koutput =
-+ drmModeGetConnector(drmmode->fd,
-+ drmmode->mode_res->connectors[i]);
-+ if (koutput->connector_type == DRM_MODE_CONNECTOR_LVDS) {
-+ drmmode_output_init(scrn, drmmode, i);
-+ lvds = i;
-+ }
-+ drmModeFreeConnector(koutput);
-+ }
-
- for (i = 0; i < drmmode->mode_res->count_connectors; i++)
-- drmmode_output_init(scrn, drmmode, i);
-+ if (i != lvds)
-+ drmmode_output_init(scrn, drmmode, i);
-
- xf86InitialConfiguration(scrn, TRUE);
-
-
+++ /dev/null
-diff -up xf86-video-intel-2.11.0/src/drmmode_display.c.no-flip xf86-video-intel-2.11.0/src/drmmode_display.c
---- xf86-video-intel-2.11.0/src/drmmode_display.c.no-flip 2010-05-03 15:30:19.000000000 -0400
-+++ xf86-video-intel-2.11.0/src/drmmode_display.c 2010-05-03 15:30:59.000000000 -0400
-@@ -1504,10 +1504,15 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn,
- gp.value = &has_flipping;
- (void)drmCommandWriteRead(intel->drmSubFD, DRM_I915_GETPARAM, &gp,
- sizeof(gp));
-+
-+ xf86DrvMsg(scrn->scrnIndex, X_INFO,
-+ "Pageflipping %s in kernel, %s disabled in X\n",
-+ has_flipping ? "enabled" : "disabled",
-+ has_flipping ? "but" : "and");
- if (has_flipping) {
- xf86DrvMsg(scrn->scrnIndex, X_INFO,
-- "Kernel page flipping support detected, enabling\n");
-- intel->use_pageflipping = TRUE;
-+ "Don't panic: https://bugzilla.redhat.com/588421\n");
-+ intel->use_pageflipping = FALSE;
- drmmode->flip_count = 0;
- drmmode->event_context.version = DRM_EVENT_CONTEXT_VERSION;
- drmmode->event_context.vblank_handler = drmmode_vblank_handler;
-diff -up xf86-video-intel-2.11.0/src/i830_dri.c.no-flip xf86-video-intel-2.11.0/src/i830_dri.c
---- xf86-video-intel-2.11.0/src/i830_dri.c.no-flip 2010-03-29 14:23:02.000000000 -0400
-+++ xf86-video-intel-2.11.0/src/i830_dri.c 2010-05-03 15:30:19.000000000 -0400
-@@ -1013,7 +1013,7 @@ Bool I830DRI2ScreenInit(ScreenPtr screen
-
- info.CopyRegion = I830DRI2CopyRegion;
- #if DRI2INFOREC_VERSION >= 4
-- if (intel->use_pageflipping) {
-+ if (intel->use_pageflipping || 1) {
- info.version = 4;
- info.ScheduleSwap = I830DRI2ScheduleSwap;
- info.GetMSC = I830DRI2GetMSC;
+++ /dev/null
-diff -up xf86-video-intel-2.11.0/src/drmmode_display.c.jx xf86-video-intel-2.11.0/src/drmmode_display.c
---- xf86-video-intel-2.11.0/src/drmmode_display.c.jx 2010-04-16 10:28:08.000000000 -0400
-+++ xf86-video-intel-2.11.0/src/drmmode_display.c 2010-04-26 15:28:58.000000000 -0400
-@@ -689,6 +689,12 @@ drmmode_output_mode_valid(xf86OutputPtr
- else
- return MODE_OK;
- }
-+
-+ /* I don't actually believe any VGA is this good */
-+ if (koutput->connector_type == DRM_MODE_CONNECTOR_VGA)
-+ if (pModes->Clock > 250000)
-+ return MODE_CLOCK_HIGH;
-+
- return MODE_OK;
- }
-
+++ /dev/null
-From feff2ec80eeeba5074d19efcddf4867adf639b4f Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied@redhat.com>
-Date: Mon, 5 Jul 2010 09:07:08 +1000
-Subject: [PATCH] uxa: don't compare planemask with FB_ALLONES.
-
-planemask is an unsigned long initialised to ~0, on 64-bit this is not equal
-to an (unsigned int)-1.
-
-Use the macro provided to do this.
-
-Signed-off-by: Dave Airlie <airlied@redhat.com>
----
- uxa/uxa-accel.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c
-index ded66a1..633b433 100644
---- a/uxa/uxa-accel.c
-+++ b/uxa/uxa-accel.c
-@@ -81,7 +81,7 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n,
- if (!dst_pixmap)
- goto fallback;
-
-- if (pGC->alu != GXcopy || pGC->planemask != FB_ALLONES)
-+ if (pGC->alu != GXcopy || !UXA_PM_IS_SOLID(pDrawable, pGC->planemask))
- goto solid;
-
- format = PictureMatchFormat(screen,
-@@ -1048,7 +1048,7 @@ uxa_fill_region_solid(DrawablePtr pDrawable,
- extents = REGION_EXTENTS(screen, pRegion);
-
- /* Using GEM, the relocation costs outweigh the advantages of the blitter */
-- if (nbox == 1 || (alu != GXcopy && alu != GXclear) || planemask != FB_ALLONES) {
-+ if (nbox == 1 || (alu != GXcopy && alu != GXclear) || !UXA_PM_IS_SOLID(&pixmap->drawable, planemask)) {
- try_solid:
- if (uxa_screen->info->check_solid &&
- !uxa_screen->info->check_solid(&pixmap->drawable, alu, planemask))
---
-1.7.1
-
+++ /dev/null
-diff -up xf86-video-intel-20090908/src/drmmode_display.c.jx xf86-video-intel-20090908/src/drmmode_display.c
---- xf86-video-intel-20090908/src/drmmode_display.c.jx 2009-09-08 14:30:55.000000000 -0400
-+++ xf86-video-intel-20090908/src/drmmode_display.c 2009-09-08 14:31:09.000000000 -0400
-@@ -1195,8 +1195,19 @@ drmmode_output_get_property(xf86OutputPt
- return TRUE;
- }
-
-+#ifdef RANDR_GET_CRTC_INTERFACE
-+static xf86CrtcPtr
-+drmmode_get_crtc(xf86OutputPtr output)
-+{
-+ return output->crtc;
-+}
-+#endif
-+
- static const xf86OutputFuncsRec drmmode_output_funcs = {
- .create_resources = drmmode_output_create_resources,
-+#ifdef RANDR_GET_CRTC_INTERFACE
-+ .get_crtc = drmmode_get_crtc,
-+#endif
- #ifdef RANDR_12_INTERFACE
- .set_property = drmmode_output_set_property,
- .get_property = drmmode_output_get_property,
+++ /dev/null
-diff --git a/src/drmmode_display.c b/src/drmmode_display.c
-index d50e640..d6c7cd3 100644
---- a/src/drmmode_display.c
-+++ b/src/drmmode_display.c
-@@ -412,6 +412,18 @@ drmmode_output_detect(xf86OutputPtr output)
- drmmode_output->mode_output =
- drmModeGetConnector(drmmode->fd, drmmode_output->output_id);
-
-+ switch (drmmode_output->mode_output->connector_type) {
-+ case DRM_MODE_CONNECTOR_SVIDEO:
-+ /* FIXME: KMS svideo detection is flaky an causes X to
-+ * come up in 1024x768 when it tries to pick a clone
-+ * mode that fits both the panel and the tv out. Once
-+ * KMS learns how to detect svideo better we can
-+ * remove this. */
-+ return DRM_MODE_UNKNOWNCONNECTION;
-+ default:
-+ break;
-+ }
-+
- switch (drmmode_output->mode_output->connection) {
- case DRM_MODE_CONNECTED:
- status = XF86OutputStatusConnected;
+++ /dev/null
-diff -up xf86-video-intel-2.12.0/src/i830_driver.c.uevent xf86-video-intel-2.12.0/src/i830_driver.c
---- xf86-video-intel-2.12.0/src/i830_driver.c.uevent 2010-06-24 16:29:49.000000000 -0400
-+++ xf86-video-intel-2.12.0/src/i830_driver.c 2010-06-25 11:40:01.335975581 -0400
-@@ -81,6 +81,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
- #include "i915_drm.h"
- #include <xf86drmMode.h>
-
-+#include "libudev.h"
-+
- #define BIT(x) (1 << (x))
- #define MAX(a,b) ((a) > (b) ? (a) : (b))
- #define NB_OF(x) (sizeof (x) / sizeof (*x))
-@@ -996,6 +998,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)
- {
-@@ -1233,6 +1309,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr
-
- intel->suspended = FALSE;
-
-+ I830UeventInit(scrn);
-+
- return uxa_resources_init(screen);
- }
-
-@@ -1306,7 +1384,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.12.0/src/i830.h.uevent xf86-video-intel-2.12.0/src/i830.h
---- xf86-video-intel-2.12.0/src/i830.h.uevent 2010-06-24 16:29:49.000000000 -0400
-+++ xf86-video-intel-2.12.0/src/i830.h 2010-06-25 11:39:15.665029821 -0400
-@@ -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"
-@@ -432,6 +434,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.12.0/src/Makefile.am.uevent xf86-video-intel-2.12.0/src/Makefile.am
---- xf86-video-intel-2.12.0/src/Makefile.am.uevent 2010-06-24 16:29:37.000000000 -0400
-+++ xf86-video-intel-2.12.0/src/Makefile.am 2010-06-25 11:39:15.665029821 -0400
-@@ -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 = -ludev -lm @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la
- intel_drv_la_LIBADD += @PCIACCESS_LIBS@
-
- INTEL_DRI_SRCS = \
###############################################################################
name = xorg-x11-drv-intel
-version = 2.12.0
+version = 2.21.0
release = 1
maintainer = Stefan Schantl <stefan.schantl@ipfire.org>
X.Org X11 intel video driver.
end
+# Specify the X Server version to build for.
+x11_server_ver = 1.13.2
+
+thisapp = xf86-video-intel-%{version}
+
source_dl = http://ftp.x.org/pub/individual/driver/
-sources = xf86-video-intel-%{version}.tar.bz2
build
requires
libXvMC-devel
libxcb-devel
libtool
- mesa-devel
+ mesa-devel >= 9.0.2
pkg-config
xcb-util-devel
xorg-x11-proto-devel
- xorg-x11-server-devel
+ xorg-x11-server-devel >= %{x11_server_ver}
xorg-x11-util-macros
end
- DIR_APP = %{DIR_SRC}/xf86-video-intel-%{version}
-
CFLAGS += -Wl,-z,lazy
configure_options += \
packages
package %{name}
+ requires
+ dri-drivers >= 9.0.2
+ xorg-x11-server >= %{x11_server_ver}
+ end
end
package %{name}-debuginfo