[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-intel: Changes to 'debian-experimental'



 configure.ac                  |    2 
 debian/changelog              |    6 ++
 man/intel.man                 |    2 
 src/bios_reader/bios_reader.c |    4 -
 src/i830_accel.c              |    2 
 src/i830_display.c            |   34 +++++++++++++++-
 src/i830_driver.c             |    4 +
 src/i830_lvds.c               |   86 ++++++++++++++++++++++++++++++++++++++----
 uxa/uxa-glyphs.c              |    9 ++--
 9 files changed, 131 insertions(+), 18 deletions(-)

New commits:
commit 0856c81e9cd907803e3de851b24b9baa104b1b00
Author: Brice Goglin <bgoglin@loulous.org>
Date:   Thu Jan 15 10:54:29 2009 +0100

    Prepare changelog for upload

diff --git a/debian/changelog b/debian/changelog
index a8ecfd0..b3048a5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-xserver-xorg-video-intel (2:2.6.0-1) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.6.0-1) experimental; urgency=low
 
   * New upstream release.
 
- -- Brice Goglin <bgoglin@debian.org>  Thu, 15 Jan 2009 10:53:48 +0100
+ -- Brice Goglin <bgoglin@debian.org>  Thu, 15 Jan 2009 10:54:17 +0100
 
 xserver-xorg-video-intel (2:2.5.99.2-1) experimental; urgency=low
 

commit 02ab5d882a8cc143d41460a27c1a27bc173bb2fc
Author: Brice Goglin <bgoglin@loulous.org>
Date:   Thu Jan 15 10:16:40 2009 +0100

    New upstream release

diff --git a/debian/changelog b/debian/changelog
index 7c895d7..a8ecfd0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-intel (2:2.6.0-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Brice Goglin <bgoglin@debian.org>  Thu, 15 Jan 2009 10:53:48 +0100
+
 xserver-xorg-video-intel (2:2.5.99.2-1) experimental; urgency=low
 
   * New upstream release.

commit 5cd65d965c8ed388275fe2084553302aad601d4a
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date:   Thu Jan 15 13:45:14 2009 +0800

    Bump version 2.6.0

diff --git a/configure.ac b/configure.ac
index d0f47ab..bb69f72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-intel],
-        2.5.99.2,
+        2.6.0,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-intel)
 

commit ff67517db91a572a640e7a0ba247b8b71bfa2335
Author: Owain G. Ainsworth <oga@openbsd.org>
Date:   Tue Jan 13 18:42:44 2009 +0000

    Fix ioctl type.
    
    I915_EMIT_IRQ is a read/write ioctl, not a write only. Found by OpenBSd's
    kernel code which checks these things a long more strongly than Linux.
    (cherry picked from commit 9f306193c4b128ec72c5b4db16d07302cee50ab5)

diff --git a/src/i830_accel.c b/src/i830_accel.c
index 7dff714..5ee53bb 100644
--- a/src/i830_accel.c
+++ b/src/i830_accel.c
@@ -205,7 +205,7 @@ I830Sync(ScrnInfoPtr pScrn)
 	* register reads for idle.
 	*/
        emit.irq_seq = &wait.irq_seq;
-       ret = drmCommandWrite(pI830->drmSubFD, DRM_I830_IRQ_EMIT, &emit,
+       ret = drmCommandWriteRead(pI830->drmSubFD, DRM_I830_IRQ_EMIT, &emit,
 			    sizeof(emit));
        if (ret != 0)
 	   FatalError("Failure to emit IRQ: %s\n", strerror(-ret));

commit e84f21db824b2e9e7fe660927ecfbbf04b068f7a
Author: Owain G. Ainsworth <oga@openbsd.org>
Date:   Tue Jan 13 17:02:59 2009 +0000

    use ifdef __linux__ where needed.
    
    since modesetting is compiled by default now, ifdef __linux__ the linux
    only includes and ioctls.
    (cherry picked from commit 1e8588ad5087c69eb77399cfaab8e4ec15eb4da9)

diff --git a/src/i830_driver.c b/src/i830_driver.c
index beb134d..4c40d40 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1131,7 +1131,9 @@ i830SetHotkeyControl(ScrnInfoPtr pScrn, int mode)
  * DRM mode setting Linux only at this point... later on we could
  * add a wrapper here.
  */
+#ifdef __linux__
 #include <linux/kd.h>
+#endif
 
 static Bool i830_kernel_mode_enabled(ScrnInfoPtr pScrn)
 {
@@ -1157,7 +1159,9 @@ static Bool i830_kernel_mode_enabled(ScrnInfoPtr pScrn)
     if (ret)
 	return FALSE;
 
+#ifdef __linux__
     ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT);
+#endif
 
     return TRUE;
 }

