xserver-xorg-video-ati: Changes to 'debian-experimental'
ChangeLog | 176 ++++++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 2
debian/changelog | 7 +
man/radeon.man | 42 ++++++++---
src/atombios_crtc.c | 21 +----
src/atombios_output.c | 46 +++++++++++-
src/legacy_crtc.c | 4 -
src/radeon.h | 3
src/radeon_atombios.c | 10 ++
src/radeon_crtc.c | 2
src/radeon_dri.c | 9 +-
src/radeon_driver.c | 43 +++++++++++
src/radeon_exa.c | 10 ++
src/radeon_exa_render.c | 117 +++++++++++++++++--------------
src/radeon_output.c | 29 ++++---
src/radeon_probe.h | 1
16 files changed, 416 insertions(+), 106 deletions(-)
New commits:
commit deada5870a51d57334398468c147cdb04bdedc68
Author: Brice Goglin <bgoglin@debian.org>
Date: Thu Feb 19 00:14:03 2009 +0100
Prepare changelog for upload
diff --git a/debian/changelog b/debian/changelog
index d9faa5b..145b56e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
-xserver-xorg-video-ati (1:6.11.0-1) UNRELEASED; urgency=low
+xserver-xorg-video-ati (1:6.11.0-1) experimental; urgency=low
* New upstream release.
+ Add more AGPMode quirks, closes: #515326, #515512.
- -- Brice Goglin <bgoglin@debian.org> Thu, 19 Feb 2009 00:12:55 +0100
+ -- Brice Goglin <bgoglin@debian.org> Thu, 19 Feb 2009 00:13:59 +0100
xserver-xorg-video-ati (1:6.10.99.0-1) experimental; urgency=low
commit 9c89b12f0360a2f6ad74b45559c5ae87e7bc615c
Author: Brice Goglin <bgoglin@debian.org>
Date: Thu Feb 19 00:13:48 2009 +0100
New upstream release
diff --git a/ChangeLog b/ChangeLog
index c54b415..bd5c8e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,179 @@
+commit 0d3d1f1f7b450dabd3ad7d2df26ad1c72709b29b
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Feb 18 17:24:57 2009 -0500
+
+ bump for release
+
+commit 76a32f8391317513538dafee49cbb61c0d756356
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Feb 18 16:31:44 2009 -0500
+
+ R6xx: Connector quirk for asus board
+
+ bug 19943
+
+commit 97b8482dba4e99088b59d3ab1396be98a70e823e
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Feb 18 13:27:15 2009 -0500
+
+ Set default RMX type to FULL on LVDS
+
+commit 7d22b1799b34010d34c3600d6cb02ffe839a0780
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Feb 18 12:55:40 2009 -0500
+
+ DCE3.2+: allow output cloning
+
+commit 1a237a40958c006c56b80850bd77b2ac6c17e030
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Feb 18 11:46:20 2009 -0500
+
+ ATOM: reset crtc initialized flag on CloseScreen()
+
+ additional fix needed for bug 16781
+
+commit 9a108f0a0b7203458673ce6221e747a166d39617
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Feb 17 19:52:27 2009 -0500
+
+ ATOM: don't unblank uninitialized crtcs
+
+ If the crtc timing isn't setup, you might get stuck in a loop
+ in the BlankCRTC command table
+
+ fixes bug 16781
+
+commit 31bd6d28dd35021e0e706d4f094989deb856c26a
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Feb 17 11:24:02 2009 -0500
+
+ Fix crtc routing on pre-DCE3.2 systems
+
+ This should fix peterz and bug 20074
+
+commit 3c9e00c7f2ed494976713e8f77b729e0d76409db
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon Feb 16 16:18:42 2009 -0500
+
+ RV350: add another AGP quirk
+
+commit 036a17bec5dabbb91640b907811da060dac154d6
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon Feb 16 13:10:45 2009 -0500
+
+ RV280: add another agp quirk
+
+commit 00ac9d2f8d58725d0d3e6b1bf7f728d9ae7e6109
+Author: David Miller <davem@davemloft.net>
+Date: Sun Feb 15 18:26:14 2009 +1000
+
+ GART: Save/restore GART table consistently.
+
+ Always save the GART table with the RADEON_SURFACE_CNTL register
+ zero'd out to make sure we always use the same endinanness.
+
+ fixed up as per Michel's suggestion for endianness.
+
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+ Signed-off-by: Dave Airlie <airlied@linux.ie>
+
+commit 2de90c8349409eb892edc57fd24b61b679eb7719
+Author: David Miller <davem@davemloft.net>
+Date: Sun Feb 15 18:24:01 2009 +1000
+
+ DRI: Fix page size used in RADEONDRIGetPciAperTableSize().
+
+ The ATI GART has a fixed size of 4096 bytes. So using
+ the system page size here is wrong.
+
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+ Signed-off-by: Dave Airlie <airlied@linux.ie>
+
+commit 3ff1eb7e50fef22adb6280dd7de77c3ecafdb451
+Author: Michel Dänzer <daenzer@vmware.com>
+Date: Thu Feb 12 19:24:41 2009 +0100
+
+ EXA: If making a pixmap offscreen fails, return ~0ULL as texture offset.
+
+ This allows AIGLX to fall back to the non-zero-copy code rather than messing up
+ the 3D driver.
+
+commit c19aa4fc8da7ac4745624098b146bcc42c0436dd
+Author: Michel Dänzer <daenzer@vmware.com>
+Date: Thu Feb 12 19:22:12 2009 +0100
+
+ EXA: The source tiling code can't handle RepeatReflect yet.
+
+commit adc35636aa1e936ec74cba8931ccffe2b5c11656
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Feb 12 13:10:53 2009 -0500
+
+ R1xx/R2xx EXA: fix non repeat texture setup
+
+commit c6e1bf75c399807716b99486ab3301aeba60fa79
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Feb 12 12:49:24 2009 -0500
+
+ R3xx-R5xx EXA: fix texture setup for non-repeat case
+
+ fixes bug 19923
+
+commit 0804dde9012cf33f614a1c2ee6d5d0def040a9af
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Feb 12 12:02:57 2009 -0500
+
+ AVIVO: fix dualhead/rotation for real
+
+commit d98359b20e1eb8eae893581ab199c299c8352dc4
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Feb 11 12:03:56 2009 -0500
+
+ Revert "Radeon EXA: wait for the engine to be idle before sw access"
+
+ This reverts commit 0c4694c58f2ec152b19023626bc7ced891d9da65.
+
+ This patch just adds latency and thus isn't a real solution
+
+commit 0c4694c58f2ec152b19023626bc7ced891d9da65
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Feb 10 17:08:37 2009 -0500
+
+ Radeon EXA: wait for the engine to be idle before sw access
+
+ Really we need proper fencing with timestamps but this should
+ help in the short term.
+
+ This should help with minor corruption issues and possibly
+ lockups.
+
+commit 13ab61d90bb58112bef4ce7267ef127935315f80
+Author: Fabio <fabio.ped@libero.it>
+Date: Tue Feb 10 10:50:30 2009 -0500
+
+ man page updates
+
+ bug 20030
+
+commit 615f2f202cee5f0dd2c6b29329f843bb1c9c70d5
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Feb 10 10:17:47 2009 -0500
+
+ Bump version post RC release
+
+commit ff6efe513e0c3148812d6a9578d2265522417053
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon Feb 9 17:43:24 2009 -0500
+
+ ATOM: warning fixes
+
+commit 87ad9006f3dafb45e131c9a3d6df713321f39998
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon Feb 9 17:40:41 2009 -0500
+
+ RV350: add AGP quirk
+
+ bug 19981
+
commit 610b8b65fd7aa97f9c03b2ff6ae607aa959eab0b
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Mon Feb 9 16:33:20 2009 -0500
diff --git a/debian/changelog b/debian/changelog
index b2770e3..d9faa5b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xserver-xorg-video-ati (1:6.11.0-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+ + Add more AGPMode quirks, closes: #515326, #515512.
+
+ -- Brice Goglin <bgoglin@debian.org> Thu, 19 Feb 2009 00:12:55 +0100
+
xserver-xorg-video-ati (1:6.10.99.0-1) experimental; urgency=low
* New upstream release candidate.
commit 0d3d1f1f7b450dabd3ad7d2df26ad1c72709b29b
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Feb 18 17:24:57 2009 -0500
bump for release
diff --git a/configure.ac b/configure.ac
index 8a51171..0523cc0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-ati],
- 6.10.99.99,
+ 6.11.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-ati)
commit 76a32f8391317513538dafee49cbb61c0d756356
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Feb 18 16:31:44 2009 -0500
R6xx: Connector quirk for asus board
bug 19943
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 87e89ba..34bf1dc 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1570,6 +1570,16 @@ static void RADEONApplyATOMQuirks(ScrnInfoPtr pScrn, int index)
(info->BiosConnector[index].ConnectorType == CONNECTOR_HDMI_TYPE_B)) {
info->BiosConnector[index].devices &= ~(ATOM_DEVICE_CRT_SUPPORT);
}
+
+ /* ASUS HD 3600 XT board lists the DVI port as HDMI */
+ if ((info->Chipset == PCI_CHIP_RV635_9598) &&
+ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1043) &&
+ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x01da)) {
+ if (info->BiosConnector[index].ConnectorType == CONNECTOR_HDMI_TYPE_B)
+ info->BiosConnector[index].ConnectorType = CONNECTOR_DVI_D;
+ }
+
+
}
uint32_t
commit 97b8482dba4e99088b59d3ab1396be98a70e823e
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Feb 18 13:27:15 2009 -0500
Set default RMX type to FULL on LVDS
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 113bf67..352519f 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1848,7 +1848,10 @@ void RADEONInitConnector(xf86OutputPtr output)
RADEONInfoPtr info = RADEONPTR(pScrn);
RADEONOutputPrivatePtr radeon_output = output->driver_private;
- radeon_output->rmx_type = RMX_OFF;
+ if (radeon_output->devices & (ATOM_DEVICE_LCD_SUPPORT))
+ radeon_output->rmx_type = RMX_FULL;
+ else
+ radeon_output->rmx_type = RMX_OFF;
if (!IS_AVIVO_VARIANT) {
if (radeon_output->devices & (ATOM_DEVICE_CRT2_SUPPORT)) {
commit 7d22b1799b34010d34c3600d6cb02ffe839a0780
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Feb 18 12:55:40 2009 -0500
DCE3.2+: allow output cloning
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 2128dab..113bf67 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -2469,14 +2469,10 @@ static int
radeon_output_clones (ScrnInfoPtr pScrn, xf86OutputPtr output)
{
RADEONOutputPrivatePtr radeon_output = output->driver_private;
- RADEONInfoPtr info = RADEONPTR(pScrn);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (pScrn);
int o;
int index_mask = 0;
- if (IS_DCE3_VARIANT)
- return index_mask;
-
/* LVDS is too wacky */
if (radeon_output->devices & (ATOM_DEVICE_LCD_SUPPORT))
return index_mask;
commit 1a237a40958c006c56b80850bd77b2ac6c17e030
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Feb 18 11:46:20 2009 -0500
ATOM: reset crtc initialized flag on CloseScreen()
additional fix needed for bug 16781
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 32608a4..32cb307 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -5641,6 +5641,8 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
RADEONInfoPtr info = RADEONPTR(pScrn);
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ int i;
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
"RADEONCloseScreen\n");
@@ -5650,6 +5652,13 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
*/
info->accelOn = FALSE;
+ for (i = 0; i < config->num_crtc; i++) {
+ xf86CrtcPtr crtc = config->crtc[i];
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+
+ radeon_crtc->initialized = FALSE;
+ }
+
#ifdef XF86DRI
#ifdef DAMAGE
if (info->dri && info->dri->pDamage) {
commit 9a108f0a0b7203458673ce6221e747a166d39617
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Tue Feb 17 19:52:27 2009 -0500
ATOM: don't unblank uninitialized crtcs
If the crtc timing isn't setup, you might get stuck in a loop
in the BlankCRTC command table
fixes bug 16781
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index 432cebe..5c26ef8 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -491,6 +491,8 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
if (info->DispPriority)
RADEONInitDispBandwidth(pScrn);
+ radeon_crtc->initialized = TRUE;
+
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 */
diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c
index cba1b5f..b8c5380 100644
--- a/src/legacy_crtc.c
+++ b/src/legacy_crtc.c
@@ -1832,7 +1832,9 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
radeon_update_tv_routing(pScrn, info->ModeReg);
if (info->DispPriority)
- RADEONInitDispBandwidth(pScrn);
+ RADEONInitDispBandwidth(pScrn);
+
+ radeon_crtc->initialized = TRUE;
if (tilingChanged) {
/* need to redraw front buffer, I guess this can be considered a hack ? */
diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index e0875a4..5a7c730 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -609,6 +609,7 @@ 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;
+ pRADEONEnt->Controller[0]->initialized = FALSE;
if (info->allowColorTiling)
pRADEONEnt->Controller[0]->can_tile = 1;
else
@@ -633,6 +634,7 @@ 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;
+ pRADEONEnt->Controller[1]->initialized = FALSE;
if (info->allowColorTiling)
pRADEONEnt->Controller[1]->can_tile = 1;
else
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index d22db58..32608a4 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -5601,18 +5601,24 @@ void RADEONLeaveVT(int scrnIndex, int flags)
}
#endif
-#ifndef HAVE_FREE_SHADOW
+
for (i = 0; i < config->num_crtc; i++) {
xf86CrtcPtr crtc = config->crtc[i];
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+ radeon_crtc->initialized = FALSE;
+
+#ifndef HAVE_FREE_SHADOW
if (crtc->rotatedPixmap || crtc->rotatedData) {
crtc->funcs->shadow_destroy(crtc, crtc->rotatedPixmap,
crtc->rotatedData);
crtc->rotatedPixmap = NULL;
crtc->rotatedData = NULL;
}
+#endif
}
-#else
+
+#ifdef HAVE_FREE_SHADOW
xf86RotateFreeShadow(pScrn);
#endif
diff --git a/src/radeon_output.c b/src/radeon_output.c
index ba4cb7f..2128dab 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -510,10 +510,12 @@ radeon_mode_prepare(xf86OutputPtr output)
xf86CrtcPtr other_crtc = loop_output->crtc;
RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private;
if (other_crtc->enabled) {
- radeon_crtc_dpms(other_crtc, DPMSModeOff);
- if (IS_AVIVO_VARIANT)
- atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1);
- radeon_dpms(loop_output, DPMSModeOff);
+ if (other_radeon_crtc->initialized) {
+ radeon_crtc_dpms(other_crtc, DPMSModeOff);
+ if (IS_AVIVO_VARIANT)
+ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1);
+ radeon_dpms(loop_output, DPMSModeOff);
+ }
}
}
}
@@ -553,10 +555,12 @@ radeon_mode_commit(xf86OutputPtr output)
xf86CrtcPtr other_crtc = loop_output->crtc;
RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private;
if (other_crtc->enabled) {
- radeon_crtc_dpms(other_crtc, DPMSModeOn);
- if (IS_AVIVO_VARIANT)
- atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0);
- radeon_dpms(loop_output, DPMSModeOn);
+ if (other_radeon_crtc->initialized) {
+ radeon_crtc_dpms(other_crtc, DPMSModeOn);
+ if (IS_AVIVO_VARIANT)
+ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0);
+ radeon_dpms(loop_output, DPMSModeOn);
+ }
}
}
}
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 1b6ed7b..447ef57 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -157,6 +157,7 @@ typedef struct _RADEONCrtcPrivateRec {
uint32_t crtc_offset;
int can_tile;
Bool enabled;
+ Bool initialized;
} RADEONCrtcPrivateRec, *RADEONCrtcPrivatePtr;
typedef struct _radeon_encoder {
commit 31bd6d28dd35021e0e706d4f094989deb856c26a
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Tue Feb 17 11:24:02 2009 -0500
Fix crtc routing on pre-DCE3.2 systems
This should fix peterz and bug 20074
diff --git a/src/atombios_output.c b/src/atombios_output.c
index fa986c4..c4baa13 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -1267,7 +1267,43 @@ atombios_set_output_crtc_source(xf86OutputPtr output)
case 1:
default:
crtc_src_param.ucCRTC = radeon_crtc->crtc_id;
- crtc_src_param.ucDevice = radeon_get_device_index(radeon_output->active_device);
+ switch (radeon_encoder->encoder_id) {
+ case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
+ crtc_src_param.ucDevice = ATOM_DEVICE_DFP1_INDEX;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_LVDS:
+ case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
+ if (radeon_output->active_device & ATOM_DEVICE_LCD1_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_LCD1_INDEX;
+ else
+ crtc_src_param.ucDevice = ATOM_DEVICE_DFP3_INDEX;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_DVO1:
+ case ENCODER_OBJECT_ID_INTERNAL_DDI:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
+ crtc_src_param.ucDevice = ATOM_DEVICE_DFP2_INDEX;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_DAC1:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
+ if (radeon_output->active_device & (ATOM_DEVICE_TV_SUPPORT))
+ crtc_src_param.ucDevice = ATOM_DEVICE_TV1_INDEX;
+ else if (radeon_output->active_device & (ATOM_DEVICE_CV_SUPPORT))
+ crtc_src_param.ucDevice = ATOM_DEVICE_CV_INDEX;
+ else
+ crtc_src_param.ucDevice = ATOM_DEVICE_CRT1_INDEX;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_DAC2:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
+ if (radeon_output->active_device & (ATOM_DEVICE_TV_SUPPORT))
+ crtc_src_param.ucDevice = ATOM_DEVICE_TV1_INDEX;
+ else if (radeon_output->active_device & (ATOM_DEVICE_CV_SUPPORT))
+ crtc_src_param.ucDevice = ATOM_DEVICE_CV_INDEX;
+ else
+ crtc_src_param.ucDevice = ATOM_DEVICE_CRT2_INDEX;
+ break;
+ }
data.exec.pspace = &crtc_src_param;
/*ErrorF("device sourced: 0x%x\n", crtc_src_param.ucDevice);*/
break;
commit 3c9e00c7f2ed494976713e8f77b729e0d76409db
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Mon Feb 16 16:18:42 2009 -0500
RV350: add another AGP quirk
diff --git a/src/radeon_dri.c b/src/radeon_dri.c
index 2e4ef69..59d9a83 100644
--- a/src/radeon_dri.c
+++ b/src/radeon_dri.c
@@ -736,6 +736,8 @@ typedef struct {
/* Keep sorted by hostbridge vendor and device */
static radeon_agpmode_quirk radeon_agpmode_quirk_list[] = {
+ /* Intel E7505 Memory Controller Hub / RV350 AR [Radeon 9600XT] Needs AGPMode 4 (deb #515326) */
+ { PCI_VENDOR_INTEL,0x2550, PCI_VENDOR_ATI,0x4152, 0x1458,0x4038, 4 },
/* Intel 82865G/PE/P DRAM Controller/Host-Hub / Mobility 9800 Needs AGPMode 4 (deb #462590) */
{ PCI_VENDOR_INTEL,0x2570, PCI_VENDOR_ATI,0x4a4e, PCI_VENDOR_DELL,0x5106, 4 },
/* Intel 82855PM Processor to I/O Controller / Mobility M6 LY Needs AGPMode 1 (deb #467235) */
commit 036a17bec5dabbb91640b907811da060dac154d6
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Mon Feb 16 13:10:45 2009 -0500
RV280: add another agp quirk
diff --git a/src/radeon_dri.c b/src/radeon_dri.c
index 7cf4d39..2e4ef69 100644
--- a/src/radeon_dri.c
+++ b/src/radeon_dri.c
@@ -768,6 +768,8 @@ static radeon_agpmode_quirk radeon_agpmode_quirk_list[] = {
{ 0x1106,0x3189, PCI_VENDOR_ATI,0x5964, 0x148c,0x2073, 4 },
/* VIA VT82C693A Host Bridge / RV280 [Radeon 9200 PRO] Needs AGPMode 2 */
{ 0x1106,0x0691, PCI_VENDOR_ATI,0x5960, 0x1043,0x0054, 2 },
+ /* VIA VT82C693A Host Bridge / RV280 [Radeon 9200 PRO] Needs AGPMode 2 (deb #515512) */
+ { 0x1106,0x0691, PCI_VENDOR_ATI,0x5960, 0x1043,0x004c, 2 },
/* VIA K8M800 Host Bridge / RV280 [Radeon 9200 PRO] Needs AGPMode 4 (fdo #12544) */
{ 0x1106,0x0204, PCI_VENDOR_ATI,0x5960, 0x17af,0x2020, 4 },
/* VIA KT880 Host Bridge / RV350 [Radeon 9550] Needs AGPMode 4 (fdo #19981) */
commit 00ac9d2f8d58725d0d3e6b1bf7f728d9ae7e6109
Author: David Miller <davem@davemloft.net>
Date: Sun Feb 15 18:26:14 2009 +1000
GART: Save/restore GART table consistently.
Always save the GART table with the RADEON_SURFACE_CNTL register
zero'd out to make sure we always use the same endinanness.
fixed up as per Michel's suggestion for endianness.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Dave Airlie <airlied@linux.ie>
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 813b25e..d22db58 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -5511,8 +5511,17 @@ Bool RADEONEnterVT(int scrnIndex, int flags)
if (info->cardType == CARD_PCIE &&
info->dri->pKernelDRMVersion->version_minor >= 19 &&
info->FbSecureSize) {
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ unsigned char *RADEONMMIO = info->MMIO;
+ unsigned int sctrl = INREG(RADEON_SURFACE_CNTL);
+
/* we need to backup the PCIE GART TABLE from fb memory */
+ OUTREG(RADEON_SURFACE_CNTL, 0);
+#endif
memcpy(info->FB + info->dri->pciGartOffset, info->dri->pciGartBackup, info->dri->pciGartSize);
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ OUTREG(RADEON_SURFACE_CNTL, sctrl);
+#endif
}
/* get the DRI back into shape after resume */
@@ -5562,8 +5571,17 @@ void RADEONLeaveVT(int scrnIndex, int flags)
if (info->cardType == CARD_PCIE &&
info->dri->pKernelDRMVersion->version_minor >= 19 &&
info->FbSecureSize) {
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ unsigned char *RADEONMMIO = info->MMIO;
+ unsigned int sctrl = INREG(RADEON_SURFACE_CNTL);
+
/* we need to backup the PCIE GART TABLE from fb memory */
+ OUTREG(RADEON_SURFACE_CNTL, 0);
+#endif
memcpy(info->dri->pciGartBackup, (info->FB + info->dri->pciGartOffset), info->dri->pciGartSize);
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ OUTREG(RADEON_SURFACE_CNTL, sctrl);
+#endif
}
/* Make sure 3D clients will re-upload textures to video RAM */
commit 2de90c8349409eb892edc57fd24b61b679eb7719
Author: David Miller <davem@davemloft.net>
Date: Sun Feb 15 18:24:01 2009 +1000
DRI: Fix page size used in RADEONDRIGetPciAperTableSize().
The ATI GART has a fixed size of 4096 bytes. So using
the system page size here is wrong.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Dave Airlie <airlied@linux.ie>
diff --git a/src/radeon_dri.c b/src/radeon_dri.c
index 44b3eb6..7cf4d39 100644
--- a/src/radeon_dri.c
+++ b/src/radeon_dri.c
@@ -2295,11 +2295,10 @@ void RADEONDRIAllocatePCIGARTTable(ScreenPtr pScreen)
int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn)
{
RADEONInfoPtr info = RADEONPTR(pScrn);
- int page_size = getpagesize();
int ret_size;
int num_pages;
- num_pages = (info->dri->pciAperSize * 1024 * 1024) / page_size;
+ num_pages = (info->dri->pciAperSize * 1024 * 1024) / 4096;
ret_size = num_pages * sizeof(unsigned int);
commit 3ff1eb7e50fef22adb6280dd7de77c3ecafdb451
Author: Michel Dänzer <daenzer@vmware.com>
Date: Thu Feb 12 19:24:41 2009 +0100
EXA: If making a pixmap offscreen fails, return ~0ULL as texture offset.
This allows AIGLX to fall back to the non-zero-copy code rather than messing up
the 3D driver.
diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index c4bc1bb..2f36d71 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -520,10 +520,16 @@ extern void ExaOffscreenMarkUsed(PixmapPtr);
unsigned long long
RADEONTexOffsetStart(PixmapPtr pPix)
{
+ RINFO_FROM_SCREEN(pPix->drawable.pScreen);
+ unsigned long long offset;
exaMoveInPixmap(pPix);
ExaOffscreenMarkUsed(pPix);
- return RADEONPTR(xf86Screens[pPix->drawable.pScreen->myNum])->fbLocation +
- exaGetPixmapOffset(pPix);
+ offset = exaGetPixmapOffset(pPix);
+
+ if (offset > info->FbMapSize)
+ return ~0ULL;
+ else
+ return info->fbLocation + offset;
}
#endif
commit c19aa4fc8da7ac4745624098b146bcc42c0436dd
Author: Michel Dänzer <daenzer@vmware.com>
Date: Thu Feb 12 19:22:12 2009 +0100
EXA: The source tiling code can't handle RepeatReflect yet.
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index a8d99ec..c44502c 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -284,7 +284,7 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
info->accel_state->need_src_tile_x = info->accel_state->need_src_tile_y = FALSE;
info->accel_state->src_tile_width = info->accel_state->src_tile_height = 65536; /* "infinite" */
- if (pPict->repeat && pPict->repeatType == RepeatNormal) {
+ if (pPict->repeat && pPict->repeatType != RepeatPad) {
Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix);
int w = pPict->pDrawable->width;
@@ -297,7 +297,12 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
} else {
info->accel_state->need_src_tile_x = (w & (w - 1)) != 0 || badPitch;
info->accel_state->need_src_tile_y = (h & (h - 1)) != 0;
-
+
+ if ((info->accel_state->need_src_tile_x ||
+ info->accel_state->need_src_tile_y) &&
+ pPict->repeatType != RepeatNormal)
+ RADEON_FALLBACK(("Can only tile RepeatNormal at this time\n"));
+
if (!canTile1d)
info->accel_state->need_src_tile_x =
info->accel_state->need_src_tile_y =
commit adc35636aa1e936ec74cba8931ccffe2b5c11656
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Thu Feb 12 13:10:53 2009 -0500
R1xx/R2xx EXA: fix non repeat texture setup
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index a7626dd..a8d99ec 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -284,7 +284,7 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
info->accel_state->need_src_tile_x = info->accel_state->need_src_tile_y = FALSE;
info->accel_state->src_tile_width = info->accel_state->src_tile_height = 65536; /* "infinite" */
- if (pPict->repeatType == RepeatNormal) {
+ if (pPict->repeat && pPict->repeatType == RepeatNormal) {
Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix);
int w = pPict->pDrawable->width;
@@ -369,7 +369,7 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
RADEON_FALLBACK(("Bad texture offset 0x%x\n", (int)txoffset));
if ((txpitch & 0x1f) != 0)
RADEON_FALLBACK(("Bad texture pitch 0x%x\n", (int)txpitch));
-
+
for (i = 0; i < sizeof(R100TexFormats) / sizeof(R100TexFormats[0]); i++)
{
if (R100TexFormats[i].fmt == pPict->format)
@@ -404,19 +404,21 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
RADEON_FALLBACK(("Bad filter 0x%x\n", pPict->filter));
}
- switch (pPict->repeatType) {
- case RepeatNormal:
- txfilter |= RADEON_CLAMP_S_WRAP | RADEON_CLAMP_T_WRAP;
- break;
- case RepeatPad:
- txfilter |= RADEON_CLAMP_S_CLAMP_LAST | RADEON_CLAMP_T_CLAMP_LAST;
- break;
- case RepeatReflect:
- txfilter |= RADEON_CLAMP_S_MIRROR | RADEON_CLAMP_T_MIRROR;
- break;
- case RepeatNone:
- /* Nothing to do */
- break;
+ if (repeat) {
+ switch (pPict->repeatType) {
+ case RepeatNormal:
+ txfilter |= RADEON_CLAMP_S_WRAP | RADEON_CLAMP_T_WRAP;
+ break;
+ case RepeatPad:
+ txfilter |= RADEON_CLAMP_S_CLAMP_LAST | RADEON_CLAMP_T_CLAMP_LAST;
+ break;
+ case RepeatReflect:
+ txfilter |= RADEON_CLAMP_S_MIRROR | RADEON_CLAMP_T_MIRROR;
+ break;
+ case RepeatNone:
+ /* Nothing to do */
+ break;
+ }
}
BEGIN_ACCEL(5);
@@ -740,19 +742,21 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
RADEON_FALLBACK(("Bad filter 0x%x\n", pPict->filter));
}
- switch (pPict->repeatType) {
- case RepeatNormal:
- txfilter |= R200_CLAMP_S_WRAP | R200_CLAMP_T_WRAP;
- break;
- case RepeatPad:
- txfilter |= R200_CLAMP_S_CLAMP_LAST | R200_CLAMP_T_CLAMP_LAST;
- break;
- case RepeatReflect:
- txfilter |= R200_CLAMP_S_MIRROR | R200_CLAMP_T_MIRROR;
- break;
- case RepeatNone:
- /* Nothing to do */
- break;
+ if (repeat) {
+ switch (pPict->repeatType) {
+ case RepeatNormal:
+ txfilter |= R200_CLAMP_S_WRAP | R200_CLAMP_T_WRAP;
+ break;
+ case RepeatPad:
+ txfilter |= R200_CLAMP_S_CLAMP_LAST | R200_CLAMP_T_CLAMP_LAST;
+ break;
+ case RepeatReflect:
+ txfilter |= R200_CLAMP_S_MIRROR | R200_CLAMP_T_MIRROR;
+ break;
+ case RepeatNone:
+ /* Nothing to do */
+ break;
+ }
}
BEGIN_ACCEL(6);
commit c6e1bf75c399807716b99486ab3301aeba60fa79
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Thu Feb 12 12:49:24 2009 -0500
R3xx-R5xx EXA: fix texture setup for non-repeat case
fixes bug 19923
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index ceeee49..a7626dd 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -1088,32 +1088,36 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
txfilter = (unit << R300_TX_ID_SHIFT);
- switch (pPict->repeatType) {
- case RepeatNormal:
- if (unit != 0 || !info->accel_state->need_src_tile_x)
- txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP);
- else
- txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL);
+ if (pPict->repeat) {
+ switch (pPict->repeatType) {
+ case RepeatNormal:
+ if (unit != 0 || !info->accel_state->need_src_tile_x)
+ txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP);
+ else
+ txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL);
- if (unit != 0 || !info->accel_state->need_src_tile_y)
- txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP);
- else
- txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
+ if (unit != 0 || !info->accel_state->need_src_tile_y)
+ txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP);
+ else
+ txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
- break;
- case RepeatPad:
- txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_LAST) |
- R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST);
- break;
- case RepeatReflect:
- txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_MIRROR) |
- R300_TX_CLAMP_T(R300_TX_CLAMP_MIRROR);
- break;
- case RepeatNone:
+ break;
+ case RepeatPad:
+ txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_LAST) |
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST);
+ break;
+ case RepeatReflect:
+ txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_MIRROR) |
+ R300_TX_CLAMP_T(R300_TX_CLAMP_MIRROR);
+ break;
+ case RepeatNone:
+ txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL) |
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
+ break;
+ }
+ } else
txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL) |
- R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
- break;
- }
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
switch (pPict->filter) {
case PictFilterNearest:
commit 0804dde9012cf33f614a1c2ee6d5d0def040a9af
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Thu Feb 12 12:02:57 2009 -0500
AVIVO: fix dualhead/rotation for real
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index e79ba13..432cebe 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -455,23 +455,6 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
x = 0;
y = 0;
fb_location = fb_location + (char *)crtc->rotatedData - (char *)info->FB;
- switch (crtc->rotation) {
- case RR_Rotate_0:
- case RR_Rotate_180:
- OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, pScrn->virtualX);
- OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, pScrn->virtualY);
- default:
- break;
- case RR_Rotate_90:
- case RR_Rotate_270:
- OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, pScrn->virtualY);
- OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, pScrn->virtualX);
- break;
-
- }
- } else {
- OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, pScrn->virtualX);
- OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, pScrn->virtualY);
}
OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location);
@@ -482,6 +465,8 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y + radeon_crtc->crtc_offset, 0);
OUTREG(AVIVO_D1GRPH_X_START + radeon_crtc->crtc_offset, 0);
OUTREG(AVIVO_D1GRPH_Y_START + radeon_crtc->crtc_offset, 0);
+ OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, info->virtualX);
+ OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, info->virtualY);
OUTREG(AVIVO_D1GRPH_PITCH + radeon_crtc->crtc_offset,
crtc->scrn->displayWidth);
OUTREG(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
diff --git a/src/radeon.h b/src/radeon.h
index 66b2330..2944fe8 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -836,6 +836,9 @@ typedef struct {
/* some server chips have a hardcoded edid in the bios so that they work with KVMs */
Bool get_hardcoded_edid_from_bios;
+ int virtualX;
+ int virtualY;
+
Reply to: