Date: Saturday, December 26, 2009 @ 15:27:23 Author: andyrtr Revision: 61846
upgpkg: xf86-video-ati 6.12.4-3 add upstream git commits from 6.14 branch Added: xf86-video-ati/trunk/git_fixes.patch Modified: xf86-video-ati/trunk/PKGBUILD -----------------+ PKGBUILD | 12 - git_fixes.patch | 628 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 636 insertions(+), 4 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2009-12-26 18:48:16 UTC (rev 61845) +++ PKGBUILD 2009-12-26 20:27:23 UTC (rev 61846) @@ -6,21 +6,23 @@ #_gitdate=20091221 #pkgver=6.12.99.git${_gitdate} # see configure.ac pkgver=6.12.4 -pkgrel=2 +pkgrel=3 pkgdesc="X.org ati video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" license=('custom') -depends=('libdrm>=2.4.17-2' 'libpciaccess' 'ati-dri>=7.6.1' 'pixman>=0.16.4') -makedepends=('pkgconfig' 'xorg-server>=1.7.3.901' 'fontsproto' - 'glproto>=1.4.10' 'xf86driproto' 'diffutils' 'xorg-util-macros' 'xineramaproto' 'mesa>=7.6.1') +depends=('libdrm>=2.4.17-2' 'libpciaccess' 'ati-dri>=7.7' 'pixman>=0.16.4') +makedepends=('pkgconfig' 'xorg-server>=1.7.3.902' 'fontsproto' + 'glproto>=1.4.10' 'xf86driproto' 'diffutils' 'xorg-util-macros' 'xineramaproto' 'mesa>=7.7') conflicts=('xorg-server<1.7.0') groups=('xorg-video-drivers') options=('!libtool' 'force') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 #ftp://ftp.archlinux.org/other/$pkgname/xf86-video-ati-${_gitdate}.tar.bz2 + git_fixes.patch LICENSE) md5sums=('e662348f6f957fcedf52818d668ab9f5' + 'f4f0fd376b02dde282d97ce9744b7795' '75da66945980a43adf1e1856271b9d4a') build() { @@ -32,6 +34,8 @@ # return 1 cd "${srcdir}/${pkgname}-${pkgver}" + # add commits until 20091226 from 6.12 branch + patch -Np1 -i $srcdir/git_fixes.patch || return 1 # cd "${srcdir}/${pkgname}"* # ./autogen.sh --prefix=/usr --enable-dri || return 1 ./configure --prefix=/usr --enable-dri || return 1 Added: git_fixes.patch =================================================================== --- git_fixes.patch (rev 0) +++ git_fixes.patch 2009-12-26 20:27:23 UTC (rev 61846) @@ -0,0 +1,628 @@ +From 0db4b1708c2e5f3c14f48de186ee866ab8d9d5a9 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed, 07 Oct 2009 21:01:55 +0000 +Subject: radeon: clamp the internal FB map to the aperture size + +We don't use the invisible memory yet and on cards with +large amounts of vram this can cause the top of GART +calculation to overflow. + +Fixes bug fdo bug 24301: +http://bugs.freedesktop.org/show_bug.cgi?id=24301 +--- +diff --git a/src/radeon_driver.c b/src/radeon_driver.c +index 800397c..4e0dcf9 100644 +--- a/src/radeon_driver.c ++++ b/src/radeon_driver.c +@@ -1362,6 +1362,15 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) + if (aper_size > mem_size) + mem_size = aper_size; + ++ /* don't map the whole FB in the internal address space. ++ * we don't currently use fb space larger than the aperture ++ * size and on cards with 1 GB of vram, this can overflow ++ * the internal top of gart calculation on some systems. ++ * See fdo bug 24301. ++ */ ++ if (mem_size > aper_size) ++ mem_size = aper_size; ++ + #ifdef XF86DRI + /* Apply memory map limitation if using an old DRI */ + if (info->directRenderingEnabled && !info->dri->newMemoryMap) { +-- +cgit v0.8.3-6-g21f6 +From 26ecf3aad5f3a70b3267614bff6030604820f4d9 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon, 23 Nov 2009 17:54:41 +0000 +Subject: DCE3.2: fix uniphy2 dvi issues + +In some cases the atom transmitter table sets the +golden value of this reg differently which some monitors +don't like. I haven't had time to dig further, so this +works around it for now. + +Fixes fdo bug 24313 + +Signed-off-by: Alex Deucher <alexdeuc...@gmail.com> +--- +diff --git a/src/atombios_output.c b/src/atombios_output.c +index 57345b3..66a86f4 100644 +--- a/src/atombios_output.c ++++ b/src/atombios_output.c +@@ -1472,6 +1472,18 @@ atombios_apply_output_quirks(xf86OutputPtr output, DisplayModePtr mode) + /* set scaler clears this on some chips */ + if (IS_AVIVO_VARIANT && (mode->Flags & V_INTERLACE)) + OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, AVIVO_D1MODE_INTERLEAVE_EN); ++ ++ if (IS_DCE32_VARIANT && (radeon_output->active_device & (ATOM_DEVICE_DFP_SUPPORT))) { ++ radeon_encoder_ptr radeon_encoder = radeon_get_encoder(output); ++ if (radeon_encoder == NULL) ++ return; ++ /* XXX: need to sort out why transmitter control table sometimes sets this to a ++ * different golden value. ++ */ ++ if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_UNIPHY2) { ++ OUTREG(0x7ec4, 0x00824002); ++ } ++ } + } + + void +-- +cgit v0.8.3-6-g21f6 +From 3d59746808bc5f335104d27a8dce0fe94ab3cb78 Mon Sep 17 00:00:00 2001 +From: Matthijs Kooijman <matth...@stdin.nl> +Date: Thu, 03 Dec 2009 17:10:14 +0000 +Subject: radeon: fix crtc2 dpms + +noticed by Matthijs Kooijman on fdo bug 22140 +--- +diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c +index 5ea13bc..aee3d15 100644 +--- a/src/legacy_crtc.c ++++ b/src/legacy_crtc.c +@@ -670,8 +670,7 @@ legacy_crtc_dpms(xf86CrtcPtr crtc, int mode) + unsigned char *RADEONMMIO = pRADEONEnt->MMIO; + + if (radeon_crtc->crtc_id) +- mask = (RADEON_CRTC2_EN | +- RADEON_CRTC2_DISP_DIS | ++ mask = (RADEON_CRTC2_DISP_DIS | + RADEON_CRTC2_VSYNC_DIS | + RADEON_CRTC2_HSYNC_DIS | + RADEON_CRTC2_DISP_REQ_EN_B); +@@ -683,7 +682,7 @@ legacy_crtc_dpms(xf86CrtcPtr crtc, int mode) + switch(mode) { + case DPMSModeOn: + if (radeon_crtc->crtc_id) { +- OUTREGP(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_EN, ~mask); ++ OUTREGP(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_EN, ~(RADEON_CRTC2_EN | mask)); + } else { + OUTREGP(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_EN, ~(RADEON_CRTC_EN | RADEON_CRTC_DISP_REQ_EN_B)); + OUTREGP(RADEON_CRTC_EXT_CNTL, 0, ~mask); +@@ -693,7 +692,7 @@ legacy_crtc_dpms(xf86CrtcPtr crtc, int mode) + case DPMSModeSuspend: + case DPMSModeOff: + if (radeon_crtc->crtc_id) { +- OUTREGP(RADEON_CRTC2_GEN_CNTL, mask, ~mask); ++ OUTREGP(RADEON_CRTC2_GEN_CNTL, mask, ~(RADEON_CRTC2_EN | mask)); + } else { + OUTREGP(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_DISP_REQ_EN_B, ~(RADEON_CRTC_EN | RADEON_CRTC_DISP_REQ_EN_B)); + OUTREGP(RADEON_CRTC_EXT_CNTL, mask, ~mask); +-- +cgit v0.8.3-6-g21f6 +From 45edca0e9d7b833b9de3037e94f293122c922e42 Mon Sep 17 00:00:00 2001 +From: Michel Dänzer <daen...@vmware.com> +Date: Thu, 03 Sep 2009 12:55:05 +0000 +Subject: EXA: Check for solid/gradient pictures the same way for all generations. + +In particular, also catch them for >= R300. +--- +diff --git a/src/r600_exa.c b/src/r600_exa.c +index 9aeb862..54d91e8 100644 +--- a/src/r600_exa.c ++++ b/src/r600_exa.c +@@ -1313,6 +1313,9 @@ static Bool R600CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (op >= (int) (sizeof(R600BlendOp) / sizeof(R600BlendOp[0]))) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + ++ if (!pSrcPicture->pDrawable) ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ + pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); + + max_tex_w = 8192; +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index 660ec43..e663b54 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -478,7 +478,7 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + + if (!pSrcPicture->pDrawable) +- return FALSE; ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); + + /* r100 limit should be 2048, there are issues with 2048 + * see 197a62704742a4a19736c2637ac92d1dc5ab34ed +@@ -813,7 +813,7 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + + if (!pSrcPicture->pDrawable) +- return FALSE; ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); + + /* r200 limit should be 2048, there are issues with 2048 + * see bug 19269 +@@ -1192,6 +1192,9 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + ++ if (!pSrcPicture->pDrawable) ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ + pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); + + if (IS_R500_3D) { +-- +cgit v0.8.3-6-g21f6 +From 51266161f70baf4ddbf79ba6225ee2ae107a9f36 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Tue, 17 Nov 2009 19:16:22 +0000 +Subject: radeon: deal with connectors sourced to the same encoder + +Some systems have multiple connectors connected to the +same encoder; e.g., DVI and HDMI connected to the same +encoder with the same ddc line. Since we expose +connectors as xrandr outputs, randr treats them separately +which results in it trying to source the same encoder to +different crtcs. If we have an HDMI and DVI-D port on the +same encoder, pick the one to be considered connected +based on the edid (HDMI if edid indicates HDMI, DVI +otherwise). Also, don't turn off (dpms) encoders that are +shared. + +Fixes fdo bug 21767. + +Signed-off-by: Alex Deucher <alexdeuc...@gmail.com> +--- +diff --git a/src/radeon_output.c b/src/radeon_output.c +index edf59cd..6b6ba70 100644 +--- a/src/radeon_output.c ++++ b/src/radeon_output.c +@@ -236,10 +236,40 @@ radeon_ddc_connected(xf86OutputPtr output) + case CONNECTOR_HDMI_TYPE_A: + case CONNECTOR_HDMI_TYPE_B: + if (radeon_output->shared_ddc) { ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn); ++ int i; ++ + if (MonInfo->rawData[0x14] & 0x80) /* if it's digital and DVI/HDMI/etc. */ + MonType = MT_DFP; + else + MonType = MT_NONE; ++ ++ for (i = 0; i < config->num_output; i++) { ++ if (output != config->output[i]) { ++ RADEONOutputPrivatePtr other_radeon_output = ++ config->output[i]->driver_private; ++ if (radeon_output->devices & other_radeon_output->devices) { ++#ifndef EDID_COMPLETE_RAWDATA ++ if (radeon_output->ConnectorType == CONNECTOR_HDMI_TYPE_A) { ++ MonType = MT_NONE; ++ break; ++ } ++#else ++ if (xf86MonitorIsHDMI(MonInfo)) { ++ if (radeon_output->ConnectorType == CONNECTOR_DVI_D) { ++ MonType = MT_NONE; ++ break; ++ } ++ } else { ++ if (radeon_output->ConnectorType == CONNECTOR_HDMI_TYPE_A) { ++ MonType = MT_NONE; ++ break; ++ } ++ } ++#endif ++ } ++ } ++ } + } else + MonType = MT_DFP; + break; +@@ -334,6 +364,22 @@ radeon_dpms(xf86OutputPtr output, int mode) + if ((mode == DPMSModeOn) && radeon_output->enabled) + return; + ++ if ((mode != DPMSModeOn) && radeon_output->shared_ddc) { ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn); ++ int i; ++ ++ for (i = 0; i < config->num_output; i++) { ++ if (output != config->output[i]) { ++ RADEONOutputPrivatePtr other_radeon_output = ++ config->output[i]->driver_private; ++ if (radeon_output->devices & other_radeon_output->devices) { ++ if (output->status == XF86OutputStatusDisconnected) ++ return; ++ } ++ } ++ } ++ } ++ + if (IS_AVIVO_VARIANT || info->r4xx_atom) { + atombios_output_dpms(output, mode); + } else { +-- +cgit v0.8.3-6-g21f6 +From 587f693886e9025ba6fc30a8405902c43b2fcfb2 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Tue, 22 Dec 2009 13:45:27 +0000 +Subject: radeon: add cvt timing if we only have panel w/h + +fixes mac laptops without an edid + +Signed-off-by: Alex Deucher <alexdeuc...@gmail.com> +--- +diff --git a/src/radeon_modes.c b/src/radeon_modes.c +index ec60cc9..ce55c9f 100644 +--- a/src/radeon_modes.c ++++ b/src/radeon_modes.c +@@ -169,6 +169,20 @@ static DisplayModePtr RADEONFPNativeMode(xf86OutputPtr output) + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Added native panel mode: %dx%d\n", + native_mode->PanelXRes, native_mode->PanelYRes); ++ } else if (native_mode->PanelXRes != 0 && ++ native_mode->PanelYRes != 0) { ++ ++ new = xf86CVTMode(native_mode->PanelXRes, native_mode->PanelYRes, 60.0, TRUE, FALSE); ++ ++ if (new) { ++ new->type = M_T_DRIVER | M_T_PREFERRED; ++ ++ new->next = NULL; ++ new->prev = NULL; ++ } ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Added native panel mode using CVT: %dx%d\n", ++ native_mode->PanelXRes, native_mode->PanelYRes); + } + + return new; +-- +cgit v0.8.3-6-g21f6 +From 6dc632e2e91b6a7159ab3a27617b031713d8b8c4 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon, 09 Nov 2009 20:09:34 +0000 +Subject: IGP: some IGP chips report as AGP + +Set bus type appropriately. fixes bug 25002 + +Signed-off-by: Alex Deucher <alexdeuc...@gmail.com> +--- +diff --git a/src/radeon_driver.c b/src/radeon_driver.c +index c726f8f..17253a7 100644 +--- a/src/radeon_driver.c ++++ b/src/radeon_driver.c +@@ -1959,6 +1959,11 @@ static Bool RADEONPreInitChipType(ScrnInfoPtr pScrn) + if (info->cardType == CARD_PCIE && info->IsIGP) + info->cardType = CARD_PCI; + ++ /* some rs4xx cards report as agp */ ++ if ((info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) ++ info->cardType = CARD_PCI; ++ + if ((info->ChipFamily >= CHIP_FAMILY_R600) && info->IsIGP) + info->cardType = CARD_PCIE; + +@@ -1972,7 +1977,13 @@ static Bool RADEONPreInitChipType(ScrnInfoPtr pScrn) + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into AGP mode\n"); + } else if ((strcmp(s, "PCI") == 0) || + (strcmp(s, "PCIE") == 0)) { +- if (info->ChipFamily >= CHIP_FAMILY_RV380) { ++ if ((info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480) || ++ (info->ChipFamily == CHIP_FAMILY_RS690) || ++ (info->ChipFamily == CHIP_FAMILY_RS740)) { ++ info->cardType = CARD_PCI; ++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI mode\n"); ++ } else if (info->ChipFamily >= CHIP_FAMILY_RV380) { + info->cardType = CARD_PCIE; + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI Express mode\n"); + } else { +-- +cgit v0.8.3-6-g21f6 +From 93de38348fa77987297c3977d5acddbae54fbc10 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Thu, 12 Nov 2009 16:11:17 +0000 +Subject: radeon: man page updates + +--- +diff --git a/man/radeon.man b/man/radeon.man +index 09239cf..4d8942f 100644 +--- a/man/radeon.man ++++ b/man/radeon.man +@@ -40,14 +40,14 @@ R/RV/RS2xx and RS3xx); + .TP + \(bu + Textured XVideo acceleration including anti-tearing support (Bicubic filtering +-only available on R/RV3xx, R/RV/RS4xx, R/RV5xx, and RS6xx); ++only available on R/RV3xx, R/RV/RS4xx, R/RV5xx, and RS6xx/RS740); + .TP + \(bu + Overlay XVideo acceleration (only on R/RV/RS1xx, R/RV/RS2xx, + R/RV/RS3xx, R/RV/RS4xx); + .TP + \(bu +-3D acceleration (not supported on R/RV6xx and R/RV/RS7xx); ++3D acceleration; + .PD + .SH SUPPORTED HARDWARE + The +-- +cgit v0.8.3-6-g21f6 +From c2892cbd18e0f25401b615055425f727e096b7cd Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Tue, 17 Nov 2009 16:45:09 +0000 +Subject: radeon: fix potential memory leak in ddc code + +Signed-off-by: Alex Deucher <alexdeuc...@gmail.com> +--- +diff --git a/src/radeon_output.c b/src/radeon_output.c +index acba31f..edf59cd 100644 +--- a/src/radeon_output.c ++++ b/src/radeon_output.c +@@ -268,9 +268,11 @@ radeon_ddc_connected(xf86OutputPtr output) + break; + } + +- if (MonType != MT_NONE) ++ if (MonType != MT_NONE) { + if (!xf86ReturnOptValBool(info->Options, OPTION_IGNORE_EDID, FALSE)) + xf86OutputSetEDID(output, MonInfo); ++ } else ++ xfree(MonInfo); + } else + MonType = MT_NONE; + +-- +cgit v0.8.3-6-g21f6 +From ca9c619c9c085fac3bea486cfce1c8b5ba09cd52 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Fri, 30 Oct 2009 21:36:29 +0000 +Subject: radeon: clamp the internal FB map to the aperture size v2 + +We don't use the invisible memory yet and on cards with +large amounts of vram this can cause the top of GART +calculation to overflow. + +Fixes bug fdo bug 24301: +http://bugs.freedesktop.org/show_bug.cgi?id=24301 + +v2: only clamp cards with more than 512 MB. This seems +to cause problems on some older cards due to the way the +drm and ddx set up the internal memory map. +--- +diff --git a/src/radeon_driver.c b/src/radeon_driver.c +index 4e0dcf9..c726f8f 100644 +--- a/src/radeon_driver.c ++++ b/src/radeon_driver.c +@@ -1364,11 +1364,14 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) + + /* don't map the whole FB in the internal address space. + * we don't currently use fb space larger than the aperture +- * size and on cards with 1 GB of vram, this can overflow ++ * size and on cards with more than 512 MB of vram, this can overflow + * the internal top of gart calculation on some systems. ++ * Limit it to cards with more than 512 MB as this causes problems ++ * on some other cards due to the way the ddx and drm set up the ++ * internal memory map. + * See fdo bug 24301. + */ +- if (mem_size > aper_size) ++ if (mem_size > 0x20000000) + mem_size = aper_size; + + #ifdef XF86DRI +-- +cgit v0.8.3-6-g21f6 +From d1d3681748251fb7e95b8d56e6c37847ca6b1a8d Mon Sep 17 00:00:00 2001 +From: Michael Olbrich <m.olbr...@pengutronix.de> +Date: Sun, 20 Sep 2009 12:19:41 +0000 +Subject: use AC_CHECK_HEADER instead of AC_CHECK_FILE + +AC_CHECK_FILE is not possible when cross-compiling. Use AC_CHECK_HEADER / +AC_PREPROC_IFELSE instead. + +[ Michel Dänzer: Shuffled things around slightly to make it work on my setup ] + +Signed-off-by: Michael Olbrich <m.olbr...@pengutronix.de> +Signed-off-by: Michel Dänzer <daen...@vmware.com> +(cherry picked from commit 97a4e747bfac14f34646c55ddf639e8fe22f2f55) +--- +diff --git a/configure.ac b/configure.ac +index f081c67..a19a308 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -88,14 +88,21 @@ sdkdir=$(pkg-config --variable=sdkdir xorg-server) + AC_HEADER_STDC + + if test "$DRI" != no; then +- AC_CHECK_FILE([${sdkdir}/dri.h], +- [have_dri_h="yes"], [have_dri_h="no"]) +- AC_CHECK_FILE([${sdkdir}/sarea.h], +- [have_sarea_h="yes"], [have_sarea_h="no"]) +- AC_CHECK_FILE([${sdkdir}/dristruct.h], +- [have_dristruct_h="yes"], [have_dristruct_h="no"]) +- AC_CHECK_FILE([${sdkdir}/damage.h], +- [have_damage_h="yes"], [have_damage_h="no"]) ++ PKG_CHECK_MODULES(DRI, [libdrm >= 2.2 xf86driproto]) ++ save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS" ++ AC_CHECK_HEADER([dri.h], ++ [have_dri_h="yes"], [have_dri_h="no"],[-]) ++ AC_CHECK_HEADER([sarea.h], ++ [have_sarea_h="yes"], [have_sarea_h="no"],[-]) ++ AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ ++#include <xorg-server.h> ++#include <dristruct.h> ++ ]])], ++ [have_dristruct_h="yes"], [have_dristruct_h="no"],[-]) ++ AC_CHECK_HEADER([damage.h], ++ [have_damage_h="yes"], [have_damage_h="no"],[-]) ++ CPPFLAGS="$save_CPPFLAGS" + fi + + AC_MSG_CHECKING([whether to include DRI support]) +@@ -112,7 +119,6 @@ AC_MSG_RESULT([$DRI]) + + AM_CONDITIONAL(DRI, test x$DRI = xyes) + if test "$DRI" = yes; then +- PKG_CHECK_MODULES(DRI, [libdrm >= 2.2 xf86driproto]) + AC_DEFINE(XF86DRI,1,[Enable DRI driver support]) + AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support]) + if test "$have_damage_h" = yes; then +-- +cgit v0.8.3-6-g21f6 +From e7b26abc3c20fb53bf2cd02404ac5e0654fee18d Mon Sep 17 00:00:00 2001 +From: Matthias Hopf <mh...@suse.de> +Date: Tue, 15 Dec 2009 15:53:48 +0000 +Subject: fix 200M freezes on VT switch if CRTC is disabled + +It appears that RS4xx chips need to have the crtc +enabled when the timing is programmed. + +agd5f: minor fixes/cleanup of the original patch +--- +diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c +index aee3d15..ba3b102 100644 +--- a/src/legacy_crtc.c ++++ b/src/legacy_crtc.c +@@ -912,6 +912,11 @@ RADEONInitCrtcRegisters(xf86CrtcPtr crtc, RADEONSavePtr save, + ? RADEON_CRTC_INTERLACE_EN + : 0)); + ++ /* 200M freezes on VT switch sometimes if CRTC is disabled */ ++ if ((info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) ++ save->crtc_gen_cntl |= RADEON_CRTC_EN; ++ + save->crtc_ext_cntl |= (RADEON_XCRT_CNT_EN| + RADEON_CRTC_VSYNC_DIS | + RADEON_CRTC_HSYNC_DIS | +@@ -1162,6 +1167,11 @@ RADEONInitCrtc2Registers(xf86CrtcPtr crtc, RADEONSavePtr save, + ? RADEON_CRTC2_INTERLACE_EN + : 0)); + ++ /* 200M freezes on VT switch sometimes if CRTC is disabled */ ++ if ((info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) ++ save->crtc2_gen_cntl |= RADEON_CRTC2_EN; ++ + save->disp2_merge_cntl = info->SavedReg->disp2_merge_cntl; + save->disp2_merge_cntl &= ~(RADEON_DISP2_RGB_OFFSET_EN); + +-- +cgit v0.8.3-6-g21f6 +From eab41805c0e6cc6deb7eca9342457b690834d7d2 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexdeuc...@gmail.com> +Date: Thu, 05 Nov 2009 15:23:03 +0000 +Subject: EXA: fallback if no pMaskPicture->pDrawable + +A solid or gradient mask could be used for blending +the source picture onto the destination picture. + +Fixes fdo bug 24838 + +Signed-off-by: Alex Deucher <alexdeuc...@gmail.com> +--- +diff --git a/src/r600_exa.c b/src/r600_exa.c +index bee8f09..9aeb862 100644 +--- a/src/r600_exa.c ++++ b/src/r600_exa.c +@@ -1337,7 +1337,12 @@ static Bool R600CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + } + + if (pMaskPicture) { +- PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ PixmapPtr pMaskPixmap; ++ ++ if (!pMaskPicture->pDrawable) ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + + if (pMaskPixmap->drawable.width >= max_tex_w || + pMaskPixmap->drawable.height >= max_tex_h) { +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index 8e98b9f..660ec43 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -503,7 +503,12 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, + } + + if (pMaskPicture) { +- PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ PixmapPtr pMaskPixmap; ++ ++ if (!pMaskPicture->pDrawable) ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + + if (pMaskPixmap->drawable.width > 2047 || + pMaskPixmap->drawable.height > 2047) { +@@ -833,7 +838,12 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + } + + if (pMaskPicture) { +- PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ PixmapPtr pMaskPixmap; ++ ++ if (!pMaskPicture->pDrawable) ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + + if (pMaskPixmap->drawable.width > 2047 || + pMaskPixmap->drawable.height > 2047) { +@@ -1213,7 +1223,12 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + } + + if (pMaskPicture) { +- PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ PixmapPtr pMaskPixmap; ++ ++ if (!pMaskPicture->pDrawable) ++ RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + + if (pMaskPixmap->drawable.width > max_tex_w || + pMaskPixmap->drawable.height > max_tex_h) { +-- +cgit v0.8.3-6-g21f6 +From ecc192e2e5d72090bb35b142c6dc4639ec2542f0 Mon Sep 17 00:00:00 2001 +From: Dave Airlie <airl...@linux.ie> +Date: Fri, 25 Sep 2009 20:03:51 +0000 +Subject: radeon: fix zaphod + +--- +diff --git a/src/radeon_driver.c b/src/radeon_driver.c +index 551cb7f..800397c 100644 +--- a/src/radeon_driver.c ++++ b/src/radeon_driver.c +@@ -3727,6 +3727,8 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + memset(info->FB + pScrn->fbOffset, 0, + pScrn->virtualY * pScrn->displayWidth * info->CurrentLayout.pixel_bytes); + ++ pScrn->pScreen = pScreen; ++ + /* set the modes with desired rotation, etc. */ + if (!xf86SetDesiredModes (pScrn)) + return FALSE; +-- +cgit v0.8.3-6-g21f6