commit 70ba6d45c9a00756e0ad36a58136281adba138f9
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date:   Wed Jan 14 16:39:08 2009 +0800

    Revert "Assign rotation memory dri_bo to rotation pixmap."
    
    This reverts commit d994978488648a68ade0d518e5dd40d100e953ed.
    This requires i830_set_pixmap_bo() on master that is not in
    2.6 branch.

diff --git a/src/i830_display.c b/src/i830_display.c
index e1ba661..022d519 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -1624,7 +1624,6 @@ static PixmapPtr
 i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
 {
     ScrnInfoPtr pScrn = crtc->scrn;
-    I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
     I830Ptr pI830 = I830PTR(pScrn);
     unsigned long rotate_pitch;
     PixmapPtr rotate_pixmap;
@@ -1645,8 +1644,6 @@ i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Couldn't allocate shadow pixmap for rotated CRTC\n");
     }
-    if (intel_crtc->rotate_mem && intel_crtc->rotate_mem->bo)
-	i830_set_pixmap_bo(rotate_pixmap, intel_crtc->rotate_mem->bo);
     return rotate_pixmap;
 }
 

commit 3743747dbcf538ddd6db882bde7243656d0c5596
Author: Ma Ling <ling.ma@intel.com>
Date:   Wed Jan 14 14:46:52 2009 +0800

    Disable VGA plane reliably
    
    This fixes #17235, VGA random hang on recent G45/43 board.
    From spec, SR01 bit 5 should be set before VGA plane disable through
    control register, otherwise we might get random crash and lockups.
    (cherry picked from commit db9f5915ce812144ffd9d2aa42e8ba856129c35e)

diff --git a/src/i830_display.c b/src/i830_display.c
index 82a068c..e1ba661 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -779,6 +779,37 @@ static void i830_modeset_ctl(xf86CrtcPtr crtc, int dpms_state)
 }
 #endif /* DRM_IOCTL_MODESET_CTL && (XF86DRI || DRI2) */
 
+static void
+i830_disable_vga_plane (xf86CrtcPtr crtc)
+{
+    ScrnInfoPtr pScrn = crtc->scrn;
+    I830Ptr pI830 = I830PTR(pScrn);
+    uint32_t vgacntrl = INREG(VGACNTRL);
+    uint8_t sr01;
+
+    if (vgacntrl & VGA_DISP_DISABLE)
+	return;
+
+    /*
+       Set bit 5 of SR01;
+       Wait 30us;
+       */
+    OUTREG8(SRX, 1);
+    sr01 = INREG8(SRX + 1);
+    OUTREG8(SRX + 1, sr01 | (1 << 5));
+    usleep(30);
+
+    vgacntrl |= VGA_DISP_DISABLE;
+
+    /* disable center mode */
+    if (IS_I9XX(pI830))
+	vgacntrl &= ~(3 << 24);
+
+    OUTREG(VGACNTRL, vgacntrl);
+    i830WaitForVblank(pScrn);
+
+}
+
 /**
  * Sets the power management mode of the pipe and plane.
  *
@@ -903,8 +934,7 @@ i830_crtc_dpms(xf86CrtcPtr crtc, int mode)
 	}
 
 	/* Disable the VGA plane that we never use. */
