xf86-video-intel: update to xf86-video-intel-201008122

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2010-08-13 00:28:09 +02:00
parent f3e6bca1c8
commit fc31f5ba9c
8 changed files with 34 additions and 268 deletions

View File

@ -1,10 +1,10 @@
PKG_NAME="xf86-video-intel" PKG_NAME="xf86-video-intel"
PKG_VERSION="2.12.0" PKG_VERSION="20100812"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="i386 x86_64" PKG_ARCH="i386 x86_64"
PKG_LICENSE="OSS" PKG_LICENSE="OSS"
PKG_SITE="http://intellinuxgraphics.org/" PKG_SITE="http://intellinuxgraphics.org/"
PKG_URL="http://xorg.freedesktop.org/archive/individual/driver/$PKG_NAME-$PKG_VERSION.tar.bz2" PKG_URL="http://sources.openelec.tv/svn/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="udev" PKG_DEPENDS="udev"
PKG_BUILD_DEPENDS="toolchain util-macros fontsproto udev xorg-server" PKG_BUILD_DEPENDS="toolchain util-macros fontsproto udev xorg-server"
PKG_PRIORITY="optional" PKG_PRIORITY="optional"

View File

@ -1,12 +0,0 @@
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",

View File

@ -1,36 +0,0 @@
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);

View File

@ -1,33 +0,0 @@
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;

View File

@ -1,16 +0,0 @@
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;
}

View File

@ -0,0 +1,32 @@
diff -Naur xf86-video-intel-20100812/src/intel_display.c xf86-video-intel-20100812.patch/src/intel_display.c
--- xf86-video-intel-20100812/src/intel_display.c 2010-08-09 11:13:58.000000000 +0200
+++ xf86-video-intel-20100812.patch/src/intel_display.c 2010-08-12 23:30:18.091210425 +0200
@@ -1511,10 +1511,14 @@
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;
mode->flip_count = 0;
mode->event_context.version = DRM_EVENT_CONTEXT_VERSION;
mode->event_context.vblank_handler = intel_vblank_handler;
diff -Naur xf86-video-intel-20100812/src/intel_dri.c xf86-video-intel-20100812.patch/src/intel_dri.c
--- xf86-video-intel-20100812/src/intel_dri.c 2010-08-09 11:13:58.000000000 +0200
+++ xf86-video-intel-20100812.patch/src/intel_dri.c 2010-08-12 23:31:53.708336093 +0200
@@ -1056,7 +1056,7 @@
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;

View File

@ -1,23 +0,0 @@
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,

View File

@ -1,146 +0,0 @@
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 = \