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 <bgog...@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 <bgog...@debian.org> Thu, 19 Feb 2009 00:12:55 +0100 + -- Brice Goglin <bgog...@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 <bgog...@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 <alexdeuc...@gmail.com> +Date: Wed Feb 18 17:24:57 2009 -0500 + + bump for release + +commit 76a32f8391317513538dafee49cbb61c0d756356 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Feb 18 16:31:44 2009 -0500 + + R6xx: Connector quirk for asus board + + bug 19943 + +commit 97b8482dba4e99088b59d3ab1396be98a70e823e +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Feb 18 13:27:15 2009 -0500 + + Set default RMX type to FULL on LVDS + +commit 7d22b1799b34010d34c3600d6cb02ffe839a0780 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Feb 18 12:55:40 2009 -0500 + + DCE3.2+: allow output cloning + +commit 1a237a40958c006c56b80850bd77b2ac6c17e030 +Author: Alex Deucher <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@gmail.com> +Date: Mon Feb 16 16:18:42 2009 -0500 + + RV350: add another AGP quirk + +commit 036a17bec5dabbb91640b907811da060dac154d6 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Feb 16 13:10:45 2009 -0500 + + RV280: add another agp quirk + +commit 00ac9d2f8d58725d0d3e6b1bf7f728d9ae7e6109 +Author: David Miller <da...@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 <da...@davemloft.net> + Signed-off-by: Dave Airlie <airl...@linux.ie> + +commit 2de90c8349409eb892edc57fd24b61b679eb7719 +Author: David Miller <da...@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 <da...@davemloft.net> + Signed-off-by: Dave Airlie <airl...@linux.ie> + +commit 3ff1eb7e50fef22adb6280dd7de77c3ecafdb451 +Author: Michel Dänzer <daen...@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 <daen...@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 <alexdeuc...@gmail.com> +Date: Thu Feb 12 13:10:53 2009 -0500 + + R1xx/R2xx EXA: fix non repeat texture setup + +commit c6e1bf75c399807716b99486ab3301aeba60fa79 +Author: Alex Deucher <alexdeuc...@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 <alexdeuc...@gmail.com> +Date: Thu Feb 12 12:02:57 2009 -0500 + + AVIVO: fix dualhead/rotation for real + +commit d98359b20e1eb8eae893581ab199c299c8352dc4 +Author: Alex Deucher <alexdeuc...@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 <alexdeuc...@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....@libero.it> +Date: Tue Feb 10 10:50:30 2009 -0500 + + man page updates + + bug 20030 + +commit 615f2f202cee5f0dd2c6b29329f843bb1c9c70d5 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Tue Feb 10 10:17:47 2009 -0500 + + Bump version post RC release + +commit ff6efe513e0c3148812d6a9578d2265522417053 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Feb 9 17:43:24 2009 -0500 + + ATOM: warning fixes + +commit 87ad9006f3dafb45e131c9a3d6df713321f39998 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Feb 9 17:40:41 2009 -0500 + + RV350: add AGP quirk + + bug 19981 + commit 610b8b65fd7aa97f9c03b2ff6ae607aa959eab0b Author: Alex Deucher <alexdeuc...@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 <bgog...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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 <da...@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 <da...@davemloft.net> Signed-off-by: Dave Airlie <airl...@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 <da...@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 <da...@davemloft.net> Signed-off-by: Dave Airlie <airl...@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 <daen...@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 <daen...@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 <alexdeuc...@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 <alexdeuc...@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 <alexdeuc...@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; + -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org