-	OUTREG(VGACNTRL, VGA_DISP_DISABLE);
-	i830WaitForVblank(pScrn);
+	i830_disable_vga_plane (crtc);
 
 	break;
     }

commit d994978488648a68ade0d518e5dd40d100e953ed
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Jan 13 20:01:49 2009 -0800

    Assign rotation memory dri_bo to rotation pixmap.
    
    As the rotation memory and rotation pixmap are allocated separately (to make
    rotation at startup work), the allocate dri_bo needs to be set in the pixmap
    for acceleration to work. This restores the performance in rotated modes.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    (cherry picked from commit a4b023c17b9c3bd65fb9466ddb8a953f60244402)

diff --git a/src/i830_display.c b/src/i830_display.c
index 7a9999a..82a068c 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -1594,6 +1594,7 @@ static PixmapPtr
 i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
 {
     ScrnInfoPtr pScrn = crtc->scrn;
+    I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
     I830Ptr pI830 = I830PTR(pScrn);
     unsigned long rotate_pitch;
     PixmapPtr rotate_pixmap;
@@ -1614,6 +1615,8 @@ i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Couldn't allocate shadow pixmap for rotated CRTC\n");
     }
+    if (intel_crtc->rotate_mem && intel_crtc->rotate_mem->bo)
+	i830_set_pixmap_bo(rotate_pixmap, intel_crtc->rotate_mem->bo);
     return rotate_pixmap;
 }
 

commit 7c5afbbd3e7570224ceb4fa793fe230fd3a383fe
Author: Bernhard Rosenkraenzer <bero@arklinux.org>
Date:   Tue Jan 13 10:35:19 2009 -0800

    UXA: Declare glyph cache picture as component-alpha when necessary.
    
    Without this, rendering component-alpha glyphs may break without a mask.
    
    Bug #19534.  Ported from fix by Michel Dänzer <daenzer@vmware.com> in
    xserver commit 639f289dcdbe00a516820f573c01a8339e120ed4
    (cherry picked from commit c80f1a9c5131721eaf87d12a7a67e603cdfed63b)

diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c
index dd26362..1c06e6d 100644
--- a/uxa/uxa-glyphs.c
+++ b/uxa/uxa-glyphs.c
@@ -140,6 +140,8 @@ uxa_unrealize_glyph_caches(ScreenPtr    pScreen,
     }
 }
 
+#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0)
+
 /* All caches for a single format share a single pixmap for glyph storage,
  * allowing mixing glyphs of different sizes without paying a penalty
  * for switching between source pixmaps. (Note that for a size of font
@@ -158,6 +160,7 @@ uxa_realize_glyph_caches(ScreenPtr    pScreen,
     PictFormatPtr   pPictFormat;
     PixmapPtr	    pPixmap;
     PicturePtr	    pPicture;
+    CARD32          component_alpha;
     int		    height;
     int		    i;
     int		    error;
@@ -190,8 +193,10 @@ uxa_realize_glyph_caches(ScreenPtr    pScreen,
     if (!pPixmap)
 	return FALSE;
 
+    component_alpha = NeedsComponent(pPictFormat->format);
     pPicture = CreatePicture(0, &pPixmap->drawable, pPictFormat,
-			     0, 0, serverClient, &error);
+			     CPComponentAlpha, &component_alpha, serverClient,
+			     &error);
 
     (*pScreen->DestroyPixmap) (pPixmap); /* picture holds a refcount */
 
@@ -729,8 +734,6 @@ uxa_glyphs_intersect(int nlist, GlyphListPtr list, GlyphPtr *glyphs)
     return FALSE;
 }
 
-#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0)
-
 void
 uxa_glyphs (CARD8 	 op,
 	   PicturePtr	 pSrc,

commit c0bc3cf128d8e9e1ed643be1586593d42c8f5b49
Author: Ma Ling <ling.ma@intel.com>
Date:   Tue Jan 13 10:26:40 2009 +0800

    set continuous-frequency flag in get modes function
    
    http://bugs.freedesktop.org/show_bug.cgi?id=19247
    Because latest xorg will check whether the display is continuous frequency through one flag in monitor info structure,
    if not it doesn't touch default modes. When laptop failed to fetch edid, We don't set the flag. In i830_lvds.c,
    so currently we can not get default modes except only one mode line from bios.
    In order to achieve default modes from xserver successfully,I set the flag and other EDID features.
    (cherry picked from commit 3d206f9e46b5237bda7ca3c0f92d64c45ee8bdf5)

diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index 3714142..639450a 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -775,6 +775,28 @@ i830_lvds_detect(xf86OutputPtr output)
     return XF86OutputStatusConnected;
 }
 
+static void fill_detailed_block(struct detailed_monitor_section *det_mon,
+                                DisplayModePtr mode)
+{
+    struct detailed_timings *timing = &det_mon->section.d_timings;
+    det_mon->type = DT;
+    timing->clock = mode->Clock * 1000;
+    timing->h_active = mode->HDisplay;
+    timing->h_blanking = mode->HTotal - mode->HDisplay;
+    timing->v_active = mode->VDisplay;
+    timing->v_blanking = mode->VTotal - mode->VDisplay;
+    timing->h_sync_off = mode->HSyncStart - mode->HDisplay;
+    timing->h_sync_width = mode->HSyncEnd - mode->HSyncStart;
+    timing->v_sync_off = mode->VSyncStart - mode->VDisplay;
+    timing->v_sync_width = mode->VSyncEnd - mode->VSyncStart;
+
+    if (mode->Flags & V_PVSYNC)
+        timing->misc |= 0x02;
+
+    if (mode->Flags & V_PHSYNC)
+        timing->misc |= 0x01;
+}
+
 /**
  * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
  */
@@ -819,7 +841,7 @@ i830_lvds_get_modes(xf86OutputPtr output)
 	}
     }
     xf86OutputSetEDID (output, edid_mon);
-    
+
     modes = xf86OutputGetEDIDModes (output);
     if (modes != NULL)
 	return modes;
@@ -829,15 +851,35 @@ i830_lvds_get_modes(xf86OutputPtr output)
 	edid_mon = xcalloc (1, sizeof (xf86Monitor));
 	if (edid_mon)
 	{
+	    struct detailed_monitor_section *det_mon = edid_mon->det_mon;
+	    /*support DPM, instead of DPMS*/
+	    edid_mon->features.dpms |= 0x1;
+	    /*defaultly support RGB color display*/
+	    edid_mon->features.display_type |= 0x1;
+	    /*defaultly display support continuous-freqencey*/
+	    edid_mon->features.msc |= 0x1;
+	    /*defaultly  the EDID version is 1.4 */
+	    edid_mon->ver.version = 1;
+	    edid_mon->ver.revision = 4;
+
+	    if (pI830->lvds_fixed_mode != NULL) {
+		/* now we construct new EDID monitor,
+		 *  so filled one detailed timing block
+		 */
+		fill_detailed_block(det_mon, pI830->lvds_fixed_mode);
+		/* the filed timing block should be set preferred*/
+		edid_mon->features.msc |= 0x2;
+		det_mon = det_mon + 1;
+	    }
+
 	    /* Set wide sync ranges so we get all modes
 	     * handed to valid_mode for checking
 	     */
-	    edid_mon->det_mon[0].type = DS_RANGES;
-	    edid_mon->det_mon[0].section.ranges.min_v = 0;
-	    edid_mon->det_mon[0].section.ranges.max_v = 200;
-	    edid_mon->det_mon[0].section.ranges.min_h = 0;
-	    edid_mon->det_mon[0].section.ranges.max_h = 200;
-	    
+	    det_mon->type = DS_RANGES;
+	    det_mon->section.ranges.min_v = 0;
+	    det_mon->section.ranges.max_v = 200;
+	    det_mon->section.ranges.min_h = 0;
+	    det_mon->section.ranges.max_h = 200;
 	    output->MonInfo = edid_mon;
 	}
     }

