xserver-xorg-video-ati: Changes to 'debian-experimental'
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 <bgoglin@debian.org>
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 <matthieu@bluenote.herrb.net>
+Date: Sat Mar 8 23:22:59 2008 +0100
+
+ Makefile.am: nuke RCS Id
+
+commit 9d710ee1a44cf2f3a948fbdbe17ef09521cbe744
+Author: Alex Deucher <alex@cube.(none)>
+Date: Fri Mar 7 15:09:14 2008 -0500
+
+ AVIVO: clean up some unused variables
+
+commit c28c30c9f3d7bfebfd56a5c982c96f0090982054
+Author: Alex Deucher <alex@t41p.hsd1.va.comcast.net>
+Date: Fri Mar 7 14:10:49 2008 -0500
+
+ RADEON: Fix crash in last commit
+
+commit c3a3635865e380c784a226c8ead069d4716d6b75
+Author: Dave Airlie <airlied@redhat.com>
+Date: Thu Mar 6 20:17:45 2008 -0500
+
+ RADEON: fix tiling/interlaced interaction with randr 1.2
+
+commit df1b94dc4eb1f35b636dbf2ec0ab1c2da9937c0d
+Author: Alex Deucher <alex@botch2.(none)>
+Date: Thu Mar 6 19:22:08 2008 -0500
+
+ DCE3: Ignore outputs with DIN connectors for now
+
+commit cb2dc19387c7b6494c47c76d683cf38a48700768
+Author: Alex Deucher <alex@cube.(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 <alex@cube.(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 <alex@cube.(none)>
+Date: Thu Mar 6 17:31:37 2008 -0500
+
+ Merge branch 'master' of ssh://agd5f@git.freedesktop.org/git/xorg/driver/xf86-video-ati
+
+commit 594743a99811a8b0f391412892414fcd158eeb56
+Author: Alex Deucher <alex@cube.(none)>
+Date: Thu Mar 6 17:30:21 2008 -0500
+
+ AVIVO: fix up memsize detection for IGP chips
+
+commit 5b7875d0cbfbdbcd1515c4e942d30de298b49dff
+Author: Doug Chapman <doug.chapman@hp.com>
+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 <ajax@redhat.com>
+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 <alex@cube.(none)>
+Date: Thu Mar 6 14:05:18 2008 -0500
+
+ DCE3.0: add support for crtc memreq table
+
+commit 766f464dfdfccadef23e4232f2bce5db22195513
+Author: Alex Deucher <alex@cube.(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 <alex@cube.(none)>
+Date: Thu Mar 6 12:32:18 2008 -0500
+
+ DCE3.0: Minor fixups
+
+commit 8a1ba374033591c725a78923aa30829e4de2a5ae
+Author: Alex Deucher <alex@cube.(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 <alex@cube.(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 <alex@botch2.(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 <alex@botch2.(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 <pcpa@mandriva.com.br>
+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 <alex@cube.(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 <ajax@redhat.com>
+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 <alex@samba.(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 <bgoglin@debian.org> 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
@USE_EXA_TRUE@RADEON_EXA_SOURCES = 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 <matthieu@bluenote.herrb.net>
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 <alex@cube.(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 <alex@t41p.hsd1.va.comcast.net>
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 <airlied@redhat.com>
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 <alex@botch2.(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 <alex@cube.(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 <alex@cube.(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 <alex@cube.(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 <doug.chapman@hp.com>
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 <alex@cube.(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 <alex@cube.(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])
Reply to: