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

xserver-xorg-video-intel: Changes to 'upstream-unstable'



Rebased ref, commits from common ancestor:
commit cff6cf9adc4235af5cc73a47bb272c81635fc8b2
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 16:20:16 2009 -0700

    Update version to 2.7.0
    
    In preparation for new major release.

diff --git a/configure.ac b/configure.ac
index 8cca400..41ae79c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-intel],
-        2.6.99.903,
+        2.7.0,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-intel)
 

commit 5fc57441b68a85ca3aaa306c336b242616a99f12
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 16:14:44 2009 -0700

    Add AUTHORS and NEWS to EXTRA_DIST
    
    These new files don't do us much good if we don't distribute them in
    our releases.
    (cherry picked from commit 9ffd1951d1f2fd2f53273d04ea29de050f07af55)

diff --git a/Makefile.am b/Makefile.am
index d1118fe..68c1243 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -22,5 +22,5 @@ AUTOMAKE_OPTIONS = foreign
 
 SUBDIRS = uxa src man
 
-EXTRA_DIST = README
+EXTRA_DIST = README AUTHORS NEWS
 DISTCLEANFILES = doltcompile

commit f3d63d9e4956e64f632fbcf5da76fb7278072cb7
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 16:14:03 2009 -0700

    Add a NEWS files with release-notes for 2.7.0
    
    It will be nice to have release-notes under revision control, as well
    being able to document issues in an obviously time-sensitive file,
    (as opposed to README where we were documenting some of this previously).
    (cherry picked from commit e4cd9de2933ada3e2a4b43552729ae3a370128bf)

diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..c059c98
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,107 @@
+Release 2.7.0 (2009-04-15)
+--------------------------
+Compared to the 2.6 series, 2.7.0 has a large number of bug fixes, but
+also a few significant features, such as:
+
+        SDVO-TV support, available on ADD2 card (bug#9992) and
+        D945GCLF2 board (bug#17776).
+
+        Basic SDVO-LVDS support
+
+        XV video display without tearing
+	[Though this isn't working for all users yet, see
+	https://bugs.freedesktop.org/show_bug.cgi?id=21076 ]
+
+	Various fixes for UXA, DRI2, and Kernel modesetting.
+
+We encourage users to use kernel modesetting and UXA acceleration with
+this release, which should give the best performance and
+robustness. When KMS is available, UXA is the default acceleration
+used by the driver, (EXA is the default otherwise).
+
+Some of the most notable bugs fixed in 2.7.0 include:
+
+	[GM45 965GM] bad htotal causes panel startup failure
+	https://bugs.freedesktop.org/show_bug.cgi?id=17292
+
+	[xrandr TV] need TV output property control
+	https://bugs.freedesktop.org/show_bug.cgi?id=12763
+
+	[TV] "xrandr --set TV_FORMAT" gets BadMatch error
+	https://bugs.freedesktop.org/show_bug.cgi?id=16566
+
+	[945 tiling] Low performance due to no A17 workaround
+	https://bugs.freedesktop.org/show_bug.cgi?id=16835
+
+	[TV]Flicker when launching applications in the 2.4-branch
+	https://bugs.freedesktop.org/show_bug.cgi?id=17405
+
+	[945GM FBC] FBC causes underruns & flicker
+	https://bugs.freedesktop.org/show_bug.cgi?id=18651
+
+	[xv] Textured video suffers from tearing
+	https://bugs.freedesktop.org/show_bug.cgi?id=19635
+
+	[G45] Random hangs with UXA
+	https://bugs.freedesktop.org/show_bug.cgi?id=19734
+
+	[945GM] Any 3D app is slow in resolution higher than 800x600
+	with UXA+DRI2, due to tiling
+	https://bugs.freedesktop.org/show_bug.cgi?id=19738
+
+	[i915 UXA,EXA] rotation messes display with tiling on
+	https://bugs.freedesktop.org/show_bug.cgi?id=20265
+
+	[G45] DRI2/UXA gives solid white instead of transparency
+	https://bugs.freedesktop.org/show_bug.cgi?id=20321
+
+	LVDS output not detected
+	https://bugs.freedesktop.org/show_bug.cgi?id=20517
+
+	xf86-video-intel-2.6.3: Xv crashes X server
+	https://bugs.freedesktop.org/show_bug.cgi?id=20525
+
+	[G965 non-GEM] systray in KDE 4 completely broken
+	https://bugs.freedesktop.org/show_bug.cgi?id=20527
+
+	[SDVO-TV]the desktop is teared in four sections on the screen
+	https://bugs.freedesktop.org/show_bug.cgi?id=20550
+
+	Intel video driver 2.6.3 crashes with XVideo
+	https://bugs.freedesktop.org/show_bug.cgi?id=20563
+
+	[855GM] Xv crash with non-KMS
+	https://bugs.freedesktop.org/show_bug.cgi?id=20585
+
+	2.6.99.902 breaks native 1680x1050 mode on TMDS -- EDID miss
+	https://bugs.freedesktop.org/show_bug.cgi?id=20594
+
+	[945GM TV] 2.6.99.902 sets a too high CONTRAST-value
+	https://bugs.freedesktop.org/show_bug.cgi?id=20670
+
+	[915GM] fail to detect LVDS with new VBT code
+	https://bugs.freedesktop.org/show_bug.cgi?id=20752
+
+	[regression i965]tiled output when start X
+	https://bugs.freedesktop.org/show_bug.cgi?id=20803
+
+	2.6.99.902: LVDS wrongly detected as disconnected
+	https://bugs.freedesktop.org/show_bug.cgi?id=20826
+
+	vt switching fails and crashes X
+	https://bugs.freedesktop.org/show_bug.cgi?id=20863
+
+	[HDMI] The screen will flicker when some application runs on
+	G45-64
+	https://bugs.freedesktop.org/show_bug.cgi?id=20875
+
+	TexturedVideo is offsetted wrongly on dualhead
+	https://bugs.freedesktop.org/show_bug.cgi?id=20980
+
+	[EXA] xvideo hang X
+	https://bugs.freedesktop.org/show_bug.cgi?id=21027
+
+	[EXA] x11perf performance regression
+	https://bugs.freedesktop.org/show_bug.cgi?id=21029
+
+	And many others...

commit 3fafb28a4323c6897bfe36882857bf89e5d88de8
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 16:10:52 2009 -0700

    Clarify that the default acceleration is UXA if KMS is available.
    
    Stale documentation considered harmful of course.
    (cherry picked from commit 506c810f8f3db89048dda9777902f142ffeb86aa)

diff --git a/man/intel.man b/man/intel.man
index f85d3d1..4f8db81 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -154,7 +154,7 @@ UXA is a newer acceleration architecture built from the EXA acceleration
 code but taking advantage of kernel memory management to provide simpler,
 faster code.
 .IP
-Default: "EXA".
+Default: "UXA" if kernel-modesetting is available, "EXA" otherwise.
 .TP
 .BI "Option \*qModeDebug\*q \*q" boolean \*q
 Enable printing of additional debugging information about modesetting to
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 32ca6c9..48e2351 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1604,8 +1604,11 @@ I830AccelMethodInit(ScrnInfoPtr pScrn)
      * config option AccelMethod to determine which to use, defaulting to EXA
      * if none is specified, or if the string was unrecognized.
      *
-     * All this *could* go away if we removed XAA support from this driver,
-     * for example. :)
+     * Then, just to make things more confusing, the default EXA will
+     * be overridden to UXA if KMS is available. See I830DrmModeInit.
+     *
+     * All this *will* go away when we remov XAA and EXA support from
+     * this driver. (And there will be much rejoicing.)
      */
     if (!(pI830->accel == ACCEL_NONE)) {
 #ifdef I830_USE_UXA

commit 0f0569b5658fbaf3b84232f13a28f6633a89e9b9
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 15:39:06 2009 -0700

    Add a new AUTHORS file
    
    This is a sorted list of everyone with more than 2 commits in the git
    revision history. We also list some historical authors mentioned in the
    man page, (with code presumably pre-dating the beginning of revision
    history).
    (cherry picked from commit b9716b836cb2b4569c90b81f344932ac668dc5bf)

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..31a1da1
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,62 @@
+Authors of xf86-video-intel (since 2003-11-14 when revision-control
+history begins, sorted roughly by number of commits, descending):
+
+Eric Anholt
+Keith Packard
+Zhenyu Wang
+Jesse Barnes
+Alan Hourihane
+Carl Worth
+Dave Airlie
+Michel Dänzer
+Zou Nan Hai
+Kristian Høgsberg
+Adam Jackson
+Nian Wu
+Xian, Haihao
+Egbert Eich
+Kevin E Martin
+Alan Coopersmith
+Hong Liu
+Julien Cristau
+Ma Ling
+Bryce Harrington
+Daniel Stone
+Kaleb Keithley
+Paulo Cesar Pereira de Andrade
+Eamon Walsh
+Matthieu Herrb
+Owain G. Ainsworth
+Søren Sandmann Pedersen
+Brice Goglin
+Ian Romanick
+Lukáš Hejtmánek
+Matthias Hopf
+Olivier Fourdan
+Robert Noland
+Rémi Cardona
+Shuang He
+Wu Fengguang
+and many others (with 1 or 2 commits)
+
+Other authors (from before revision-control history begins):
+
+Keith Whitwell
+Jonathan Bian
+Matthew J Sottek
+Jeff Hartmann
+Mark Vojkovich
+H. J. Lu
+David Dawes
+
+If the above list is missing anyone, please accept our apologies and
+let us know.
+
+The X.Org version of this driver is maintained by Intel Corporation:
+
+	http://www.intellinuxgraphics.org
+
+The X11R6 version of this driver originally came from XFree86 4.4 rc2.
+ 
+The XFree86 version of this driver was donated to The XFree86 Project
+by Precision Insight, Inc.; Cedar Park, TX; USA

commit d94986bcd313486f8018a10729439af0f7e7052d
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 15:38:11 2009 -0700

    README: Remove almost all time-sensitive information
    
    This was all very stale, and is better convered in intel.man. We replace
    this with a list of pointers to where to get current information, (man
    page, web site, and mailing list).
    (cherry picked from commit 8deb3a3709a9aaa549be404566715a01246354d9)

diff --git a/README b/README
index c91c661..8ac6e1f 100644
--- a/README
+++ b/README
@@ -1,106 +1,51 @@
-Information for Intel graphics driver users
-Eric Anholt
-2007-07-02
+xf86-video-intel
+Open-source X.org graphics driver for Intel graphics
+http://www.intellinuxgraphics.com/
 
-This document provides a brief summary of the Intel graphics support provided
-by the xf86-video-intel driver.  More information can also be found in the
-intel(4) manual page.
+What is xf86-video-intel
+------------------------
+The xf86-video-intel module is an open-source 2D graphics driver for
+the X Window System as implemented by X.org. It supports a variety of
+Intel graphics chipsets including:
 
-Supported Hardware:
-	i810,
-  	i810-dc100,
-	i810e
-	i815
-	i830
-	i845
-	i852
-	i855
-	915G
-	915GM
-	945G
-	945GM/GME
-	946GZ
-	G965
-	GM/GME965
-	G33/Q33/Q35
+	i810/i810e/i810-dc100,i815,
+	i830M,845G,852GM,855GM,865M,
+	915G/GM,945G/GM/GME,946GZ
+	G/GM/GME965,
+	G/Q33,G/Q35,G41,G/Q43
+	G/GM/Q45
 
-Features
-- Full support for 8, 15, 16, and 24 bit pixel depths.
-- Hardware accelerated 2D drawing engine support for 8, 15, 16 and 24 bit
-  pixel depths.
-- Hardware accelerated 3D drawing using OpenGL and the DRI.
-- Hardware cursor support to reduce sprite flicker.
-- Textured video XV implementation on i915 through i965.
-- Hardware overlay XV implementation up through i945.
-- Screen resize and rotation.
+Where to get more information about the driver
+----------------------------------------------
+The primary source of information about this and other open-source
+drivers for Intel graphics is:
 
-Technical Notes
-- Interlace modes cannot be supported.
-- This driver  requires kernel support for AGP, which is included in Linux
-  kernels 2.3.42 and higher, and FreeBSD 4.1 and higher.
-- This driver may be built against xserver 1.2.0 or newer.  If built
-  from git source against an older server, a copy of xserver 1.3.0 source is
-  needed to complete the build, which is chosen with the --with-xserver-source
-  argument to ./configure.  The compatibility mode with xserver 1.2.0 will have
-  limited functionality, in particular by not supporting RandR 1.2 or the
-  new Damage 1.1 updated needed for 3D applications to work with display
-  rotation.
+	http://intellinuxgraphics.org/
 
-Configuration
+Documentation specific to the xf86-video-intel driver including
+possible configuration options for the xorg.conf file can be found in
+the intel(4) manual page. After installing the driver this
+documentation can be read with the following command:
 
-The driver auto-detects all device information necessary to
-initialize the card.  The only lines you should need in the "Device"
-section of your xorg.conf file are:
+	man intel
 
-       Section "Device"
-           Identifier "intel"
-           Driver     "intel"
-       EndSection
+Mailing list for communication with users and developers of
+xf86-video-intel:
 
-Please refer to the intel(4) manual page for information on configuration
-options.
+	intel-gfx@lists.freedesktop.org.
 
+	Note: Subscription is required before posting, but anyone is
+	free to subscribe. See instructions (and archives) here:
 
-Known Limitations
-- No support for "zaphod mode" dualhead.  This is the mode in which two
-  Device sections are placed in the config file, and doesn't support DRI or
-  many other features.  Instead, only "MergedFB-style" dualhead is supported.
-- No support for X Screens larger than 2048 pixels in either direction
-  before the 965.  This reflects hardware limitations in the x direction on
-  those older chips, and limits dualhead functionality.  It may be possible to
-  extend the limit vertically on these older chips.
-- i855 XV may cause hangs.  This was present in the previous release, and no
-  workaround is known.
-- SDVO TV-out cards not supported.  This should be fixed in the next
-  release.
-- Gray output with integrated TV-out and PAL TVs.
-- EXA support unstable on i845.
-- Some GM965 systems, such as the Thinkpad T61, probe the TV as being connected
-  even when no output connector is available.  This results in the gnome-panel
-  issue noted below.
+	http://lists.freedesktop.org/mailman/listinfo/intel-gfx
 
-Common issues not caused by the driver
-- Font sizes (DPI) are wrong.  Some displays incorrectly report their
-  physical size, which is harmless on most OSes that always assume 96dpi
-  displays.  This can be fixed through quirks for specific monitors in the X
-  Server, and the output of xrandr --prop along with a physical measurement of
-  the screen size in a bug report against the server can help get that fixed.
-- gnome-panel is located in the middle of the screen.  gnome-panel places
-  itself within head #0's boundaries, which doesn't work well with a second
-  head covering the same area as head #0 but larger.
-- Older resolution-changing applications have poor results in
-  multihead systems.  Previous extensions such as RandR 1.1 exposed only a
-  single output to client programs, and those requests map poorly to multi-head
-  systems.  Currently, those requests map to just one of the outputs in the
-  RandR 1.2 environment, and those applications need to be updated to RandR 1.2
-  API when available for better results.
+To report bugs encountered with the driver:
 
-The X11R6 version of this driver originally came from XFree86 4.4 rc2.
+	http://bugs.freedesktop.org
 
-The XFree86 version of this driver was donated to The XFree86 Project by:
-    Precision Insight, Inc.
-    Cedar Park, TX
-    USA
+	Product:	xorg
+	Component:	Driver/intel
 
-The X.Org version of this driver is maintained by Intel Corporation.
-<http://www.intellinuxgraphics.org>
+To see bugs that are targeted to be fixed in the next release:
+
+	https://bugs.freedesktop.org/show_bug.cgi?id=intel-2d-release

commit 6f48379fb8e5997b4b2098b7df5bed399bc559f6
Author: Li Peng <peng.li@intel.com>
Date:   Fri Apr 10 14:39:35 2009 +0800

    Turn on front buffer tiling in KMS.
    
    This code disabled front buffer tiling in KMS. Turn it on since kernel
    handles all tiling now, this improves performance of x11perf -aa10text
    from 97k to 286k on my 945GME.
    
    Should help with #20761, if not totally fix it.
    
    Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
    Signed-off-by: Li Peng <peng.li@intel.com>
    (cherry picked from commit 9b615a52671aacf34666f90ecfff98651ce6afe2)

diff --git a/src/i830_memory.c b/src/i830_memory.c
index 0f8d90d..d3138d9 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -1244,8 +1244,6 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn)
 	tile_format = TILE_XMAJOR;
     if (pI830->accel == ACCEL_XAA && IS_I965G(pI830))
 	tile_format = TILE_NONE;
-    if (pI830->use_drm_mode)
-	tile_format = TILE_NONE;
 
     if (!IsTileable(pScrn, pitch))
 	tile_format = TILE_NONE;

commit c8633c82278085917bd6b0d0ea6e8a74eaa6deb4
Author: Ma Ling <ling.ma@intel.com>
Date:   Mon Apr 13 14:27:35 2009 +0800

    update manpage for BROADCAST_RGB property
    (cherry picked from commit 053432991c812146f6e7c6f13c6ace55385c825f)

diff --git a/man/intel.man b/man/intel.man
index 6ccacda..f85d3d1 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -321,6 +321,14 @@ First DVI SDVO output
 .SS "TMDS-2"
 Second DVI SDVO output
 
+.SS "TMDS-1", "TMDS-2", "HDMI-1", "HDMI-2"
+DVI/HDMI outputs. Avaliable common properties include:
+.PP
+.B BROADCAST_RGB
+- method used to set RGB color range(full range 0-255, not full range 16-235)
+.TP 2
+Adjusting this propertie allows you to set RGB color range on each channel in order to match HDTV requirment(default 0 for full range). Setting 1 means RGB color range is 16-235, 0 means RGB color range is 0-255 on each channel.
+
 .PP
 SDVO and DVO TV outputs are not supported by the driver at this time.
 

commit 02c8a1a6e821a7c70c19329bd9ead4f9fcdcfe8a
Author: Ma Ling <ling.ma@intel.com>
Date:   Mon Apr 13 14:24:57 2009 +0800

    set broadcast RGB mode for integrated HDMI output.
    (cherry picked from commit 62ba7211fe9b6aada125ebfe34cf7161e817ad6b)

diff --git a/src/i830_hdmi.c b/src/i830_hdmi.c
index 05aa9ac..0abb151 100644
--- a/src/i830_hdmi.c
+++ b/src/i830_hdmi.c
@@ -33,6 +33,7 @@
 #include "i830.h"
 #include "xf86Modes.h"
 #include "i830_display.h"
+#include "X11/Xatom.h"
 
 struct i830_hdmi_priv {
     uint32_t output_reg;
@@ -40,8 +41,12 @@ struct i830_hdmi_priv {
     uint32_t save_SDVO;
 
     Bool has_hdmi_sink;
+    /* Default 0 for full RGB range 0-255, 1 is for RGB range 16-235 */
+    uint32_t broadcast_rgb;
 };
 
+static Atom broadcast_atom;
+
 static int
 i830_hdmi_mode_valid(xf86OutputPtr output, DisplayModePtr mode)
 {
@@ -214,7 +219,91 @@ i830_hdmi_destroy (xf86OutputPtr output)
     }
 }
 
+static void
+i830_hdmi_create_resources(xf86OutputPtr output)
+{
+    ScrnInfoPtr                 pScrn = output->scrn;
+    I830Ptr                     pI830 = I830PTR(pScrn);
+    I830OutputPrivatePtr        intel_output = output->driver_private;
+    struct i830_hdmi_priv       *dev_priv = intel_output->dev_priv;
+    INT32			broadcast_range[2];
+    int                         err;
+
+    /* only R G B are 8bit color mode */
+    if (pScrn->depth != 24 ||
+        /* only 965G and G4X platform */
+        !(IS_I965G(pI830) || IS_G4X(pI830)))
+        return;
+
+    broadcast_atom =
+        MakeAtom("BROADCAST_RGB", sizeof("BROADCAST_RGB") - 1, TRUE);
+
+    broadcast_range[0] = 0;
+    broadcast_range[1] = 1;
+    err = RRConfigureOutputProperty(output->randr_output,
+                                    broadcast_atom,
+                                    FALSE, TRUE, FALSE, 2, broadcast_range);
+    if (err != 0) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                   "RRConfigureOutputProperty error, %d\n", err);
+        return;
+    }
+    /* Set the current value of the broadcast property as full range */
+    dev_priv->broadcast_rgb = 0;
+    err = RRChangeOutputProperty(output->randr_output,
+                                 broadcast_atom,
+                                 XA_INTEGER, 32, PropModeReplace,
+                                 1, &dev_priv->broadcast_rgb,
+                                 FALSE, TRUE);
+    if (err != 0) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                   "RRChangeOutputProperty error, %d\n", err);
+        return;
+    }
+}
+
+static Bool
+i830_hdmi_set_property(xf86OutputPtr output, Atom property,
+                       RRPropertyValuePtr value)
+{
+    ScrnInfoPtr             pScrn = output->scrn;
+    I830Ptr                 pI830 = I830PTR(pScrn);
+    I830OutputPrivatePtr    intel_output = output->driver_private;
+    struct i830_hdmi_priv   *dev_priv = intel_output->dev_priv;
+    uint32_t temp;
+
+    if (property == broadcast_atom) {
+        uint32_t val;
+
+        if (value->type != XA_INTEGER || value->format != 32 ||
+            value->size != 1)
+        {
+            return FALSE;
+        }
+
+        val = *(INT32 *)value->data;
+        if (val < 0 || val > 1)
+        {
+            return FALSE;
+        }
+        if (val == dev_priv->broadcast_rgb)
+            return TRUE;
+
+        temp = INREG(dev_priv->output_reg);
+
+        if (val == 1)
+            temp |= SDVO_COLOR_NOT_FULL_RANGE;
+        else if (val == 0)
+            temp &= ~SDVO_COLOR_NOT_FULL_RANGE;
+
+        OUTREG(dev_priv->output_reg, temp);
+        dev_priv->broadcast_rgb = val;
+    }
+    return TRUE;
+}
+
 static const xf86OutputFuncsRec i830_hdmi_output_funcs = {
+    .create_resources = i830_hdmi_create_resources,
     .dpms = i830_hdmi_dpms,
     .save = i830_hdmi_save,
     .restore = i830_hdmi_restore,
@@ -225,6 +314,7 @@ static const xf86OutputFuncsRec i830_hdmi_output_funcs = {
     .commit = i830_output_commit,
     .detect = i830_hdmi_detect,
     .get_modes = i830_ddc_get_modes,
+    .set_property = i830_hdmi_set_property,
     .destroy = i830_hdmi_destroy
 };
 

commit 87dcf09b137a26919d36bf0cb659ff95bdb97c9b
Author: Ma Ling <ling.ma@intel.com>
Date:   Mon Apr 13 14:23:06 2009 +0800

    set broadcast RGB mode for HDMI and TMDS from SDVOX output
    
    Almost all digital TVs accept broadcast RGB values from 16 to 235 for each channel,
    otherwise for those uncompensated videos, when RGB values are set from 0 to 255,
    they will shows black and whiter clamping, which seriously degrades picture quality.
    The patch will enable the broadcast RGB mode for hdtv according to user's setting.
    It fixed bug #14486
    (cherry picked from commit 69388953ce889080d5f014123d89bf3eb45f3d8d)

diff --git a/src/i810_reg.h b/src/i810_reg.h
index 5211400..7e587f9 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -1299,6 +1299,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define SDVO_ENCODING_HDMI			(0x2 << 10)
 /** Requird for HDMI operation */
 #define SDVO_NULL_PACKETS_DURING_VSYNC		(1 << 9)
+#define SDVO_COLOR_NOT_FULL_RANGE		(1 << 8)
 #define SDVO_BORDER_ENABLE			(1 << 7)
 #define SDVO_AUDIO_ENABLE			(1 << 6)
 /** New with 965, default is to be set */
diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index a7b5171..29ccd4e 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -49,6 +49,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "i830_display.h"
 #include "i810_reg.h"
 #include "i830_sdvo_regs.h"
+#include "X11/Xatom.h"
 
 /** SDVO driver private structure. */
 struct i830_sdvo_priv {
@@ -110,6 +111,8 @@ struct i830_sdvo_priv {
 
     /** DDC bus used by this SDVO output */
     uint8_t ddc_bus;
+    /* Default 0 for full RGB range 0-255, 1 is for RGB range 16-235 */
+    uint32_t broadcast_rgb;
 
     /** State for save/restore */
     /** @{ */
@@ -121,6 +124,8 @@ struct i830_sdvo_priv {
     /** @} */
 };
 
+static Atom broadcast_atom;
+
 /**
  * Writes the SDVOB or SDVOC with the given value, but always writes both
  * SDVOB and SDVOC to work around apparent hardware issues (according to
@@ -1927,7 +1932,94 @@ i830_sdvo_get_crtc(xf86OutputPtr output)
 }
 #endif
 
+static void
+i830_sdvo_create_resources(xf86OutputPtr output)
+{
+    ScrnInfoPtr                 pScrn = output->scrn;
+    I830Ptr                     pI830 = I830PTR(pScrn);
+    I830OutputPrivatePtr        intel_output = output->driver_private;
+    struct i830_sdvo_priv       *dev_priv = intel_output->dev_priv;
+    INT32			broadcast_range[2];
+    int                         err;
+
+    /* only R G B are 8bit color mode */
+    if (pScrn->depth != 24 ||
+        /* only 965G and G4X platform */
+        !(IS_I965G(pI830) || IS_G4X(pI830)) ||
+        /* only TMDS encoding */
+        !(strstr(output->name, "TMDS") || strstr(output->name, "HDMI")))
+        return;
+
+    broadcast_atom =
+        MakeAtom("BROADCAST_RGB", sizeof("BROADCAST_RGB") - 1, TRUE);
+
+    broadcast_range[0] = 0;
+    broadcast_range[1] = 1;
+    err = RRConfigureOutputProperty(output->randr_output,
+                                    broadcast_atom,
+                                    FALSE, TRUE, FALSE, 2, broadcast_range);
+    if (err != 0) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                   "RRConfigureOutputProperty error, %d\n", err);
+        return;
+    }
+    /* Set the current value of the broadcast property as full range */
+    dev_priv->broadcast_rgb = 0;
+    err = RRChangeOutputProperty(output->randr_output,
+                                 broadcast_atom,
+                                 XA_INTEGER, 32, PropModeReplace,
+                                 1, &dev_priv->broadcast_rgb,
+                                 FALSE, TRUE);
+    if (err != 0) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                   "RRChangeOutputProperty error, %d\n", err);
+        return;
+    }
+}
+
+static Bool
+i830_sdvo_set_property(xf86OutputPtr output, Atom property,
+		       RRPropertyValuePtr value)
+{
+    ScrnInfoPtr             pScrn = output->scrn;
+    I830Ptr                 pI830 = I830PTR(pScrn);
+    I830OutputPrivatePtr    intel_output = output->driver_private;
+    struct i830_sdvo_priv   *dev_priv = intel_output->dev_priv;
+    uint32_t temp;
+
+    if (property == broadcast_atom) {
+        uint32_t val;
+
+        if (value->type != XA_INTEGER || value->format != 32 ||
+            value->size != 1)
+        {
+            return FALSE;
+        }
+
+        val = *(INT32 *)value->data;
+        if (val < 0 || val > 1)
+        {
+            return FALSE;
+        }
+        if (val == dev_priv->broadcast_rgb)
+            return TRUE;
+
+        temp = INREG(dev_priv->output_device);
+
+        if (val == 1)
+            temp |= SDVO_COLOR_NOT_FULL_RANGE;
+        else if (val == 0)
+            temp &= ~SDVO_COLOR_NOT_FULL_RANGE;
+
+        i830_sdvo_write_sdvox(output, temp);
+
+        dev_priv->broadcast_rgb = val;
+    }
+    return TRUE;
+}
+
 static const xf86OutputFuncsRec i830_sdvo_output_funcs = {
+    .create_resources = i830_sdvo_create_resources,
     .dpms = i830_sdvo_dpms,
     .save = i830_sdvo_save,
     .restore = i830_sdvo_restore,
@@ -1938,6 +2030,7 @@ static const xf86OutputFuncsRec i830_sdvo_output_funcs = {
     .commit = i830_output_commit,
     .detect = i830_sdvo_detect,
     .get_modes = i830_sdvo_get_modes,
+    .set_property = i830_sdvo_set_property,
     .destroy = i830_sdvo_destroy,
 #ifdef RANDR_GET_CRTC_INTERFACE
     .get_crtc = i830_sdvo_get_crtc,

commit 387b5be8e7efdb9aa2cfb8bb64b92fae69241f1b
Author: Carl Worth <cworth@cworth.org>
Date:   Fri Apr 10 14:07:14 2009 -0700

    Add a RELEASING file documenting the release process
    
    Thanks to Jesse Barnes for the original recipe.
    (cherry picked from commit 6d345c49f693cc5cffaa00b94559d2afcb3a0864)

diff --git a/RELEASING b/RELEASING
new file mode 100644
index 0000000..c4006c3
--- /dev/null
+++ b/RELEASING
@@ -0,0 +1,32 @@
+The process for releasing a new tarball is as follows:
+
+1. make sure you have the latest build requirements installed:
+
+	git://git.freedesktop.org/git/util/macros
+	git://git.freedesktop.org/git/util/modular
+
+2. update your module version (usually found in configure.ac)
+
+	$ vi configure.ac # bump version
+        $ git push origin # make sure you're on the release branch
+
+3. verify your module builds
+
+	$ make distcheck
+
+4. tag the release
+
+	$ git tag -m "Intel <ver> release" xf86-video-intel-<ver>
+
+5. run the release script (this should push the tag)
+
+	$ <path_to>/util/modular/release.sh driver xf86-video-intel-<last_ver> xf86-video-intel-<ver>
+
+6. edit the generated release message as needed and send it out
+
+	for major releases list added features and known limitations
+
+	for minor releases indicate which bugs were fixed and which
+	are still present
+
+7. throw a release party, you're done! :)

commit 121bd7ff7cfd9a43fbb61fa56f06ba2d2b55035e
Author: Carl Worth <cworth@cworth.org>
Date:   Fri Apr 10 14:08:00 2009 -0700

    Increment version to 2.6.99.903 for release

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

commit ec8ef3b2984cef581ea7fa745a76fe6f97a952dd
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Wed Apr 8 15:49:00 2009 -0700

    Don't enable kernel execbuf fencing w/EXA
    
    If we enable kernel execbuf fence register management, it's best if the
    kernel manages all fence registers.  This works fine if the accel
    method is managing pixmaps or doesn't use offscreen pixmaps.  However
    with EXA, pixmap accesses are done relative to the framebuffer BAR
    mapping (pI830->FbBase) and the Screen pixmap address.  So if we try to
    set the screen pixmap to point at a GTT mapped (and therefore properly
    fenced) address, later calls to intel_get_pixmap_offset() will call
    into EXA, which will use the pseudo-random pixmap addr and the EXA
    offscreen base addr (which is really just FbBase) to calculate the
    offset.  This will fail.  So disable kernel fence reg management in the
    EXA case (this is easier than adding proper EXA pixmap management to
    xf86-video-intel, and makes more sense since we'll be removing EXA soon
    anyway).
    
    Fixes FDO #21027.
    
    Also happens to fix FDO #21029 (as tested by Carl Worth <cworth@cworth.org).
    (cherry picked from commit 620e97bbd6a811ad69b8ac94df1fe2c9edf65549)

diff --git a/src/i830_memory.c b/src/i830_memory.c
index e3314c5..0f8d90d 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -533,14 +533,15 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size)
 		struct drm_i915_gem_init init;
 		int ret;
 
-		sp.param = I915_SETPARAM_NUM_USED_FENCES;
-		sp.value = 0; /* kernel gets them all */
-
-		ret = drmCommandWrite(pI830->drmSubFD, DRM_I915_SETPARAM, &sp,
-				      sizeof(sp));
-		if (ret == 0)
-		    pI830->kernel_exec_fencing = TRUE;
-
+		if (pI830->accel == ACCEL_UXA) {
+		    sp.param = I915_SETPARAM_NUM_USED_FENCES;
+		    sp.value = 0; /* kernel gets them all */
+
+		    ret = drmCommandWrite(pI830->drmSubFD, DRM_I915_SETPARAM,
+					  &sp, sizeof(sp));
+		    if (ret == 0)
+			pI830->kernel_exec_fencing = TRUE;
+		}
 		init.gtt_start = pI830->memory_manager->offset;
 		init.gtt_end = pI830->memory_manager->offset +
 		    pI830->memory_manager->size;

commit 404fdcc5bc9dd32d39112d8a49a5617dbb886a40
Author: Shuang He <shuang.he@intel.com>
Date:   Tue Apr 7 12:31:07 2009 -0700

    Fix value for MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW
    
    Since the change to scan-line based video sync, (rather than vblank-
    based), we've only been getting tear-free video on one of the two
    pipes. This fixes that bug by using the correct constant for waiting
    on PIPEA.
    (cherry picked from commit 0a0731c11d10392cdc55ecc04e4e3575c8b3fe57)

diff --git a/src/i810_reg.h b/src/i810_reg.h
index c964569..5211400 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -2442,7 +2442,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define MI_WAIT_FOR_PIPEB_VBLANK		(1<<7)
 #define MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW	(1<<5)
 #define MI_WAIT_FOR_PIPEA_VBLANK		(1<<3)
-#define MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW	(1<<2)
+#define MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW	(1<<1)
 
 /* Set the scan line for MI_WAIT_FOR_PIPE?_SCAN_LINE_WINDOW */
 #define MI_LOAD_SCAN_LINES_INCL			(0x12<<23)

commit 7b74b77557aa4100017ef3f9d344fb4071ae8470
Author: Carl Worth <cworth@cworth.org>
Date:   Mon Apr 6 14:36:33 2009 -0700

    Don't clip video to CRTC in the case of textured video
    
    Since we're not limited by a single overlay plane on a single pipe,
    we want to not clip at all, (so that the correct video appears on
    both pipes).
    
    This fixes bug #20980 which shows a video spanning two pipes
    being rendered incorrectly.
    (cherry picked from commit 940c2aad4d174b6609bdc49f8c99a4bc37926516)

diff --git a/src/i830_video.c b/src/i830_video.c
index 13f3ab1..4ed3047 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2146,7 +2146,8 @@ i830_clip_video_helper (ScrnInfoPtr pScrn,
 						   pPriv->desired_crtc,
 						   &crtc_box);
 	
-	if (crtc)
+	/* For textured video, we don't actually want to clip at all. */
+	if (crtc && !pPriv->textured)
 	{
 	    REGION_INIT (pScreen, &crtc_region_local, &crtc_box, 1);
 	    crtc_region = &crtc_region_local;

commit d8ce818c4e4ca0c348c16ead1b747165bce4bedb
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date:   Tue Apr 7 10:53:08 2009 +0800

    quirk LVDS on ibase MB890 855GM board
    
    fix bug #19529
    (cherry picked from commit 63b4b5efac936c674dedad8125a8dbac4f000908)

diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index 8680baf..78292f7 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -236,6 +236,17 @@ static void quirk_msi_lvds_dmi (I830Ptr pI830)
    }
 }
 
+static void quirk_ibase_lvds (I830Ptr pI830)
+{
+   if (!i830_dmi_data[board_name]) {
+       ErrorF("Failed to load DMI info, iBase LVDS quirk not applied.\n");
+       return;


Reply to: