xserver-xorg-video-intel: Changes to 'debian-unstable'
ChangeLog | 1248 ++++++++++++++++++++++++++++++++++++++++++--
config.guess | 6
config.sub | 10
configure | 450 +++++++++++----
configure.ac | 21
debian/changelog | 23
debian/control | 2
debian/xsfbs/xsfbs.mk | 50 -
debian/xsfbs/xsfbs.sh | 7
man/intel.man | 27
src/Makefile.am | 2
src/Makefile.in | 2
src/bios_reader/Makefile.am | 2
src/bios_reader/Makefile.in | 16
src/ch7017/ch7017.c | 75 +-
src/ch7017/ch7017_reg.h | 14
src/ch7xxx/ch7xxx.c | 28
src/common.h | 61 +-
src/fix.5c | 14
src/i810.h | 9
src/i810_dri.c | 20
src/i810_driver.c | 252 ++++++++
src/i810_reg.h | 51 +
src/i830.h | 187 +++++-
src/i830_accel.c | 13
src/i830_bios.c | 4
src/i830_common.h | 27
src/i830_cursor.c | 58 ++
src/i830_debug.c | 70 ++
src/i830_display.c | 326 ++++++++---
src/i830_dri.c | 598 ++++++++++-----------
src/i830_dri.h | 2
src/i830_driver.c | 932 ++++++++++++++++++--------------
src/i830_dvo.c | 22
src/i830_exa.c | 151 ++++-
src/i830_lvds.c | 499 +++++++++++++++--
src/i830_memory.c | 1143 +++++++++++++++++++++++++---------------
src/i830_quirks.c | 38 +
src/i830_render.c | 3
src/i830_tv.c | 78 ++
src/i830_video.c | 224 ++-----
src/i830_video.h | 17
src/i830_xaa.c | 114 ++--
src/i915_render.c | 43 -
src/i915_video.c | 20
src/i965_render.c | 26
src/i965_video.c | 8
src/ivch/ivch.c | 20
src/reg_dumper/main.c | 10
src/scripts/clock-graph.5c | 174 ++++++
src/scripts/clock.5c | 40 +
src/scripts/fix.5c | 14
src/scripts/tv.5c | 128 ++++
src/sil164/sil164.c | 20
src/sil164/sil164_reg.h | 1
src/tfp410/tfp410.c | 28
src/tfp410/tfp410_reg.h | 2
src/tv.5c | 128 ----
src/xvmc/I810XvMC.h | 1
59 files changed, 5419 insertions(+), 2140 deletions(-)
New commits:
commit ff13240b8f79609b4db51c432919525cede0029b
Author: Brice Goglin <bgoglin@debian.org>
Date: Fri Nov 16 09:40:43 2007 +0100
Prepare changelog for upload
diff --git a/debian/changelog b/debian/changelog
index 07377c4..d655cb5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,11 @@
-xserver-xorg-video-intel (2:2.2.0-1) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.2.0-1) unstable; urgency=low
* New upstream release.
+ Also pull bugfix commit 4a2b0f340357c4ca58dc9586fad1337b83966362.
+ Fix backlight problems on various chipsets,
closes: #443111, #438969, #439744.
+ Fix some issues with high resolution, closes: #420840.
+ * Add myself to Uploaders and remove Branden with his permission.
-- Brice Goglin <bgoglin@debian.org> Fri, 16 Nov 2007 09:30:26 +0100
diff --git a/debian/control b/debian/control
index b5cde9b..98c6585 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: xserver-xorg-video-intel
Section: x11
Priority: optional
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
-Uploaders: David Nusinow <dnusinow@debian.org>, Branden Robinson <branden@debian.org>, Drew Parsons <dparsons@debian.org>, Julien Cristau <jcristau@debian.org>
+Uploaders: David Nusinow <dnusinow@debian.org>, Drew Parsons <dparsons@debian.org>, Julien Cristau <jcristau@debian.org>, Brice Goglin <bgoglin@debian.org>
Build-Depends: debhelper (>= 5), quilt, pkg-config, xserver-xorg-dev (>= 2:1.4), x11proto-gl-dev, x11proto-video-dev, libgl1-mesa-dev | libgl-dev, libxvmc-dev (>= 1:1.0.1-1), x11proto-core-dev, x11proto-fonts-dev, x11proto-randr-dev (>= 1.2), x11proto-render-dev, x11proto-xinerama-dev, libdrm-dev (>= 2.2) [!hurd-i386], x11proto-xf86dri-dev
Standards-Version: 3.7.2
XS-Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-video-intel
commit d7378bcf4456cbaceefbdaebde05b7f3ebadfc61
Author: Brice Goglin <bgoglin@debian.org>
Date: Fri Nov 16 09:39:22 2007 +0100
New upstream release
diff --git a/configure b/configure
index 07ce1e3..77b3c18 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for xf86-video-intel 2.1.99.
+# Generated by GNU Autoconf 2.61 for xf86-video-intel 2.2.0.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='xf86-video-intel'
PACKAGE_TARNAME='xf86-video-intel'
-PACKAGE_VERSION='2.1.99'
-PACKAGE_STRING='xf86-video-intel 2.1.99'
+PACKAGE_VERSION='2.2.0'
+PACKAGE_STRING='xf86-video-intel 2.2.0'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
ac_unique_file="Makefile.am"
@@ -1451,7 +1451,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xf86-video-intel 2.1.99 to adapt to many kinds of systems.
+\`configure' configures xf86-video-intel 2.2.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1521,7 +1521,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xf86-video-intel 2.1.99:";;
+ short | recursive ) echo "Configuration of xf86-video-intel 2.2.0:";;
esac
cat <<\_ACEOF
@@ -1646,7 +1646,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xf86-video-intel configure 2.1.99
+xf86-video-intel configure 2.2.0
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1660,7 +1660,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xf86-video-intel $as_me 2.1.99, which was
+It was created by xf86-video-intel $as_me 2.2.0, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2355,7 +2355,7 @@ fi
# Define the identity of the package.
PACKAGE='xf86-video-intel'
- VERSION='2.1.99'
+ VERSION='2.2.0'
cat >>confdefs.h <<_ACEOF
@@ -22759,7 +22759,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xf86-video-intel $as_me 2.1.99, which was
+This file was extended by xf86-video-intel $as_me 2.2.0, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -22812,7 +22812,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-xf86-video-intel config.status 2.1.99
+xf86-video-intel config.status 2.2.0
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/debian/changelog b/debian/changelog
index b19cd1c..07377c4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+xserver-xorg-video-intel (2:2.2.0-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+ + Also pull bugfix commit 4a2b0f340357c4ca58dc9586fad1337b83966362.
+ + Fix backlight problems on various chipsets,
+ closes: #443111, #438969, #439744.
+ + Fix some issues with high resolution, closes: #420840.
+
+ -- Brice Goglin <bgoglin@debian.org> Fri, 16 Nov 2007 09:30:26 +0100
+
xserver-xorg-video-intel (2:2.1.99-1) experimental; urgency=low
[ David Nusinow ]
commit 4a2b0f340357c4ca58dc9586fad1337b83966362
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Thu Nov 15 18:36:54 2007 -0800
Fix typo in 1920x1080 resolution entry
diff --git a/src/i830_tv.c b/src/i830_tv.c
index 524a0d3..14f4089 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -1398,7 +1398,7 @@ static struct input_res {
{"1280x1024", 1280, 1024},
{"848x480", 848, 480},
{"1280x720", 1280, 720},
- {"1920x108", 1920, 1080},
+ {"1920x1080", 1920, 1080},
};
/**
commit 04b60b6d3436fb57163c23acf335364f0ea2f79c
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Thu Nov 15 11:49:53 2007 -0800
Bump version to 2.2.0
diff --git a/configure.ac b/configure.ac
index b79aac8..20aebb4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-intel],
- 2.1.99,
+ 2.2.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-intel)
commit 6eecef4fed8a21dfdabef42eb69fd150b96167b2
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Thu Nov 15 10:10:59 2007 -0800
Adjust default TV out paramaters
According to several users, a default brightness of 0 results in much better TV
output. Improved control of these parameters will be provided by Randr1.3,
which will standardize several output properties across various chips.
diff --git a/src/i830_tv.c b/src/i830_tv.c
index e54786a..524a0d3 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -1178,7 +1178,7 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode,
(i830_float_to_csc(color_conversion->bv) << 16) |
(i830_float_to_luma(color_conversion->av)));
- OUTREG(TV_CLR_KNOBS, 0x10606000);
+ OUTREG(TV_CLR_KNOBS, 0x00606000);
OUTREG(TV_CLR_LEVEL, ((video_levels->black << TV_BLACK_LEVEL_SHIFT) |
(video_levels->blank << TV_BLANK_LEVEL_SHIFT)));
{
commit 7552d80e367fe38bbc594fe94abd649917fe54d5
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Thu Nov 15 10:07:34 2007 -0800
Add 1920x1080 mode to TV out
Allows users to use 1080p modes on TV out, see bug #13034.
diff --git a/src/i830_tv.c b/src/i830_tv.c
index ee2538a..e54786a 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -1398,6 +1398,7 @@ static struct input_res {
{"1280x1024", 1280, 1024},
{"848x480", 848, 480},
{"1280x720", 1280, 720},
+ {"1920x108", 1920, 1080},
};
/**
commit e56c166ceb8c1ceddd5020e8de2d0b9d51f535a4
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date: Thu Nov 15 18:34:18 2007 +0800
remove unnecessary i830_reg.h includes
i830_reg.h only contains 3d engine cmds for 8XX chips.
diff --git a/src/i830_display.c b/src/i830_display.c
index 223a6aa..0e42624 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -38,7 +38,6 @@
#include "xf86.h"
#include "i830.h"
-#include "i830_reg.h"
#include "i830_bios.h"
#include "i830_display.h"
#include "i830_debug.h"
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 5d56104..7818ee4 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -194,7 +194,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "vbe.h"
#include "shadow.h"
#include "i830.h"
-#include "i830_reg.h"
#include "i830_display.h"
#include "i830_debug.h"
#include "i830_bios.h"
diff --git a/src/i830_exa.c b/src/i830_exa.c
index 56bc15e..32c55dd 100644
--- a/src/i830_exa.c
+++ b/src/i830_exa.c
@@ -35,7 +35,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "xaarop.h"
#include "i830.h"
#include "i810_reg.h"
-#include "i830_reg.h"
#include <string.h>
#ifdef I830DEBUG
diff --git a/src/i830_memory.c b/src/i830_memory.c
index 1ad4438..85b6528 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -106,7 +106,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "i830.h"
#include "i810_reg.h"
-#include "i830_reg.h"
#define ALIGN(i,m) (((i) + (m) - 1) & ~((m) - 1))
commit 6f3de19159cd7a2d73ed212add909edb3aedce9c
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date: Thu Nov 15 18:33:27 2007 +0800
Move fb compression reg definition into i810_reg.h
where we put MMIO control reg in, and shared with intel_reg_dump
program.
diff --git a/src/i810_reg.h b/src/i810_reg.h
index 598fc8c..a6663a4 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -2596,4 +2596,37 @@ typedef enum {
#define PALETTE_A 0x0a000
#define PALETTE_B 0x0a800
+/* Framebuffer compression */
+#define FBC_CFB_BASE 0x03200 /* 4k page aligned */
+#define FBC_LL_BASE 0x03204 /* 4k page aligned */
+#define FBC_CONTROL 0x03208
+#define FBC_CTL_EN (1<<31)
+#define FBC_CTL_PERIODIC (1<<30)
+#define FBC_CTL_INTERVAL_SHIFT (16)
+#define FBC_CTL_UNCOMPRESSIBLE (1<<14)
+#define FBC_CTL_STRIDE_SHIFT (5)
+#define FBC_CTL_FENCENO (1<<0)
+#define FBC_COMMAND 0x0320c
+#define FBC_CMD_COMPRESS (1<<0)
+#define FBC_STATUS 0x03210
+#define FBC_STAT_COMPRESSING (1<<31)
+#define FBC_STAT_COMPRESSED (1<<30)
+#define FBC_STAT_MODIFIED (1<<29)
+#define FBC_STAT_CURRENT_LINE (1<<0)
+#define FBC_CONTROL2 0x03214
+#define FBC_CTL_FENCE_DBL (0<<4)
+#define FBC_CTL_IDLE_IMM (0<<2)
+#define FBC_CTL_IDLE_FULL (1<<2)
+#define FBC_CTL_IDLE_LINE (2<<2)
+#define FBC_CTL_IDLE_DEBUG (3<<2)
+#define FBC_CTL_CPU_FENCE (1<<1)
+#define FBC_CTL_PLANEA (0<<0)
+#define FBC_CTL_PLANEB (1<<0)
+#define FBC_FENCE_OFF 0x0321b
+#define FBC_MOD_NUM 0x03220
+#define FBC_TAG_DEBUG 0x03300
+
+#define FBC_LL_SIZE (1536)
+#define FBC_LL_PAD (32)
+
#endif /* _I810_REG_H */
diff --git a/src/i830_debug.c b/src/i830_debug.c
index 6963c89..8f8ef9b 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -36,7 +36,6 @@
#include "xf86.h"
#include "i830.h"
-#include "i830_reg.h"
#include "i830_debug.h"
#include <strings.h>
diff --git a/src/i830_reg.h b/src/i830_reg.h
index 4d7736a..7a8df9f 100644
--- a/src/i830_reg.h
+++ b/src/i830_reg.h
@@ -29,39 +29,6 @@
#ifndef _I830_REG_H_
#define _I830_REG_H_
-/* Framebuffer compression */
-#define FBC_CFB_BASE 0x03200 /* 4k page aligned */
-#define FBC_LL_BASE 0x03204 /* 4k page aligned */
-#define FBC_CONTROL 0x03208
-#define FBC_CTL_EN (1<<31)
-#define FBC_CTL_PERIODIC (1<<30)
-#define FBC_CTL_INTERVAL_SHIFT (16)
-#define FBC_CTL_UNCOMPRESSIBLE (1<<14)
-#define FBC_CTL_STRIDE_SHIFT (5)
-#define FBC_CTL_FENCENO (1<<0)
-#define FBC_COMMAND 0x0320c
-#define FBC_CMD_COMPRESS (1<<0)
-#define FBC_STATUS 0x03210
-#define FBC_STAT_COMPRESSING (1<<31)
-#define FBC_STAT_COMPRESSED (1<<30)
-#define FBC_STAT_MODIFIED (1<<29)
-#define FBC_STAT_CURRENT_LINE (1<<0)
-#define FBC_CONTROL2 0x03214
-#define FBC_CTL_FENCE_DBL (0<<4)
-#define FBC_CTL_IDLE_IMM (0<<2)
-#define FBC_CTL_IDLE_FULL (1<<2)
-#define FBC_CTL_IDLE_LINE (2<<2)
-#define FBC_CTL_IDLE_DEBUG (3<<2)
-#define FBC_CTL_CPU_FENCE (1<<1)
-#define FBC_CTL_PLANEA (0<<0)
-#define FBC_CTL_PLANEB (1<<0)
-#define FBC_FENCE_OFF 0x0321b
-#define FBC_MOD_NUM 0x03220
-#define FBC_TAG_DEBUG 0x03300
-
-#define FBC_LL_SIZE (1536)
-#define FBC_LL_PAD (32)
-
#define I830_SET_FIELD( var, mask, value ) (var &= ~(mask), var |= value)
#define CMD_3D (0x3<<29)
commit e64f4929690a57701241334fbca17e95b39ba3d4
Author: Jesse Barnes <jesse.barnes@intel.com>
Date: Wed Nov 14 16:44:34 2007 -0800
Backlight fixes
Open the "actual_brightness" file as read only, since we only read from it.
Also set an initial backlight_duty_cycle at init time so we don't set the
brightness to 0 at startup.
diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index 0942d1c..a3a56f7 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -295,7 +295,7 @@ i830_lvds_get_backlight_kernel(xf86OutputPtr output)
sprintf(path, "%s/%s/actual_brightness", BACKLIGHT_CLASS,
backlight_interfaces[backlight_index]);
- fd = open(path, O_RDWR);
+ fd = open(path, O_RDONLY);
if (fd == -1) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "failed to open %s for backlight "
"control: %s\n", path, strerror(errno));
@@ -1015,6 +1015,8 @@ i830_lvds_init(ScrnInfoPtr pScrn)
break;
}
+ dev_priv->backlight_duty_cycle = dev_priv->backlight_max;
+
return;
disable_exit:
commit 53e3693ef13f31f3fc33bcff7286ab2b03b2d430
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Wed Nov 14 16:24:56 2007 -0800
Disable FBC by default on 965GM
Several people have reported that they see frequent FBC related display
corruption on 965GM, so disable it for now. Users wanting to enable it can use
the driver option "Framebuffercompression" to override the default.
diff --git a/src/i830_driver.c b/src/i830_driver.c
index abe6932..5d56104 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -2449,7 +2449,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
}
/* Enable FB compression if possible */
- if (i830_fb_compression_supported(pI830))
+ if (i830_fb_compression_supported(pI830) && !IS_I965GM(pI830))
pI830->fb_compression = TRUE;
else
pI830->fb_compression = FALSE;
commit b2726899bc6ebd108aa4a5dd66fe1d881bb778b3
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Wed Nov 14 15:49:41 2007 -0800
Add more FBC regs
Needed for the new debug code
diff --git a/src/i830_reg.h b/src/i830_reg.h
index df22ed4..4d7736a 100644
--- a/src/i830_reg.h
+++ b/src/i830_reg.h
@@ -56,6 +56,8 @@
#define FBC_CTL_PLANEA (0<<0)
#define FBC_CTL_PLANEB (1<<0)
#define FBC_FENCE_OFF 0x0321b
+#define FBC_MOD_NUM 0x03220
+#define FBC_TAG_DEBUG 0x03300
#define FBC_LL_SIZE (1536)
#define FBC_LL_PAD (32)
commit b7bc694c6b98dac17763426d905a22d3ae17a018
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Wed Nov 14 15:46:57 2007 -0800
Fix kernel get_brightness function
We need to look at "actual_brightness" rather than "brightness". The former
contains the brightness value the kernel driver has actually set, while the
latter is merely what the user requested.
diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index 694414a..0942d1c 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -293,7 +293,7 @@ i830_lvds_get_backlight_kernel(xf86OutputPtr output)
char path[BACKLIGHT_PATH_LEN], val[BACKLIGHT_VALUE_LEN];
int fd;
- sprintf(path, "%s/%s/brightness", BACKLIGHT_CLASS,
+ sprintf(path, "%s/%s/actual_brightness", BACKLIGHT_CLASS,
backlight_interfaces[backlight_index]);
fd = open(path, O_RDWR);
if (fd == -1) {
commit 9ee96ed02aacd953ab58288fddf0fa60f60b668e
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Wed Nov 14 15:44:56 2007 -0800
Correct FBC debug message
To be consistent, it should say 'plane' rather than 'pipe'.
diff --git a/src/i830_display.c b/src/i830_display.c
index ea10c8a..223a6aa 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -646,7 +646,7 @@ i830_disable_fb_compression(xf86CrtcPtr crtc)
/* Wait for compressing bit to clear */
while (INREG(FBC_STATUS) & FBC_STAT_COMPRESSING)
; /* nothing */
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "fbc disabled on pipe %c\n", plane);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "fbc disabled on plane %c\n", plane);
}
/**
commit 675b9471d84059496ca41d427a4f95d419f82be9
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Wed Nov 14 15:17:05 2007 -0800
Add FBC registers to register dump output
Just for completeness.
diff --git a/src/i830_debug.c b/src/i830_debug.c
index 0237182..6963c89 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -36,6 +36,7 @@
#include "xf86.h"
#include "i830.h"
+#include "i830_reg.h"
#include "i830_debug.h"
#include <strings.h>
@@ -403,6 +404,15 @@ static struct i830SnapshotRec {
DEFINEREG2(PIPEACONF, i830_debug_pipeconf),
DEFINEREG2(PIPEASRC, i830_debug_yxminus1),
+ DEFINEREG(FBC_CFB_BASE),
+ DEFINEREG(FBC_LL_BASE),
+ DEFINEREG(FBC_CONTROL),
+ DEFINEREG(FBC_COMMAND),
+ DEFINEREG(FBC_STATUS),
+ DEFINEREG(FBC_CONTROL2),
+ DEFINEREG(FBC_FENCE_OFF),
+ DEFINEREG(FBC_MOD_NUM),
+
DEFINEREG2(FPA0, i830_debug_fp),
DEFINEREG2(FPA1, i830_debug_fp),
DEFINEREG2(DPLL_A, i830_debug_dpll),
commit a2a0821e74a61f53cc7f0c41ce629644ad712114
Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org>
Date: Wed Nov 14 11:30:20 2007 -0800
Don't stop ring before restoring hw state
Some of the hw state restoration callbacks may want to use the ring for various
things like stopping video playback, so leave the ring enabled until we get
back from RestoreHWState. Also rename the functions so that their purpose is
clearer and remove a couple of redundant lines.
diff --git a/src/i830.h b/src/i830.h
index 3abc800..2c1ac86 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -664,7 +664,7 @@ i830_crtc_hide_cursor (xf86CrtcPtr crtc);
void
i830_crtc_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg);
-extern void I830RefreshRing(ScrnInfoPtr pScrn);
+extern void i830_refresh_ring(ScrnInfoPtr pScrn);
extern void I830EmitFlush(ScrnInfoPtr pScrn);
#ifdef I830_XV
diff --git a/src/i830_accel.c b/src/i830_accel.c
index 4d9ea79..7501c2b 100644
--- a/src/i830_accel.c
+++ b/src/i830_accel.c
@@ -249,25 +249,6 @@ I830SelectBuffer(ScrnInfoPtr pScrn, int buffer)
buffer, pI830->bufferOffset);
}
-void
-I830RefreshRing(ScrnInfoPtr pScrn)
-{
- I830Ptr pI830 = I830PTR(pScrn);
-
- /* If we're reaching RefreshRing as a result of grabbing the DRI lock
- * before we've set up the ringbuffer, don't bother.
- */
- if (pI830->LpRing->mem == NULL)
- return;
-
- pI830->LpRing->head = INREG(LP_RING + RING_HEAD) & I830_HEAD_MASK;
- pI830->LpRing->tail = INREG(LP_RING + RING_TAIL);
- pI830->LpRing->space = pI830->LpRing->head - (pI830->LpRing->tail + 8);
- if (pI830->LpRing->space < 0)
- pI830->LpRing->space += pI830->LpRing->mem->size;
- i830MarkSync(pScrn);
-}
-
/* The following function sets up the supported acceleration. Call it
* from the FbInit() function in the SVGA driver, or before ScreenInit
* in a monolithic server.
diff --git a/src/i830_dri.c b/src/i830_dri.c
index 4928808..b223b02 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -1093,7 +1093,7 @@ I830DRISwapContext(ScreenPtr pScreen, DRISyncType syncType,
if (!pScrn->vtSema)
return;
pI830->LockHeld = 1;
- I830RefreshRing(pScrn);
+ i830_refresh_ring(pScrn);
I830EmitFlush(pScrn);
@@ -1777,7 +1777,7 @@ I830DRILock(ScrnInfoPtr pScrn)
if (pI830->directRenderingEnabled && !pI830->LockHeld) {
DRILock(screenInfo.screens[pScrn->scrnIndex], 0);
pI830->LockHeld = 1;
- I830RefreshRing(pScrn);
+ i830_refresh_ring(pScrn);
return TRUE;
}
else
diff --git a/src/i830_driver.c b/src/i830_driver.c
index e000d92..abe6932 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1730,7 +1730,7 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
* whoever gets control next should do.
*/
static void
-ResetState(ScrnInfoPtr pScrn, Bool flush)
+i830_stop_ring(ScrnInfoPtr pScrn, Bool flush)
{
I830Ptr pI830 = I830PTR(pScrn);
unsigned long temp;
@@ -1743,34 +1743,23 @@ ResetState(ScrnInfoPtr pScrn, Bool flush)
pI830->entityPrivate->RingRunning = 0;
/* Flush the ring buffer (if enabled), then disable it. */
- /* God this is ugly */
-#define flush_ring() do { \
- temp = INREG(LP_RING + RING_LEN); \
- if (temp & RING_VALID) { \
- I830RefreshRing(pScrn); \
- I830Sync(pScrn); \
- DO_RING_IDLE(); \
- } \
- } while(0)
-#ifdef I830_USE_XAA
- if (!pI830->useEXA && flush && pI830->AccelInfoRec)
- flush_ring();
-#endif
-#ifdef I830_USE_EXA
- if (pI830->useEXA && flush && pI830->EXADriverPtr)
- flush_ring();
-#endif
-
- OUTREG(LP_RING + RING_LEN, 0);
- OUTREG(LP_RING + RING_HEAD, 0);
- OUTREG(LP_RING + RING_TAIL, 0);
- OUTREG(LP_RING + RING_START, 0);
+ if (!pI830->noAccel) {
+ temp = INREG(LP_RING + RING_LEN);
+ if (temp & RING_VALID) {
+ i830_refresh_ring(pScrn);
+ I830Sync(pScrn);
+ DO_RING_IDLE();
+ }
- xf86_hide_cursors (pScrn);
+ OUTREG(LP_RING + RING_LEN, 0);
+ OUTREG(LP_RING + RING_HEAD, 0);
+ OUTREG(LP_RING + RING_TAIL, 0);
+ OUTREG(LP_RING + RING_START, 0);
+ }
}
static void
-SetRingRegs(ScrnInfoPtr pScrn)
+i830_start_ring(ScrnInfoPtr pScrn)
{
I830Ptr pI830 = I830PTR(pScrn);
unsigned int itemp;
@@ -1807,7 +1796,26 @@ SetRingRegs(ScrnInfoPtr pScrn)
itemp = (pI830->LpRing->mem->size - 4096) & I830_RING_NR_PAGES;
itemp |= (RING_NO_REPORT | RING_VALID);
OUTREG(LP_RING + RING_LEN, itemp);
- I830RefreshRing(pScrn);
+ i830_refresh_ring(pScrn);
+}
+
+void
+i830_refresh_ring(ScrnInfoPtr pScrn)
+{
+ I830Ptr pI830 = I830PTR(pScrn);
+
+ /* If we're reaching RefreshRing as a result of grabbing the DRI lock
+ * before we've set up the ringbuffer, don't bother.
+ */
+ if (pI830->LpRing->mem == NULL)
+ return;
+
+ pI830->LpRing->head = INREG(LP_RING + RING_HEAD) & I830_HEAD_MASK;
+ pI830->LpRing->tail = INREG(LP_RING + RING_TAIL);
+ pI830->LpRing->space = pI830->LpRing->head - (pI830->LpRing->tail + 8);
+ if (pI830->LpRing->space < 0)
+ pI830->LpRing->space += pI830->LpRing->mem->size;
+ i830MarkSync(pScrn);
}
/*
@@ -1834,8 +1842,7 @@ SetHWOperatingState(ScrnInfoPtr pScrn)
OUTREG(DSPCLK_GATE_D, OVRUNIT_CLOCK_GATE_DISABLE);
}
- if (!pI830->noAccel)
- SetRingRegs(pScrn);
+ i830_start_ring(pScrn);
if (!pI830->SWCursor)
I830InitHWCursor(pScrn);
}
@@ -3002,10 +3009,10 @@ I830LeaveVT(int scrnIndex, int flags)
xf86_hide_cursors (pScrn);
- ResetState(pScrn, TRUE);
-
RestoreHWState(pScrn);
+ i830_stop_ring(pScrn, TRUE);
+
if (pI830->debug_modes) {
i830CompareRegsToSnapshot(pScrn, "After LeaveVT");
i830DumpRegs (pScrn);
@@ -3078,7 +3085,7 @@ I830EnterVT(int scrnIndex, int flags)
"Existing errors found in hardware state.\n");
}
- ResetState(pScrn, FALSE);
+ i830_stop_ring(pScrn, FALSE);
SetHWOperatingState(pScrn);
/* Clear the framebuffer */
@@ -3099,7 +3106,7 @@ I830EnterVT(int scrnIndex, int flags)
}
i830DescribeOutputConfiguration(pScrn);
- ResetState(pScrn, TRUE);
+ i830_stop_ring(pScrn, TRUE);
SetHWOperatingState(pScrn);
#ifdef XF86DRI
@@ -3119,7 +3126,7 @@ I830EnterVT(int scrnIndex, int flags)
I830DRIResume(screenInfo.screens[scrnIndex]);
- I830RefreshRing(pScrn);
+ i830_refresh_ring(pScrn);
I830Sync(pScrn);
DO_RING_IDLE();
commit ad3bc0158d37e98fcbbe6a8e31413c142a260424
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date: Wed Nov 14 22:46:46 2007 +0800
Don't enable fbc with XAA or tiling is off.
This slightly reworks my last fbc patch. We don't
support tiled front buffer with XAA now, so also
disable fbc on it. If tiled alloc failed, disable
fbc too.
diff --git a/src/i830.h b/src/i830.h
index 17d2fe2..3abc800 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -805,6 +805,11 @@ static inline int i830_fb_compression_supported(I830Ptr pI830)
return FALSE;
if (IS_I810(pI830) || IS_I815(pI830) || IS_I830(pI830))
return FALSE;
+ /* fbc depends on tiled surface. And we don't support tiled
+ * front buffer with XAA now.
+ */
+ if (!pI830->tiling || (IS_I965G(pI830) && !pI830->useEXA))
+ return FALSE;
return TRUE;
}
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 8d58a08..e000d92 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -2554,15 +2554,17 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
"Couldn't allocate tiled memory, page flipping "
"disabled\n");
pI830->allowPageFlip = FALSE;
+ if (pI830->fb_compression)
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Couldn't allocate tiled memory, fb compression "
+ "disabled\n");
+ pI830->fb_compression = FALSE;
}
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Attempting memory allocation with %s buffers.\n",
(i & 1) ? "untiled" : "tiled");
- if (!pI830->tiling && pI830->fb_compression)
- pI830->fb_compression = FALSE;
-
if (i830_allocate_2d_memory(pScrn) &&
i830_allocate_3d_memory(pScrn))
{
commit 26194e19e1c80615697016e25640d4c8c244353f
Author: Keith Packard <keithp@koto.keithp.com>
Date: Tue Nov 13 22:26:40 2007 -0800
Review PLL spreadsheet and update register ranges.
The PLL spreadsheet makes the precise register ranges allowed for each mode
quite clear, and shows a few inaccuracies in the b-spec. In particular, the
N register value may range from 1 to 6 instead of 3 to 8. This should close
the gap we've seen in the reachable frequencies.
diff --git a/src/i830_display.c b/src/i830_display.c
index d988b86..ea10c8a 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -100,14 +100,26 @@ typedef struct {
#define I9XX_DOT_MAX 400000
#define I9XX_VCO_MIN 1400000
#define I9XX_VCO_MAX 2800000
-#define I9XX_N_MIN 3
-#define I9XX_N_MAX 8
+
+/* Haven't found any reason to go this fast, but newer chips support it */
+#define I96X_VCO_MAX 3200000
+
+/*
+ * These values are taken from the broadwater/crestline PLL spreadsheet.
+ * All of the defines here are for the programmed register value, not
+ * the 'counter' value (e.g. Ncounter = Nregister + 2)
+ */
+#define I9XX_N_MIN 1
+#define I9XX_N_MAX 6
#define I9XX_M_MIN 70
#define I9XX_M_MAX 120
+
+/* these two come from the calm1 macro */
#define I9XX_M1_MIN 10
-#define I9XX_M1_MAX 20
+#define I9XX_M1_MAX 22
#define I9XX_M2_MIN 5
#define I9XX_M2_MAX 9
+
#define I9XX_P_SDVO_DAC_MIN 5
#define I9XX_P_SDVO_DAC_MAX 80
#define I9XX_P_LVDS_MIN 7
diff --git a/src/scripts/clock-graph.5c b/src/scripts/clock-graph.5c
index e39e559..324febf 100644
--- a/src/scripts/clock-graph.5c
+++ b/src/scripts/clock-graph.5c
@@ -9,7 +9,7 @@ int max_vco = 2800000000;
int min = 0xffffffff;
int max = 0;
-int max_clocks = 1000;
+int max_clocks = 2000;
int[4][max_clocks] clocks;
int[4][max_clocks] vcos;
int[4] clock_count = {0...};
@@ -35,9 +35,9 @@ void calc_p2(int p2i)
max_p = 80;
}
- for (int m1 = 10; m1 <= 20; m1++) {
+ for (int m1 = 10; m1 <= 22; m1++) {
for (int m2 = 5; m2 <= 9; m2++) {
- for (int n = 3; n <= 8; n++) {
+ for (int n = 1; n <= 5; n++) {
for (int p1 = 1; p1 <= 8; p1++) {
int ref = 96000000;
int m = 5 * (m1 + 2) + (m2 + 2);
diff --git a/src/scripts/clock.5c b/src/scripts/clock.5c
index 8ee9d90..c83c689 100644
--- a/src/scripts/clock.5c
+++ b/src/scripts/clock.5c
@@ -11,9 +11,9 @@ if (p2 == 7 || p2 == 14) {
max_p = 80;
}
-for (int m1 = 10; m1 <= 20; m1++) {
+for (int m1 = 10; m1 <= 22; m1++) {
for (int m2 = 5; m2 <= 9; m2++) {
- for (int n = 3; n <= 8; n++) {
+ for (int n = 1; n <= 6; n++) {
for (int p1 = 1; p1 <= 8; p1++) {
int ref = 96000000;
int m = 5 * (m1 + 2) + (m2 + 2);
commit 581509321e51becb8ee6ddcfaa15a2a713c9ef8e
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date: Wed Nov 14 22:16:04 2007 +0800
Remove one redundant line.
diff --git a/src/i830_driver.c b/src/i830_driver.c
index debe539..8d58a08 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -2606,8 +2606,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pI830->directRenderingEnabled = FALSE;
}
- pScrn->displayWidth = pScrn->displayWidth;
-
#ifdef HAS_MTRR_SUPPORT
{
int fd;
commit 8cea3c8cfa86600b5f2c3e1f21c19d4b2a320fd4
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Reply to: