ChangeLog | 144 +++++++++++ aclocal.m4 | 12 config.h.in | 3 configure | 19 + configure.ac | 5 debian/changelog | 6 debian/patches/01_gen_pci_ids.diff | 2 man/Makefile.am | 1 man/Makefile.in | 1 man/radeon.man | 8 src/Makefile.am | 3 src/Makefile.in | 2 src/ati_pciids_gen.h | 19 + src/atombios_crtc.c | 173 +++++++++---- src/atombios_output.c | 333 +++++++++++++++++++++++-- src/legacy_crtc.c | 19 - src/pcidb/ati_pciids.csv | 31 +- src/radeon.h | 12 src/radeon_atombios.c | 23 + src/radeon_bios.c | 27 ++ src/radeon_chipinfo_gen.h | 19 + src/radeon_chipset_gen.h | 31 +- src/radeon_commonfuncs.c | 10 src/radeon_crtc.c | 53 +++- src/radeon_driver.c | 479 +++++++++++++++++++++++++++---------- src/radeon_exa_funcs.c | 2 src/radeon_exa_render.c | 8 src/radeon_pci_chipset_gen.h | 19 + src/radeon_pci_device_match_gen.h | 19 + src/radeon_probe.c | 2 src/radeon_probe.h | 28 +- src/radeon_textured_videofuncs.c | 8 src/theatre.c | 32 +- src/theatre.h | 70 ++--- src/theatre200.c | 28 +- src/theatre_detect.c | 2 src/theatre_detect.h | 4 37 files changed, 1313 insertions(+), 344 deletions(-)
New commits: commit 494b2d0a0cc1426283fa259b75a1d4edeff20d09 Author: Brice Goglin <[EMAIL PROTECTED]> Date: Mon Mar 10 23:50:35 2008 +0100 New upstream snapshot diff --git a/ChangeLog b/ChangeLog index 6614356..5a6d3b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,137 @@ +commit 38606b08b68842fbcc81c233009c1117269f3be9 +Author: Matthieu Herrb <[EMAIL PROTECTED]> +Date: Sat Mar 8 23:22:59 2008 +0100 + + Makefile.am: nuke RCS Id + +commit 9d710ee1a44cf2f3a948fbdbe17ef09521cbe744 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Fri Mar 7 15:09:14 2008 -0500 + + AVIVO: clean up some unused variables + +commit c28c30c9f3d7bfebfd56a5c982c96f0090982054 +Author: Alex Deucher <[EMAIL PROTECTED]> +Date: Fri Mar 7 14:10:49 2008 -0500 + + RADEON: Fix crash in last commit + +commit c3a3635865e380c784a226c8ead069d4716d6b75 +Author: Dave Airlie <[EMAIL PROTECTED]> +Date: Thu Mar 6 20:17:45 2008 -0500 + + RADEON: fix tiling/interlaced interaction with randr 1.2 + +commit df1b94dc4eb1f35b636dbf2ec0ab1c2da9937c0d +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 19:22:08 2008 -0500 + + DCE3: Ignore outputs with DIN connectors for now + +commit cb2dc19387c7b6494c47c76d683cf38a48700768 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 18:33:12 2008 -0500 + + AVIVO: fix typo from a previous commit + + Leave tv dpms hook disabled or you may get bad interactions + with the shared DAC + +commit 77355de48057e5e7e0d5b3f3cf5a7a92220a53b1 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 17:46:00 2008 -0500 + + AVIVO: don't add outputs for invalid connectors + +commit 600dbe080997a01ceaf6be86723189d518bc1281 +Merge: 594743a... 5b7875d... +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 17:31:37 2008 -0500 + + Merge branch 'master' of ssh://[EMAIL PROTECTED]/git/xorg/driver/xf86-video-ati + +commit 594743a99811a8b0f391412892414fcd158eeb56 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 17:30:21 2008 -0500 + + AVIVO: fix up memsize detection for IGP chips + +commit 5b7875d0cbfbdbcd1515c4e942d30de298b49dff +Author: Doug Chapman <[EMAIL PROTECTED]> +Date: Thu Mar 6 14:31:06 2008 -0500 + + Bug #14826: Fix a bogus check around xf86SetOperatingState. + +commit 651fe23f4c650ed91843dec48db24e18e8b91219 +Merge: 3de2dc8... 766f464... +Author: Adam Jackson <[EMAIL PROTECTED]> +Date: Thu Mar 6 14:28:27 2008 -0500 + + Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/driver/xf86-video-ati + +commit 41171c25cd235bafad26bcbabced16ead4b8c54b +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 14:05:18 2008 -0500 + + DCE3.0: add support for crtc memreq table + +commit 766f464dfdfccadef23e4232f2bce5db22195513 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 13:35:43 2008 -0500 + + RADEON: take 2 on proper pragma pack support for bsds + + See bug 14594. Based on suggestion by Henry Zhao + +commit a842ce9ca6494e724a7828cead9b61c9ef02b6aa +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 12:32:18 2008 -0500 + + DCE3.0: Minor fixups + +commit 8a1ba374033591c725a78923aa30829e4de2a5ae +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Thu Mar 6 09:53:51 2008 -0500 + + RADEON: option to override TVDAC adj values from bios with driver defaults + + If you have a washed out image on the tv dac, try this option. + Option "DefaultTVDACAdj" "TRUE" + +commit 0ed48f8f651a28e189f9fee8c6b593da0178d21c +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Wed Mar 5 18:41:01 2008 -0500 + + AVIVO: Initial support for DCE 3.0 using atombios + + DACs are working well, DIG support (DVI, HDMI, LVDS, etc.) + still has some issues. + +commit 2901e99f1942842856cd39c1dcc8b22f3cf7d9e3 +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Wed Mar 5 10:40:06 2008 -0500 + + RADEON: fix fetching of dac2 adj values from newer bios tables + +commit 74eb981287d76836327830bd51272f605a07e0cc +Author: Alex Deucher <[EMAIL PROTECTED](none)> +Date: Mon Mar 3 12:02:44 2008 -0500 + + ATOMBIOS: fix atombios parser support on *bsd + + bsd requires a different pragma pack than Linux. + See bug 14594. + +commit f7769ea86e265f347eb58c517ccb5ef8b35eec27 +Author: Paulo Cesar Pereira de Andrade <[EMAIL PROTECTED]> +Date: Sun Mar 2 14:49:21 2008 -0500 + + [PATCH] Ensure symbols used by other modules are visible. + + The xf86-video-ati drivers are one of the cases where LoaderSymbol is + widely used in some obscure ways. This patch fixes the problem, and + allows compiling with -fvisibility=hidden. + commit a4398ac3ad77216f2c8aa628425bef5f2912a0a9 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Sat Mar 1 18:52:26 2008 -0500 @@ -896,6 +1030,16 @@ Date: Fri Jan 18 20:11:57 2008 +1000 fixup register 6594 save/restore +commit 3de2dc88cf26ff5932f11cecdf975777b8aa2a4a +Author: Adam Jackson <[EMAIL PROTECTED]> +Date: Wed Jan 16 14:55:05 2008 -0500 + + Bump CRTC size limits on AVIVO chips so 30" displays work without tweaking. + + Note that the CRTC size limits we're using right now are _not_ the + hardware limits, they're just heuristics until we can resize the front + buffer properly. + commit 2a89a31481d71a56a9930073cf99d3ae7b4290e1 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Jan 17 15:08:17 2008 -0500 diff --git a/aclocal.m4 b/aclocal.m4 index aa6547f..ef947f1 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -6876,7 +6876,7 @@ AC_DEFUN([XORG_MACROS_VERSION],[ XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'` XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`] AC_MSG_CHECKING([if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}]) - [XORG_MACROS_version=1.1.5 + [XORG_MACROS_version=1.1.6 XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'` XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`] if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then @@ -7025,7 +7025,11 @@ AC_DEFUN([XORG_CHECK_LINUXDOC],[ XORG_SGML_PATH=$prefix/share/sgml HAVE_DEFS_ENT= -AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes]) +if test x"$cross_compiling" = x"yes" ; then + HAVE_DEFS_ENT=no +else + AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes]) +fi AC_PATH_PROG(LINUXDOC, linuxdoc) AC_PATH_PROG(PS2PDF, ps2pdf) @@ -7346,14 +7350,14 @@ AC_DEFUN([XORG_RELEASE_VERSION],[ AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR], [`echo $PACKAGE_VERSION | cut -d . -f 1`], [Major version of this package]) - PVM=`echo $PACKAGE_VERSION | cut -d . -f 2` + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR], [$PVM], [Minor version of this package]) - PVP=`echo $PACKAGE_VERSION | cut -d . -f 3` + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi diff --git a/config.h.in b/config.h.in index fdafa10..91eecd1 100644 --- a/config.h.in +++ b/config.h.in @@ -5,6 +5,9 @@ /* Use Damage extension */ #undef DAMAGE +/* Use linux pragma pack */ +#undef FGL_LINUX + /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H diff --git a/configure b/configure index a5648c4..6262e98 100755 --- a/configure +++ b/configure @@ -22412,6 +22412,15 @@ else fi +case $host_os in + *linux*) + +cat >>confdefs.h <<\_ACEOF +#define FGL_LINUX 1 +_ACEOF + ;; +esac + @@ -22510,7 +22519,7 @@ cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` _ACEOF - PVM=`echo $PACKAGE_VERSION | cut -d . -f 2` + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi @@ -22519,7 +22528,7 @@ cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION_MINOR $PVM _ACEOF - PVP=`echo $PACKAGE_VERSION | cut -d . -f 3` + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi @@ -22533,7 +22542,10 @@ _ACEOF XORG_SGML_PATH=$prefix/share/sgml HAVE_DEFS_ENT= -as_ac_File=`echo "ac_cv_file_$XORG_SGML_PATH/X11/defs.ent" | $as_tr_sh` +if test x"$cross_compiling" = x"yes" ; then + HAVE_DEFS_ENT=no +else + as_ac_File=`echo "ac_cv_file_$XORG_SGML_PATH/X11/defs.ent" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $XORG_SGML_PATH/X11/defs.ent" >&5 echo $ECHO_N "checking for $XORG_SGML_PATH/X11/defs.ent... $ECHO_C" >&6; } if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then @@ -22556,6 +22568,7 @@ if test `eval echo '${'$as_ac_File'}'` = yes; then HAVE_DEFS_ENT=yes fi +fi # Extract the first word of "linuxdoc", so it can be a program name with args. set dummy linuxdoc; ac_word=$2 diff --git a/debian/changelog b/debian/changelog index b15593d..7c2dd2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xserver-xorg-video-ati (1:6.8.1~git20080310.38606b08-1) experimental; urgency=low + + * New upstream snapshap, up to commit 38606b08. + + -- Brice Goglin <[EMAIL PROTECTED]> Mon, 10 Mar 2008 23:48:13 +0100 + xserver-xorg-video-ati (1:6.8.1~git20080302.a4398ac3-1) experimental; urgency=low * New upstream snapshot, after r128 and mach64 got split out. diff --git a/debian/patches/01_gen_pci_ids.diff b/debian/patches/01_gen_pci_ids.diff index bb64b5a..7a7dfe7 100644 --- a/debian/patches/01_gen_pci_ids.diff +++ b/debian/patches/01_gen_pci_ids.diff @@ -6,7 +6,7 @@ Index: xserver-xorg-video-ati/src/Makefile.am =================================================================== --- xserver-xorg-video-ati.orig/src/Makefile.am 2007-10-06 02:44:47.000000000 +0200 +++ xserver-xorg-video-ati/src/Makefile.am 2007-10-06 02:48:34.000000000 +0200 -@@ -152,3 +152,9 @@ +@@ -153,3 +153,9 @@ pcidb/ati_pciids.csv \ pcidb/parse_pci_ids.pl \ radeon_atombios.h diff --git a/man/Makefile.in b/man/Makefile.in index 086ca85..9747c7a 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -14,7 +14,6 @@ @SET_MAKE@ -# $Id$ # # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # diff --git a/src/Makefile.in b/src/Makefile.in index 59bc31a..64b6f69 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -353,7 +353,7 @@ XMODE_SRCS = \ modes/xf86DiDGA.c @[EMAIL PROTECTED] = radeon_exa.c -AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS -DATOM_BIOS_PARSER -DFGL_LINUX -DDRIVER_PARSER +AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS -DATOM_BIOS_PARSER -DDRIVER_PARSER INCLUDES = -I$(srcdir)/AtomBios/includes ati_drv_la_LTLIBRARIES = ati_drv.la ati_drv_la_LDFLAGS = -module -avoid-version commit 38606b08b68842fbcc81c233009c1117269f3be9 Author: Matthieu Herrb <[EMAIL PROTECTED]> Date: Sat Mar 8 23:22:59 2008 +0100 Makefile.am: nuke RCS Id diff --git a/man/Makefile.am b/man/Makefile.am index 2d11006..93ff52c 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -1,4 +1,3 @@ -# $Id$ # # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # commit 9d710ee1a44cf2f3a948fbdbe17ef09521cbe744 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Fri Mar 7 15:09:14 2008 -0500 AVIVO: clean up some unused variables diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index ad7fd54..7c628bf 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -401,27 +401,25 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, adjusted_mode->CrtcHTotal, adjusted_mode->CrtcVTotal, adjusted_mode->Flags); if (IS_AVIVO_VARIANT) { - radeon_crtc->fb_width = mode->CrtcHDisplay; - radeon_crtc->fb_height = pScrn->virtualY; - radeon_crtc->fb_pitch = mode->CrtcHDisplay; - radeon_crtc->fb_length = radeon_crtc->fb_pitch * radeon_crtc->fb_height * 4; + CARD32 fb_format; + switch (crtc->scrn->bitsPerPixel) { case 15: - radeon_crtc->fb_format = AVIVO_D1GRPH_CONTROL_DEPTH_16BPP | AVIVO_D1GRPH_CONTROL_16BPP_ARGB1555; + fb_format = AVIVO_D1GRPH_CONTROL_DEPTH_16BPP | AVIVO_D1GRPH_CONTROL_16BPP_ARGB1555; break; case 16: - radeon_crtc->fb_format = AVIVO_D1GRPH_CONTROL_DEPTH_16BPP | AVIVO_D1GRPH_CONTROL_16BPP_RGB565; + fb_format = AVIVO_D1GRPH_CONTROL_DEPTH_16BPP | AVIVO_D1GRPH_CONTROL_16BPP_RGB565; break; case 24: case 32: - radeon_crtc->fb_format = AVIVO_D1GRPH_CONTROL_DEPTH_32BPP | AVIVO_D1GRPH_CONTROL_32BPP_ARGB8888; + fb_format = AVIVO_D1GRPH_CONTROL_DEPTH_32BPP | AVIVO_D1GRPH_CONTROL_32BPP_ARGB8888; break; default: FatalError("Unsupported screen depth: %d\n", xf86GetDepth()); } if (info->tilingEnabled && (crtc->rotatedData == NULL)) { - radeon_crtc->fb_format |= AVIVO_D1GRPH_MACRO_ADDRESS_MODE; + fb_format |= AVIVO_D1GRPH_MACRO_ADDRESS_MODE; } if (radeon_crtc->crtc_id == 0) @@ -443,8 +441,7 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location); OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location); - OUTREG(AVIVO_D1GRPH_CONTROL + radeon_crtc->crtc_offset, - radeon_crtc->fb_format); + OUTREG(AVIVO_D1GRPH_CONTROL + radeon_crtc->crtc_offset, fb_format); OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X + radeon_crtc->crtc_offset, 0); OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y + radeon_crtc->crtc_offset, 0); diff --git a/src/radeon_probe.h b/src/radeon_probe.h index 4ba6a32..ae24003 100644 --- a/src/radeon_probe.h +++ b/src/radeon_probe.h @@ -191,13 +191,6 @@ typedef struct _RADEONCrtcPrivateRec { CARD8 lut_r[256], lut_g[256], lut_b[256]; uint32_t crtc_offset; - int h_total, h_blank, h_sync_wid, h_sync_pol; - int v_total, v_blank, v_sync_wid, v_sync_pol; - int fb_format, fb_length; - int fb_pitch, fb_width, fb_height; - INT16 cursor_x; - INT16 cursor_y; - int can_tile; } RADEONCrtcPrivateRec, *RADEONCrtcPrivatePtr; commit c28c30c9f3d7bfebfd56a5c982c96f0090982054 Author: Alex Deucher <[EMAIL PROTECTED]> Date: Fri Mar 7 14:10:49 2008 -0500 RADEON: Fix crash in last commit diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c index 63f536c..0689114 100644 --- a/src/legacy_crtc.c +++ b/src/legacy_crtc.c @@ -1665,7 +1665,7 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, Bool tilingChanged = FALSE; if (info->allowColorTiling) { - radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; tilingChanged = RADEONSetTiling(pScrn); } diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 3628d96..87514b0 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -537,11 +537,12 @@ static const xf86CrtcFuncsRec radeon_crtc_funcs = { Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask) { RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); if (mask & 1) { if (pRADEONEnt->Controller[0]) return TRUE; - + pRADEONEnt->pCrtc[0] = xf86CrtcCreate(pScrn, &radeon_crtc_funcs); if (!pRADEONEnt->pCrtc[0]) return FALSE; @@ -553,16 +554,20 @@ Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask) pRADEONEnt->pCrtc[0]->driver_private = pRADEONEnt->Controller[0]; pRADEONEnt->Controller[0]->crtc_id = 0; pRADEONEnt->Controller[0]->crtc_offset = 0; + if (info->allowColorTiling) + pRADEONEnt->Controller[0]->can_tile = 1; + else + pRADEONEnt->Controller[0]->can_tile = 0; } if (mask & 2) { if (!pRADEONEnt->HasCRTC2) return TRUE; - + pRADEONEnt->pCrtc[1] = xf86CrtcCreate(pScrn, &radeon_crtc_funcs); if (!pRADEONEnt->pCrtc[1]) return FALSE; - + pRADEONEnt->Controller[1] = xnfcalloc(sizeof(RADEONCrtcPrivateRec), 1); if (!pRADEONEnt->Controller[1]) { @@ -573,6 +578,10 @@ Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask) pRADEONEnt->pCrtc[1]->driver_private = pRADEONEnt->Controller[1]; pRADEONEnt->Controller[1]->crtc_id = 1; pRADEONEnt->Controller[1]->crtc_offset = AVIVO_D2CRTC_H_TOTAL - AVIVO_D1CRTC_H_TOTAL; + if (info->allowColorTiling) + pRADEONEnt->Controller[1]->can_tile = 1; + else + pRADEONEnt->Controller[1]->can_tile = 0; } return TRUE; @@ -738,9 +747,11 @@ RADEONSetTiling(ScrnInfoPtr pScrn) crtc = xf86_config->crtc[c]; radeon_crtc = crtc->driver_private; - if (!radeon_crtc->can_tile) - can_tile = 0; - } + if (crtc->enabled) { + if (!radeon_crtc->can_tile) + can_tile = 0; + } + } if (info->tilingEnabled != can_tile) changed = TRUE; @@ -748,7 +759,7 @@ RADEONSetTiling(ScrnInfoPtr pScrn) #ifdef XF86DRI if (info->directRenderingEnabled && (info->tilingEnabled != can_tile)) { RADEONSAREAPrivPtr pSAREAPriv; - if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0) + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (can_tile ? 1 : 0)) < 0) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[drm] failed changing tiling status\n"); /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ diff --git a/src/radeon_driver.c b/src/radeon_driver.c index f7fc191..de81b2d 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -2220,7 +2220,7 @@ static void RADEONPreInitColorTiling(ScrnInfoPtr pScrn) info->pKernelDRMVersion->version_minor, info->pKernelDRMVersion->version_patchlevel); info->allowColorTiling = FALSE; - return; + return; } #endif /* XF86DRI */ @@ -2687,7 +2687,7 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags) if (!RADEONPreInitWeight(pScrn)) goto fail; - info->DispPriority = 1; + info->DispPriority = 1; if ((s = xf86GetOptValString(info->Options, OPTION_DISP_PRIORITY))) { if (strcmp(s, "AUTO") == 0) { info->DispPriority = 1; @@ -2696,7 +2696,7 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags) } else if (strcmp(s, "HIGH") == 0) { info->DispPriority = 2; } else - info->DispPriority = 1; + info->DispPriority = 1; } if (!RADEONPreInitInt10(pScrn, &pInt10)) commit c3a3635865e380c784a226c8ead069d4716d6b75 Author: Dave Airlie <[EMAIL PROTECTED]> Date: Thu Mar 6 20:17:45 2008 -0500 RADEON: fix tiling/interlaced interaction with randr 1.2 diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index a4703c5..ad7fd54 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -330,22 +330,13 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, int need_tv_timings = 0; int i, ret; SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION crtc_timing; + Bool tilingChanged = FALSE; memset(&crtc_timing, 0, sizeof(crtc_timing)); if (info->allowColorTiling) { - info->tilingEnabled = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; -#ifdef XF86DRI - if (info->directRenderingEnabled && (info->tilingEnabled != tilingOld)) { - RADEONSAREAPrivPtr pSAREAPriv; - if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0) - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[drm] failed changing tiling status\n"); - /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ - pSAREAPriv = DRIGetSAREAPrivate(screenInfo.screens[pScrn->scrnIndex]); - info->tilingEnabled = pSAREAPriv->tiling_enabled ? TRUE : FALSE; - } -#endif + radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + tilingChanged = RADEONSetTiling(pScrn); } for (i = 0; i < xf86_config->num_output; i++) { @@ -487,7 +478,7 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, atombios_set_crtc_timing(info->atomBIOS, &crtc_timing); - if (info->tilingEnabled != tilingOld) { + if (tilingChanged) { /* need to redraw front buffer, I guess this can be considered a hack ? */ /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ if (pScrn->pScreen) diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c index dec14a4..63f536c 100644 --- a/src/legacy_crtc.c +++ b/src/legacy_crtc.c @@ -1658,26 +1658,15 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; RADEONInfoPtr info = RADEONPTR(pScrn); - Bool tilingOld = info->tilingEnabled; int i = 0; double dot_clock = 0; int pll_flags = RADEON_PLL_LEGACY; Bool update_tv_routing = FALSE; - + Bool tilingChanged = FALSE; if (info->allowColorTiling) { - info->tilingEnabled = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; -#ifdef XF86DRI - if (info->directRenderingEnabled && (info->tilingEnabled != tilingOld)) { - RADEONSAREAPrivPtr pSAREAPriv; - if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0) - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[drm] failed changing tiling status\n"); - /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ - pSAREAPriv = DRIGetSAREAPrivate(screenInfo.screens[pScrn->scrnIndex]); - info->tilingEnabled = pSAREAPriv->tiling_enabled ? TRUE : FALSE; - } -#endif + radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + tilingChanged = RADEONSetTiling(pScrn); } for (i = 0; i < xf86_config->num_output; i++) { @@ -1771,7 +1760,7 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, if (info->DispPriority) RADEONInitDispBandwidth(pScrn); - if (info->tilingEnabled != tilingOld) { + if (tilingChanged) { /* need to redraw front buffer, I guess this can be considered a hack ? */ /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ if (pScrn->pScreen) diff --git a/src/radeon.h b/src/radeon.h index 57786c8..fe45428 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -850,7 +850,7 @@ extern void RADEONGetPanelInfo(ScrnInfoPtr pScrn); extern void RADEONUnblank(ScrnInfoPtr pScrn); extern void RADEONUnblank(ScrnInfoPtr pScrn); extern void RADEONBlank(ScrnInfoPtr pScrn); - +extern Bool RADEONSetTiling(ScrnInfoPtr pScrn); extern Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask); extern Bool RADEONAllocateConnectors(ScrnInfoPtr pScrn); diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 7164138..3628d96 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -723,3 +723,39 @@ RADEONUnblank(ScrnInfoPtr pScrn) } } +Bool +RADEONSetTiling(ScrnInfoPtr pScrn) +{ + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONCrtcPrivatePtr radeon_crtc; + xf86CrtcPtr crtc; + int c; + int can_tile = 1; + Bool changed = FALSE; + + for (c = 0; c < xf86_config->num_crtc; c++) { + crtc = xf86_config->crtc[c]; + radeon_crtc = crtc->driver_private; + + if (!radeon_crtc->can_tile) + can_tile = 0; + } + + if (info->tilingEnabled != can_tile) + changed = TRUE; + +#ifdef XF86DRI + if (info->directRenderingEnabled && (info->tilingEnabled != can_tile)) { + RADEONSAREAPrivPtr pSAREAPriv; + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed changing tiling status\n"); + /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ + pSAREAPriv = DRIGetSAREAPrivate(screenInfo.screens[pScrn->scrnIndex]); + info->tilingEnabled = pSAREAPriv->tiling_enabled ? TRUE : FALSE; + } +#endif + + return changed; +} diff --git a/src/radeon_probe.h b/src/radeon_probe.h index 935b6b8..4ba6a32 100644 --- a/src/radeon_probe.h +++ b/src/radeon_probe.h @@ -197,6 +197,8 @@ typedef struct _RADEONCrtcPrivateRec { int fb_pitch, fb_width, fb_height; INT16 cursor_x; INT16 cursor_y; + + int can_tile; } RADEONCrtcPrivateRec, *RADEONCrtcPrivatePtr; typedef struct { commit df1b94dc4eb1f35b636dbf2ec0ab1c2da9937c0d Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Mar 6 19:22:08 2008 -0500 DCE3: Ignore outputs with DIN connectors for now diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c index add81d0..4494775 100644 --- a/src/radeon_atombios.c +++ b/src/radeon_atombios.c @@ -1564,7 +1564,13 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) break; case ENCODER_OBJECT_ID_INTERNAL_DAC1: case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: - info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_CRT1_INDEX); + if (info->BiosConnector[i].ConnectorType == CONNECTOR_DIN || + info->BiosConnector[i].ConnectorType == CONNECTOR_STV || + info->BiosConnector[i].ConnectorType == CONNECTOR_CTV) + //info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_TV1_INDEX); + info->BiosConnector[i].valid = FALSE; + else + info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_CRT1_INDEX); info->BiosConnector[i].DACType = DAC_PRIMARY; break; case ENCODER_OBJECT_ID_INTERNAL_DAC2: commit cb2dc19387c7b6494c47c76d683cf38a48700768 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Mar 6 18:33:12 2008 -0500 AVIVO: fix typo from a previous commit Leave tv dpms hook disabled or you may get bad interactions with the shared DAC diff --git a/src/atombios_output.c b/src/atombios_output.c index 06e5a77..7ae004c 100644 --- a/src/atombios_output.c +++ b/src/atombios_output.c @@ -720,8 +720,8 @@ atombios_output_dpms(xf86OutputPtr output, int mode) ErrorF("AGD: cv dpms\n"); if (radeon_output->devices & ATOM_DEVICE_CV_SUPPORT) atombios_device_dpms(output, ATOM_DEVICE_CV_SUPPORT, mode); - } else if (radeon_output->MonType == MT_STV || - radeon_output->MonType == MT_CTV) { + } else if (0 /*radeon_output->MonType == MT_STV || + radeon_output->MonType == MT_CTV*/) { ErrorF("AGD: tv dpms\n"); if (radeon_output->devices & ATOM_DEVICE_TV1_SUPPORT) atombios_device_dpms(output, ATOM_DEVICE_TV1_SUPPORT, mode); commit 77355de48057e5e7e0d5b3f3cf5a7a92220a53b1 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Mar 6 17:46:00 2008 -0500 AVIVO: don't add outputs for invalid connectors diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c index 91160f9..add81d0 100644 --- a/src/radeon_atombios.c +++ b/src/radeon_atombios.c @@ -1530,7 +1530,10 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) ErrorF("object id %04x %02x\n", obj_id, SrcDstTable->ucNumberOfSrc); info->BiosConnector[i].ConnectorType = object_connector_convert[obj_id]; - info->BiosConnector[i].valid = TRUE; + if (info->BiosConnector[i].ConnectorType == CONNECTOR_NONE) + info->BiosConnector[i].valid = FALSE; + else + info->BiosConnector[i].valid = TRUE; info->BiosConnector[i].devices = 0; for (j = 0; j < SrcDstTable->ucNumberOfSrc; j++) { commit 594743a99811a8b0f391412892414fcd158eeb56 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Mar 6 17:30:21 2008 -0500 AVIVO: fix up memsize detection for IGP chips diff --git a/src/radeon_driver.c b/src/radeon_driver.c index b46f09c..04c9d3a 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -1453,24 +1453,20 @@ static Bool RADEONPreInitVRAM(ScrnInfoPtr pScrn) MessageType from = X_PROBED; CARD32 accessible, bar_size; - if ((info->ChipFamily == CHIP_FAMILY_RS690) || - (info->ChipFamily == CHIP_FAMILY_RS740)) { - pScrn->videoRam = INREG(RADEON_CONFIG_MEMSIZE); - } else if (info->IsIGP) { - CARD32 tom = INREG(RADEON_NB_TOM); + if ((!IS_AVIVO_VARIANT) && info->IsIGP) { + CARD32 tom = INREG(RADEON_NB_TOM); pScrn->videoRam = (((tom >> 16) - (tom & 0xffff) + 1) << 6); OUTREG(RADEON_CONFIG_MEMSIZE, pScrn->videoRam * 1024); } else { - if (info->ChipFamily >= CHIP_FAMILY_R600) pScrn->videoRam = INREG(R600_CONFIG_MEMSIZE) / 1024; else { /* Read VRAM size from card */ pScrn->videoRam = INREG(RADEON_CONFIG_MEMSIZE) / 1024; - + /* Some production boards of m6 will return 0 if it's 8 MB */ if (pScrn->videoRam == 0) { pScrn->videoRam = 8192; commit 5b7875d0cbfbdbcd1515c4e942d30de298b49dff Author: Doug Chapman <[EMAIL PROTECTED]> Date: Thu Mar 6 14:31:06 2008 -0500 Bug #14826: Fix a bogus check around xf86SetOperatingState. diff --git a/src/radeon_driver.c b/src/radeon_driver.c index 7b9c242..b0daa7c 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -2639,8 +2639,7 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags) if (xf86RegisterResources(info->pEnt->index, 0, ResExclusive)) goto fail; - if (xf86SetOperatingState(resVga, info->pEnt->index, ResUnusedOpr)) - goto fail; + xf86SetOperatingState(resVga, info->pEnt->index, ResUnusedOpr); pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_VIEWPORT | RAC_CURSOR; pScrn->monitor = pScrn->confScreen->monitor; commit 41171c25cd235bafad26bcbabced16ead4b8c54b Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Mar 6 14:05:18 2008 -0500 DCE3.0: add support for crtc memreq table diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index f144e42..a4703c5 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -48,7 +48,7 @@ #include "sarea.h" #endif -AtomBiosResult +static AtomBiosResult atombios_enable_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) { ENABLE_CRTC_PS_ALLOCATION crtc_data; @@ -71,7 +71,30 @@ atombios_enable_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) return ATOM_NOT_IMPLEMENTED; } -AtomBiosResult +static AtomBiosResult +atombios_enable_crtc_memreq(atomBiosHandlePtr atomBIOS, int crtc, int state) +{ + ENABLE_CRTC_PS_ALLOCATION crtc_data; + AtomBiosArgRec data; + unsigned char *space; + + crtc_data.ucCRTC = crtc; + crtc_data.ucEnable = state; + + data.exec.index = GetIndexIntoMasterTable(COMMAND, EnableCRTCMemReq); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &crtc_data; + + if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { + ErrorF("%s CRTC memreq %d success\n", state? "Enable":"Disable", crtc); + return ATOM_SUCCESS ; + } + + ErrorF("Enable CRTC memreq failed\n"); + return ATOM_NOT_IMPLEMENTED; +} + +static AtomBiosResult atombios_blank_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) { BLANK_CRTC_PS_ALLOCATION crtc_data; @@ -95,19 +118,6 @@ atombios_blank_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) return ATOM_NOT_IMPLEMENTED; } -#if 0 -static void -atombios_crtc_enable(xf86CrtcPtr crtc, int enable) -{ - RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; - RADEONInfoPtr info = RADEONPTR(crtc->scrn); - - atombios_enable_crtc(info->atomBIOS, radeon_crtc->crtc_id, enable); - - //TODOavivo_wait_idle(avivo); -} -#endif - void atombios_crtc_dpms(xf86CrtcPtr crtc, int mode) { @@ -117,12 +127,16 @@ atombios_crtc_dpms(xf86CrtcPtr crtc, int mode) case DPMSModeOn: case DPMSModeStandby: case DPMSModeSuspend: + if (IS_DCE3_VARIANT) + atombios_enable_crtc_memreq(info->atomBIOS, radeon_crtc->crtc_id, 1); atombios_enable_crtc(info->atomBIOS, radeon_crtc->crtc_id, 1); atombios_blank_crtc(info->atomBIOS, radeon_crtc->crtc_id, 0); break; case DPMSModeOff: atombios_blank_crtc(info->atomBIOS, radeon_crtc->crtc_id, 1); atombios_enable_crtc(info->atomBIOS, radeon_crtc->crtc_id, 0); + if (IS_DCE3_VARIANT) + atombios_enable_crtc_memreq(info->atomBIOS, radeon_crtc->crtc_id, 0); break; } } commit 766f464dfdfccadef23e4232f2bce5db22195513 Author: Alex Deucher <[EMAIL PROTECTED](none)> Date: Thu Mar 6 13:35:43 2008 -0500 RADEON: take 2 on proper pragma pack support for bsds See bug 14594. Based on suggestion by Henry Zhao diff --git a/configure.ac b/configure.ac index 8321915..b644348 100644 --- a/configure.ac +++ b/configure.ac @@ -233,14 +233,9 @@ fi AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) case $host_os in - *freebsd*) - AC_DEFINE(ALT_PRAGMA_PACK, 1, [Use alternate pragma pack]) ;; - *netbsd*) - AC_DEFINE(ALT_PRAGMA_PACK, 1, [Use alternate pragma pack]) ;; - *openbsd*) - AC_DEFINE(ALT_PRAGMA_PACK, 1, [Use alternate pragma pack]) ;; + *linux*) + AC_DEFINE(FGL_LINUX, 1, [Use linux pragma pack]) ;; esac -AM_CONDITIONAL(ALT_PRAGMA_PACK, test "x$ALT_PRAGMA_PACK" = xyes) AC_SUBST([XORG_CFLAGS]) AC_SUBST([DRI_CFLAGS]) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]