ChangeLog | 526 +++++++++++++++++++++++++++ configure.ac | 3 debian/changelog | 6 man/radeon.man | 120 ++++-- src/AtomBios/CD_Operations.c | 8 src/AtomBios/includes/atombios.h | 11 src/Makefile.am | 4 src/ati_pciids_gen.h | 29 + src/atombios_crtc.c | 14 src/atombios_output.c | 439 +++++++++++++--------- src/legacy_crtc.c | 44 +- src/legacy_output.c | 17 src/pcidb/ati_pciids.csv | 43 +- src/radeon.h | 56 ++ src/radeon_accel.c | 5 src/radeon_atombios.c | 224 +++++++---- src/radeon_atombios.h | 6 src/radeon_bios.c | 19 src/radeon_chipinfo_gen.h | 29 + src/radeon_chipset_gen.h | 43 +- src/radeon_commonfuncs.c | 123 +++--- src/radeon_crtc.c | 51 ++ src/radeon_dri.c | 6 src/radeon_driver.c | 7 src/radeon_drm.h | 26 - src/radeon_exa.c | 61 +-- src/radeon_exa_funcs.c | 15 src/radeon_exa_render.c | 174 +++++--- src/radeon_modes.c | 65 +++ src/radeon_output.c | 68 ++- src/radeon_pci_chipset_gen.h | 29 + src/radeon_pci_device_match_gen.h | 29 + src/radeon_probe.c | 2 src/radeon_probe.h | 8 src/radeon_reg.h | 222 ++++++----- src/radeon_textured_video.c | 75 +++ src/radeon_textured_videofuncs.c | 735 ++++++++++++++++++++++++++++++-------- src/radeon_video.c | 32 + src/radeon_video.h | 10 39 files changed, 2593 insertions(+), 791 deletions(-)
New commits: commit c3a9a3cd50e03bd06f4a34c4a82c6e90275724ac Author: Brice Goglin <bgog...@debian.org> Date: Tue Dec 23 08:01:27 2008 +0100 Prepare changelog for upload diff --git a/debian/changelog b/debian/changelog index 6914753..8c5c53b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -xserver-xorg-video-ati (1:6.9.0.91-1) UNRELEASED; urgency=low +xserver-xorg-video-ati (1:6.9.0.91-1) experimental; urgency=low * New upstream release candidate. - -- Brice Goglin <bgog...@debian.org> Tue, 23 Dec 2008 07:51:52 +0100 + -- Brice Goglin <bgog...@debian.org> Tue, 23 Dec 2008 08:01:02 +0100 xserver-xorg-video-ati (1:6.9.0+git20081129.783cdb73-1) experimental; urgency=low commit 87a8a228792de30b32f7a737e3c70b1d22bf2a6d Author: Brice Goglin <bgog...@debian.org> Date: Tue Dec 23 07:59:36 2008 +0100 New upstream release candidate diff --git a/ChangeLog b/ChangeLog index 4c4427d..c317d7d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,529 @@ +commit 631123d144d088d4f77a0599c34deaa31d551d71 +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 23 10:08:46 2008 +1000 + + radeon: update to 6.9.0.91 + + do a prerelease for end of year. + +commit 047f7603174f6047090f4fafbe6488d697eb78bc +Author: Dave Airlie <airl...@linux.ie> +Date: Tue Dec 23 08:16:25 2008 +1000 + + radeon: pass distcheck + +commit c0c33dab44e6966b1702d4e8cfba3537fc6e2d5c +Author: Patrick Haller <patrick.hal...@haller-consult.com> +Date: Mon Dec 22 03:06:23 2008 -0500 + + Fix off by one in EXA composite limit checking + + Patch from Patrick, with some updates from me: + - fix r200 limits + - note about r100 limits + +commit d01a609a2b07da4ca0f182e79459432584ec61f6 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Dec 22 02:18:43 2008 -0500 + + R3xx-R5xx: better fix for xv primitive tearing issues + + R5xx: always use single clipped triangle + R3xx/R4xx: use single clipped triangle up to guardband limit, + then use quad. + +commit 4d009d14c9c72f6e1bc8100ec8d9b8037ee4e514 +Merge: d52882d... 4e96278... +Author: Dave Airlie <airl...@redhat.com> +Date: Mon Dec 22 16:00:01 2008 +1000 + + Merge branch 'atom-tvout' + +commit 4e96278b581e296c1203d97a6d7aa3bff3977222 +Author: Dave Airlie <airl...@redhat.com> +Date: Mon Dec 22 15:58:35 2008 +1000 + + atombios/tv: add an option to enable atom tv-out for users. + + This code is still experimental but we will allow users to enable it for experimental reasons + +commit d52882d8188830dd52fa112dadcf5ea7f3e5fd5e +Author: Dave Airlie <airl...@redhat.com> +Date: Mon Dec 22 09:27:47 2008 +1000 + + radeon: setup 3D engine even when no DRI. + + This should fix some missing font issues in EXA without DRI cases. + +commit 2346fd7cbd90dcdce2b361d374a53da064fa6a12 +Author: Dave Airlie <airl...@redhat.com> +Date: Thu Dec 18 16:35:13 2008 +1000 + + radeon: add all new pci ids for rv730/rv710 families + +commit b2b43905a5385a8bb0b59b8e50952863d8dacb59 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 17 00:59:52 2008 -0500 + + Pre-avivo: fix FP setup + + - make sure to clear various shadow timing bits + - crtc1 select bit was set wrong. + - should fix bugs like 19100 + +commit 3754cc23abac99880eda87d06aa42e16081b6c8a +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 17 00:56:19 2008 -0500 + + R2xx: switch EXA composite to rects rather quads + + For conistency with Xv path and to reduce potential diagonal tearing + +commit 435d996949185201a97493e131f9920a32863acd +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:50:48 2008 +1000 + + radeon: tv timings have crev/frev wrong way around for some reason. + +commit b9549e89cbdf8fff4aa7bd9f3adfb7d5732508cc +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:40:53 2008 +1000 + + atombios: re-enable TV dpms + +commit db85ff2e0c52a030546c0cc8ed0b851418f3e045 +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:37:17 2008 +1000 + + atom/r600: re-enable TV outputs + +commit ff7b52c9a48f2e417acf6bec3b72546ad9b33471 +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:36:38 2008 +1000 + + radeon: use latest atombios constants for TV encoders in set_crtc_source + +commit 1e0c7d3f0bf6be67b976fdea8fa2df0b4b16435f +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:35:06 2008 +1000 + + atom: spc3 only requires ucEncoderMode for DIG outputs + +commit 105cfd0b8696347ef71ad9daa941abb308bd6c2c +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:31:15 2008 +1000 + + atom/tv: enable scaler can set the TV output scaler up. + + Add the tv standard to the scaler enable for TV use. + +commit 2a768abbd2f18abe203571213260bccc225f70fd +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:29:07 2008 +1000 + + atom/tv: fixup the tv out default if bios doesn't specify + +commit b7fdd5da08bfec705691363b8890699c794dce53 +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 17 11:24:56 2008 +1000 + + atombios: fixup parsing of TV tables on r500 and r600 cards. + + The TV tables changed between for later cards. + +commit e3b08cb59716b525b3063b184eab70e32b9d66f0 +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 16 15:43:16 2008 +1000 + + atombios: correct fix for previous issue. + + I committed an old patch. + +commit 1431bc6900b0e0d7f486b5b3ba281873472b3fdc +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 16 15:31:34 2008 +1000 + + atombios: fix issue with Clearing of MM_INDEX 0. + + While playing with tv-out I discovered this issue with clearing + the MM_INDEX register. + +commit f72367aff2d09161d30066a00673ba291b292a36 +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 16 12:32:24 2008 +1000 + + radeon: add initial rv730 pciids. + + Lots more to come, this just adds a few to start. + +commit 4d2429f3ec4d7d3e1512b268c7ff5cbff8d186b4 +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 16 12:19:00 2008 +1000 + + DCE32: add support for DCE3.2 digital outputs. + + This adds support for the digital outputs on the RV730. + +commit 4d3792fd1b9f733107582436540f483d8993199f +Author: Dave Airlie <airl...@redhat.com> +Date: Fri Dec 12 10:34:57 2008 +1000 + + radeon: fixes from Alex for some output engines + (cherry picked from commit 1e8ac6ea7b35ccbc3649c96ead60f69158f66ebc) + +commit f892154dbd0d8b6dd8abdf2196ab0c7c18327412 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Dec 15 19:41:32 2008 -0500 + + R3xx-R5xx: switch back to quad rendering for Xv + + The large clipped triangle trick hits the guardband limits on + large displays. This gets textured video working again + until we sort out how to deal with the situation better. + + See bug 19046 + +commit 62344e460f5d0cac81f94c535cda77d3d76528a9 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Dec 15 11:30:42 2008 -0500 + + Remove remnants of unused DDCMode option + +commit f1efee6a11dc9436276fb12cfb90aa79ada1192b +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Dec 15 11:27:17 2008 -0500 + + Remove mention of MergedFB from server log + + noticed by Fabio, bug 19098 + +commit 94bffac6968057cdedc792f8540fe44cb6ecfd7c +Author: Fabio <fabio....@libero.it> +Date: Mon Dec 15 11:22:56 2008 -0500 + + man page updates + + from bug 19098 with some minor fixes from me + +commit c7899905ec824071f9cabbd1e271c4d76010b733 +Author: Fabio <fabio....@libero.it> +Date: Mon Dec 15 10:58:23 2008 -0500 + + Remove duplicate ATI in some device names + + from bug 19098 + +commit 89a8fd5337c77abf1f3166e69ed061d85b5c20f0 +Author: Dave Airlie <airl...@redhat.com> +Date: Mon Dec 15 14:41:10 2008 +1000 + + r600: don't idle engine + (cherry picked from commit b77729448e487d37707ce028d8edc59352d1cc2d) + +commit 4ce255a9db8027f2471ba50e57724d3e4d5b16ba +Author: Fabio <fabio....@libero.it> +Date: Fri Dec 12 09:53:33 2008 -0500 + + Fix formatting in man page + + fixes bug 19039 + +commit 0e99017cb9a6d46b891705df73678c2705439532 +Author: Joseph Adams <joeyadams3.14...@gmail.com> +Date: Thu Dec 11 00:57:03 2008 -0500 + + Add more eMac modes, fix crash in last patch + +commit fb46c30d316ab3ec54c54f3aec91d5164070a423 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 10 17:16:56 2008 -0500 + + Add support for Apple eMacs + + Thanks to Joseph Adams for helping me sort this out. + Verified on eMac G4/1.0 with radeon 7500 + Later eMacs with radeon 9200 or 9600 chips may have + different ddc setups. Need to verify. + +commit c0bcea9150ef215fa614733cef9a5b71a55a33bd +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 10 11:40:47 2008 -0500 + + Add another AGP quirk + + fixes bug 12544 + +commit 607b02d6abf78147902a5944bd006897ad95e982 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 10 03:54:35 2008 -0500 + + Add randr 1.3 panning support + +commit 24007acbf36bcfd09cb5e74ce4a8d918d393cf34 +Author: Benjamin Close <benjamin.cl...@clearchain.com> +Date: Wed Dec 10 02:17:56 2008 -0500 + + [PATCH] xf86misc extension has been removed, update driver to reflect it + +commit 69e445f7f2ebd299070e44457b434bbc28b7e05c +Author: Dave Airlie <airl...@linux.ie> +Date: Tue Dec 9 18:59:11 2008 +1000 + + radeon: memset the pll setting function + + Thanks to Peter Zijlstra for making me debug this and providing + feedback. + +commit c72b732a2f5597cd72bd4ebe207799ae07f2681e +Author: Adrian Friedli <a...@koalatux.ch> +Date: Mon Dec 8 10:42:46 2008 -0500 + + Add another AGP quirk + +commit 979ad04d901676cb41aea5cf47a8a2e9c19064dd +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Fri Dec 5 17:53:57 2008 -0500 + + Add missing .TP in man page + +commit b89d434011787fb71593395f462d142375783e35 +Author: Pierre Ossman <pie...@ossman.eu> +Date: Fri Dec 5 17:52:02 2008 -0500 + + Fix scissor setup for Xv + + We need to adjust the scissoring for each clip box, so move the setup + to inside the while loop. + +commit 83c1115333cbe763f86422fa5aabf4ab21951e68 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Fri Dec 5 11:52:18 2008 -0500 + + R200: Remove scissor setup from init3d() + + We aren't using them, so no need to set them up. + +commit 7593d5399cdb2f42ecbcb5193580385b286a9db9 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Fri Dec 5 11:18:15 2008 -0500 + + set coherent mode consistently (enabled for now) + + It's set to enabled in the output setup, but then was set to + disabled when teh output properties were setup. Set it up + consistently. + +commit ad2579f8898251105a6b36b745afd1ce1dab103e +Author: Dave Airlie <airl...@linux.ie> +Date: Fri Dec 5 20:03:53 2008 +1000 + + radeon: damn you bios, HDMI cannot have DACs. + +commit bae30856f2cb3884387ef347327af6ff00b75854 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Fri Dec 5 08:15:59 2008 +0100 + + Make VSync for EXA and Xv configurable + +commit 33638d9e388b330e2f4eb4debd05ba09924cf176 +Author: Pierre Ossman <pie...@ossman.eu> +Date: Thu Dec 4 23:29:31 2008 +0100 + + Optimise RADEONWaitForVLine + + Only avoid the vlines we are rendering to, instead of the entire + screen. This way we don't stall the card for longer than we + absolutely have to. + + EXA calls fixed by Alex Deucher. + +commit d1690f5cc096e2f735c8b407c370a1c1cd7a8afc +Author: Pierre Ossman <pie...@ossman.eu> +Date: Wed Dec 3 21:49:37 2008 +0100 + + Improve tearing avoidance for Xvideo in two steps + + - Fix up VLINE handling to trigger whenever scanout is outside the + visible area. + + - Render the video as a scissored triangle as R300+ cannot render a + quad in a single pass. + +commit 4d98acbca2e630056bf56cdcd0e23007fded2ced +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Jul 16 03:14:06 2008 -0400 + + First pass at tear-free accel + + if the dest pixmap is the front buffer, stall the pipe + until the vline is outside the active area. + For EXA, pick crtc based on the larger mode area; + ideally we'd have one pixmap per crtc. + For Xv, use dst window area to determine crtc. + +commit 82d67b70d0fb747cf7b1eb0b64244ae56cb84572 +Author: Pierre Ossman <pie...@ossman.eu> +Date: Thu Dec 4 15:38:13 2008 -0500 + + Switch r200 Xv to use rect lists rather than quads to avoid tearing + + Patch from Pierre with fixes from me. + +commit 9eccd0ad0827a1b8ec9abb2cebf5768d204a5ce9 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Thu Dec 4 12:28:12 2008 -0500 + + Fix up US setup after r3xx bicubic merge + +commit e13fba853ba19e6b0f081b9b3d9fa76c38a0f82b +Merge: d296337... 79bbdd9... +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Thu Dec 4 12:25:29 2008 -0500 + + Merge branch 'bicubic' of git://git.infradead.org/users/drzeus/xf86-video-ati + +commit d29633708b5451f5541e88371d831ae03019a7f5 +Author: Dave Airlie <airl...@redhat.com> +Date: Thu Dec 4 09:08:48 2008 +1000 + + radeon: apply atom quirks to object table + +commit 941ac0d3ab839dc5aaaef2f3b7f5c7085b2894c5 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 3 17:31:25 2008 -0500 + + Make sure 3D state is emited when switching to 3D IB + + - fixes bug 18864 + +commit 79bbdd984c925e37f5b3db2605339f1a21377fcf +Author: Pierre Ossman <pie...@ossman.eu> +Date: Wed Dec 3 20:33:36 2008 +0100 + + Change the XV_BICUBIC attribute to a tristate, where the third state + automatically turns the filter on and off as appropriate. + +commit bbdf821c179242266fd86edf9e688a6be9cf985f +Author: Pierre Ossman <pie...@ossman.eu> +Date: Wed Dec 3 19:42:50 2008 +0100 + + Make the R300 bicubic shader program a bit easier to understand by + having comments that describe the operation, not how it has to be + implemented in the hardware. + +commit 8f4b22932c91f1d51fcbf1d1a99d852fcdaafdcc +Author: Pierre Ossman <pie...@ossman.eu> +Date: Wed Dec 3 19:31:31 2008 +0100 + + Now that we have a bicubic code path that messes up the pixel shader, + we need to restore it in the non-bicubic code. + +commit 0851daa6e7db77e440188d774ef8b3236146bcb9 +Author: Pierre Ossman <pie...@ossman.eu> +Date: Wed Dec 3 19:17:36 2008 +0100 + + Fix macros so that they are safe to use with expressions as parameters. + +commit e04bcb0066781f61e97787856261e3380036d304 +Author: Pierre Ossman <pie...@ossman.eu> +Date: Wed Dec 3 19:16:03 2008 +0100 + + Fix node setup on R300 bicubic pixel shader. It was backwards and used + the wrong base for sizes. + +commit 927aee181f3637bda1b761caf93fbc0652e1207b +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Wed Dec 3 01:39:38 2008 -0500 + + Only flush IB when direct rendering is enabled + +commit ca74ebf8813b7fab8d08465ef9600f001c948e94 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Tue Dec 2 22:26:21 2008 -0500 + + move 3d state init after RADEON_SWITCH_TO_3D() + +commit fc079c5267baf431bbecee7744e484783d393152 +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 2 22:11:57 2008 -0500 + + Don't mix 2D and 3D in the same IB + + fix from radeon-gem-cs + +commit 678693aabd0b4c1812ab44bf5abb4c8394b254bb +Author: Dave Airlie <airl...@redhat.com> +Date: Tue Dec 2 22:02:21 2008 -0500 + + Stability fixes from radeon-gem-cs + +commit f231e4d9b2c683dc16f42cf09484fae926a892c1 +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Dec 3 11:39:04 2008 +1000 + + radeon: fix HDMI having DACs in some BIOSes + +commit fe73d9a7dfe8ec5c8f1a8dc08e14b4e138aa9276 +Author: Bryce Harrington <br...@canonical.com> +Date: Tue Dec 2 19:47:45 2008 -0500 + + Add another AGP quirk + +commit 6e0c48958c6a50a639368e369ce72d813256aee4 +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Dec 1 18:50:40 2008 -0500 + + Add quirk for r200 card with the primary dac wired to both ports + + refactor load detection setup as a byproduct + should fix bug 18719 + +commit fa496d7b0397d9be57db90d0860928e9ced73cca +Author: Pierre Ossman <pie...@ossman.eu> +Date: Mon Dec 1 08:29:29 2008 +0100 + + Fix comments for R500 fragment shader to reflect the code. + +commit 0d95fca114194664d9ab612c90d3222912cf41ff +Author: Corbin Simpson <mostawesomed...@gmail.com> +Date: Sat Aug 30 12:38:43 2008 -0700 + + Fix indentation on IS_R300_3D Xv code. + +commit 36a62b8c47def3f23a0b735875f59d23ed3c095a +Author: Corbin Simpson <mostawesomed...@gmail.com> +Date: Sat Aug 30 11:15:20 2008 -0700 + + r3xx: Various Xv fixes. + +commit 01ed5462fad56f5b7bf867041d00443bdf81c653 +Author: Corbin Simpson <mostawesomed...@gmail.com> +Date: Thu Aug 7 18:08:54 2008 -0700 + + Switch to Mesa-style 24-bit float packing. + Seems like Mesa's got it right, so we should follow suit. + +commit 85bbe889045aa434f71a3eb0ba8153b7d2cc5023 +Author: Maciej Cencora <m.cenc...@gmail.com> +Date: Thu Aug 7 07:06:46 2008 -0700 + + Enable bicubic Xv on r3xx+. Still some buggies in the actual display, but looks pretty good. + +commit bf6263cff50bb85c19ff6dfebb739333fa8aca18 +Author: Maciej Cencora <m.cenc...@gmail.com> +Date: Thu Aug 7 07:00:36 2008 -0700 + + Add r3xx-specific bicubic filtering code. FP, RS, mostly, everything else is shared with r5xx. + +commit da021c36bbdf3bca31ee50ebe01cdb9495c09b36 +Author: Dave Airlie <airl...@linux.ie> +Date: Sun Nov 30 18:44:24 2008 +1000 + + radeon_drm.h: remove kernel defines + + remove these we should update from an installed kernel copy not from the + original kernel copy. + commit 783cdb7374941bb1d2b63eea375fbf2f1b808cc3 Author: Dave Airlie <airl...@redhat.com> Date: Thu Nov 27 15:29:06 2008 +1000 diff --git a/debian/changelog b/debian/changelog index 7c77737..6914753 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xserver-xorg-video-ati (1:6.9.0.91-1) UNRELEASED; urgency=low + + * New upstream release candidate. + + -- Brice Goglin <bgog...@debian.org> Tue, 23 Dec 2008 07:51:52 +0100 + xserver-xorg-video-ati (1:6.9.0+git20081129.783cdb73-1) experimental; urgency=low * Pull upstream snapshot, up to commit 783cdb73. commit 631123d144d088d4f77a0599c34deaa31d551d71 Author: Dave Airlie <airl...@redhat.com> Date: Tue Dec 23 10:08:46 2008 +1000 radeon: update to 6.9.0.91 do a prerelease for end of year. diff --git a/configure.ac b/configure.ac index 5ffe0d9..4b9c6b1 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-video-ati], - 6.9.0, + 6.9.0.91, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-video-ati) commit 047f7603174f6047090f4fafbe6488d697eb78bc Author: Dave Airlie <airl...@linux.ie> Date: Tue Dec 23 08:16:25 2008 +1000 radeon: pass distcheck diff --git a/src/Makefile.am b/src/Makefile.am index d65a3e4..a13bfad 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -130,18 +130,16 @@ EXTRA_DIST = \ radeon_textured_videofuncs.c \ ati.h \ ativersion.h \ + bicubic_table.h \ generic_bus.h \ - radeon_common.h \ radeon_commonfuncs.c \ radeon_dri.h \ - radeon_dripriv.h \ radeon_exa_render.c \ radeon_exa_funcs.c \ radeon.h \ radeon_macros.h \ radeon_probe.h \ radeon_reg.h \ - radeon_sarea.h \ radeon_version.h \ radeon_video.h \ radeon_tv.h \ commit c0c33dab44e6966b1702d4e8cfba3537fc6e2d5c Author: Patrick Haller <patrick.hal...@haller-consult.com> Date: Mon Dec 22 03:06:23 2008 -0500 Fix off by one in EXA composite limit checking Patch from Patrick, with some updates from me: - fix r200 limits - note about r100 limits diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index 55e55be..c285109 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -320,7 +320,11 @@ static Bool R100CheckCompositeTexture(PicturePtr pPict, int unit) int h = pPict->pDrawable->height; int i; - if ((w > 0x7ff) || (h > 0x7ff)) + /* r100 limit should be 2048, there are issues with 2048 + * see 197a62704742a4a19736c2637ac92d1dc5ab34ed + */ + + if ((w > 2047) || (h > 2047)) RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); for (i = 0; i < sizeof(R100TexFormats) / sizeof(R100TexFormats[0]); i++) { @@ -456,10 +460,14 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, if (!pSrcPicture->pDrawable) return FALSE; + /* r100 limit should be 2048, there are issues with 2048 + * see 197a62704742a4a19736c2637ac92d1dc5ab34ed + */ + pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); - if (pSrcPixmap->drawable.width >= 2048 || - pSrcPixmap->drawable.height >= 2048) { + if (pSrcPixmap->drawable.width > 2047 || + pSrcPixmap->drawable.height > 2047) { RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", pSrcPixmap->drawable.width, pSrcPixmap->drawable.height)); @@ -467,8 +475,8 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); - if (pDstPixmap->drawable.width >= 2048 || - pDstPixmap->drawable.height >= 2048) { + if (pDstPixmap->drawable.width > 2047 || + pDstPixmap->drawable.height > 2047) { RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", pDstPixmap->drawable.width, pDstPixmap->drawable.height)); @@ -477,8 +485,8 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, if (pMaskPicture) { PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); - if (pMaskPixmap->drawable.width >= 2048 || - pMaskPixmap->drawable.height >= 2048) { + if (pMaskPixmap->drawable.width > 2047 || + pMaskPixmap->drawable.height > 2047) { RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", pMaskPixmap->drawable.width, pMaskPixmap->drawable.height)); @@ -531,7 +539,7 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, return FALSE; if (pDstPicture->format == PICT_a8 && RadeonBlendOp[op].dst_alpha) - RADEON_FALLBACK("Can't dst alpha blend A8\n"); + RADEON_FALLBACK("Can't dst alpha blend A8\n"); if (pMask) info->accel_state->has_mask = TRUE; @@ -635,7 +643,7 @@ static Bool R200CheckCompositeTexture(PicturePtr pPict, int unit) int h = pPict->pDrawable->height; int i; - if ((w > 0x7ff) || (h > 0x7ff)) + if ((w > 2048) || (h > 2048)) RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); for (i = 0; i < sizeof(R200TexFormats) / sizeof(R200TexFormats[0]); i++) @@ -762,8 +770,8 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); - if (pSrcPixmap->drawable.width >= 2048 || - pSrcPixmap->drawable.height >= 2048) { + if (pSrcPixmap->drawable.width > 2048 || + pSrcPixmap->drawable.height > 2048) { RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", pSrcPixmap->drawable.width, pSrcPixmap->drawable.height)); @@ -771,8 +779,8 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); - if (pDstPixmap->drawable.width >= 2048 || - pDstPixmap->drawable.height >= 2048) { + if (pDstPixmap->drawable.width > 2048 || + pDstPixmap->drawable.height > 2048) { RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", pDstPixmap->drawable.width, pDstPixmap->drawable.height)); @@ -781,8 +789,8 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP if (pMaskPicture) { PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); - if (pMaskPixmap->drawable.width >= 2048 || - pMaskPixmap->drawable.height >= 2048) { + if (pMaskPixmap->drawable.width > 2048 || + pMaskPixmap->drawable.height > 2048) { RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", pMaskPixmap->drawable.width, pMaskPixmap->drawable.height)); @@ -831,7 +839,7 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, return FALSE; if (pDstPicture->format == PICT_a8 && RadeonBlendOp[op].dst_alpha) - RADEON_FALLBACK("Can't dst alpha blend A8\n"); + RADEON_FALLBACK("Can't dst alpha blend A8\n"); if (pMask) info->accel_state->has_mask = TRUE; @@ -1054,7 +1062,7 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP); else txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL); - + txfilter |= (unit << R300_TX_ID_SHIFT); switch (pPict->filter) { @@ -1121,8 +1129,8 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP max_dst_h = 2560; } - if (pSrcPixmap->drawable.width >= max_tex_w || - pSrcPixmap->drawable.height >= max_tex_h) { + if (pSrcPixmap->drawable.width > max_tex_w || + pSrcPixmap->drawable.height > max_tex_h) { RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", pSrcPixmap->drawable.width, pSrcPixmap->drawable.height)); @@ -1130,8 +1138,8 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); - if (pDstPixmap->drawable.width >= max_dst_w || - pDstPixmap->drawable.height >= max_dst_h) { + if (pDstPixmap->drawable.width > max_dst_w || + pDstPixmap->drawable.height > max_dst_h) { RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", pDstPixmap->drawable.width, pDstPixmap->drawable.height)); @@ -1140,8 +1148,8 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP if (pMaskPicture) { PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); - if (pMaskPixmap->drawable.width >= max_tex_w || - pMaskPixmap->drawable.height >= max_tex_h) { + if (pMaskPixmap->drawable.width > max_tex_w || + pMaskPixmap->drawable.height > max_tex_h) { RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", pMaskPixmap->drawable.width, pMaskPixmap->drawable.height)); commit d01a609a2b07da4ca0f182e79459432584ec61f6 Author: Alex Deucher <alexdeuc...@gmail.com> Date: Mon Dec 22 02:18:43 2008 -0500 R3xx-R5xx: better fix for xv primitive tearing issues R5xx: always use single clipped triangle R3xx/R4xx: use single clipped triangle up to guardband limit, then use quad. diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c index 410430c..2fe852d 100644 --- a/src/radeon_textured_videofuncs.c +++ b/src/radeon_textured_videofuncs.c @@ -1486,16 +1486,30 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv pPriv->drw_y + pPriv->dst_h, pPriv->vsync); - BEGIN_ACCEL(2); - OUT_ACCEL_REG(R300_SC_SCISSOR0, ((0 << R300_SCISSOR_X_SHIFT) | - (0 << R300_SCISSOR_Y_SHIFT))); - OUT_ACCEL_REG(R300_SC_SCISSOR1, ((8191 << R300_SCISSOR_X_SHIFT) | - (8191 << R300_SCISSOR_Y_SHIFT))); - FINISH_ACCEL(); + /* + * Rendering of the actual polygon is done in two different + * ways depending on chip generation: + * + * < R300: + * + * These chips can render a rectangle in one pass, so + * handling is pretty straight-forward. + * + * >= R300: + * + * These chips can accept a quad, but will render it as + * two triangles which results in a diagonal tear. Instead + * We render a single, large triangle and use the scissor + * functionality to restrict it to the desired rectangle. + * Due to guardband limits on r3xx/r4xx, we can only use + * the single triangle up to 2880 pixels; above that we + * render as a quad. + */ while (nBox--) { int srcX, srcY, srcw, srch; int dstX, dstY, dstw, dsth; + Bool use_quad = FALSE; dstX = pBox->x1 + dstxoff; dstY = pBox->y1 + dstyoff; dstw = pBox->x2 - pBox->x1; @@ -1514,6 +1528,28 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv ErrorF("src: %d, %d, %d, %d\n", srcX, srcY, srcw, srch); #endif + if (IS_R300_3D || IS_R500_3D) { + if (IS_R300_3D && ((dstw > 1440) || (dsth > 1440))) + use_quad = TRUE; + /* + * Set up the scissor area to that of the output size. + */ + BEGIN_ACCEL(2); + if (IS_R300_3D) { + /* R300 has an offset */ + OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX + 1088) << R300_SCISSOR_X_SHIFT) | + ((dstY + 1088) << R300_SCISSOR_Y_SHIFT))); + OUT_ACCEL_REG(R300_SC_SCISSOR1, (((dstX + dstw + 1088 - 1) << R300_SCISSOR_X_SHIFT) | + ((dstY + dsth + 1088 - 1) << R300_SCISSOR_Y_SHIFT))); + } else { + OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX) << R300_SCISSOR_X_SHIFT) | + ((dstY) << R300_SCISSOR_Y_SHIFT))); + OUT_ACCEL_REG(R300_SC_SCISSOR1, (((dstX + dstw - 1) << R300_SCISSOR_X_SHIFT) | + ((dstY + dsth - 1) << R300_SCISSOR_Y_SHIFT))); + } + FINISH_ACCEL(); + } + #ifdef ACCEL_CP if (info->ChipFamily < CHIP_FAMILY_R200) { BEGIN_RING(3 * vtx_count + 3); @@ -1527,12 +1563,21 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); } else if (IS_R300_3D || IS_R500_3D) { - BEGIN_RING(4 * vtx_count + 4); - OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, - 4 * vtx_count)); - OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | - RADEON_CP_VC_CNTL_PRIM_WALK_RING | - (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + if (use_quad) { + BEGIN_RING(4 * vtx_count + 4); + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, + 4 * vtx_count)); + OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } else { + BEGIN_RING(3 * vtx_count + 4); + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, + 3 * vtx_count)); + OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } } else { BEGIN_RING(3 * vtx_count + 2); OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, @@ -1542,9 +1587,12 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); } #else /* ACCEL_CP */ - if (IS_R300_3D || IS_R500_3D) - BEGIN_ACCEL(2 + vtx_count * 4); - else + if (IS_R300_3D || IS_R500_3D) { + if (use_quad) + BEGIN_ACCEL(2 + vtx_count * 4); + else + BEGIN_ACCEL(2 + vtx_count * 3); + } else BEGIN_ACCEL(1 + vtx_count * 3); if (info->ChipFamily < CHIP_FAMILY_R200) @@ -1552,11 +1600,16 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv RADEON_VF_PRIM_WALK_DATA | RADEON_VF_RADEON_MODE | (3 << RADEON_VF_NUM_VERTICES_SHIFT))); - else if (IS_R300_3D || IS_R500_3D) - OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | - RADEON_VF_PRIM_WALK_DATA | - (4 << RADEON_VF_NUM_VERTICES_SHIFT))); - else + else if (IS_R300_3D || IS_R500_3D) { + if (use_quad) + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | + RADEON_VF_PRIM_WALK_DATA | + (4 << RADEON_VF_NUM_VERTICES_SHIFT))); + else + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_LIST | + RADEON_VF_PRIM_WALK_DATA | + (3 << RADEON_VF_NUM_VERTICES_SHIFT))); + } else OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST | RADEON_VF_PRIM_WALK_DATA | (3 << RADEON_VF_NUM_VERTICES_SHIFT))); @@ -1567,6 +1620,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv * This code is only executed on >= R300, so we don't * have to deal with the legacy handling. */ + if (use_quad) { VTX_OUT_FILTER((float)dstX, (float)dstY, (float)srcX / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0], (float)srcX + 0.5, (float)srcY + 0.5); @@ -1579,27 +1633,52 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv VTX_OUT_FILTER((float)(dstX + dstw), (float)dstY, (float)(srcX + srcw) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0], (float)(srcX + srcw) + 0.5, (float)srcY + 0.5); + } else { -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org