commit 335d6bbdfd882eb98dc6ebd785ad2963abc6566d
Author: Keith Packard <keithp@keithp.com>
Date:   Wed Nov 26 16:32:12 2008 +0800

    Fix LVDS EDID to match all possible default modes
    
    If the EDID data from the LVDS doesn't indicate support for a wide range of
    continuous frequencies, it will not match any of the default modes although
    our LVDS scaler logic ignores refresh rates when programming LVDS modes. Fix
    this by smashing the compute EDID data to open up the sync rates.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    (cherry picked from commit 3354e660b0744976871683ce226f17e873f26b50)

diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index 1799eab..3714142 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -788,6 +788,36 @@ i830_lvds_get_modes(xf86OutputPtr output)
     DisplayModePtr	    modes;
 
     edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus);
+
+    /* Our LVDS scaler can hit any size, so mark the EDID data as
+     * supporting continuous timings
+     */
+    if (edid_mon) {
+	int i, j = -1;
+	edid_mon->features.msc |= 0x1;
+
+	/* Either find a DS_RANGES block, or replace a DS_VENDOR block,
+	 * smashing it into a DS_RANGES block with wide open refresh to
+	 * match all default modes
+	 */
+	for (i = 0; i < sizeof (edid_mon->det_mon) / sizeof (edid_mon->det_mon[0]); i++)
+	{
+	    if (edid_mon->det_mon[i].type >= DS_VENDOR && j == -1)
+		j = i;
+	    if (edid_mon->det_mon[i].type == DS_RANGES) {
+		j = i;
+		break;
+	    }
+	}
+	if (j != -1) {
+	    struct monitor_ranges   *ranges = &edid_mon->det_mon[j].section.ranges;
+	    edid_mon->det_mon[j].type = DS_RANGES;
+	    ranges->min_v = 0;
+	    ranges->max_v = 200;
+	    ranges->min_h = 0;
+	    ranges->max_h = 200;
+	}
+    }
     xf86OutputSetEDID (output, edid_mon);
     
     modes = xf86OutputGetEDIDModes (output);

commit 28a44ad59eec9a6421f4ed0de5614599ac17b0d6
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Fri Jan 9 16:30:15 2009 -0800

    Remove xorgconfig & xorgcfg from See Also list in man page
    (cherry picked from commit f1e9ca4e4fb3ddb083252aea79c67c5e5e71f29c)

diff --git a/man/intel.man b/man/intel.man
index 81a94ac..00aa1be 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -445,7 +445,7 @@ more information (the xorg@lists.freedesktop.org mailing list is the
 most appropriate place to ask X.Org and driver related questions).
 
 .SH "SEE ALSO"
-__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__)
+__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__)
 .SH AUTHORS
 Authors include: Keith Whitwell, and also Jonathan Bian, Matthew J Sottek,
 Jeff Hartmann, Mark Vojkovich, Alan Hourihane, H. J. Lu.  830M and 845G

commit f42015d570733aaa0eb56da5ca63d72a5b2772f7
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Wed Jan 7 21:45:54 2009 -0800

    Prevent redefinitions of CARD8 and friends.  Fixes build.
    (cherry picked from commit 91c49067abab262edce54d33af8bfc03eee20f2e)

diff --git a/src/bios_reader/bios_reader.c b/src/bios_reader/bios_reader.c
index 974c272..717f5bf 100644
--- a/src/bios_reader/bios_reader.c
+++ b/src/bios_reader/bios_reader.c
@@ -39,9 +39,7 @@
 #include "../i830_bios.h"
 
 #include <X11/Xfuncproto.h>
-typedef uint8_t CARD8;
-typedef uint16_t CARD16;
-typedef uint32_t CARD32;
+#include <X11/Xmd.h>
 #define _PARSE_EDID_
 #include "edid.h"
 


Reply to: