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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>, Branden Robinson <[EMAIL PROTECTED]>, Drew Parsons <[EMAIL PROTECTED]>, Julien Cristau <[EMAIL PROTECTED]> +Uploaders: David Nusinow <[EMAIL PROTECTED]>, Drew Parsons <[EMAIL PROTECTED]>, Julien Cristau <[EMAIL PROTECTED]>, Brice Goglin <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>." _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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]