pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/x11/xf86-video-radeonhd Update to 1.3.0. Version 1.3.0...
details: https://anonhg.NetBSD.org/pkgsrc/rev/0a98510d0374
branches: trunk
changeset: 566108:0a98510d0374
user: hasso <hasso%pkgsrc.org@localhost>
date: Wed Oct 14 18:50:20 2009 +0000
description:
Update to 1.3.0. Version 1.3.0 improvements:
- Added support for RV740, M92, M93, M97.
- Added support for HDMI audio on RS690 and R700.
- Added support for power management.
- Implemented almost correct analysis of PowerPlay AtomBIOS tables.
- 2D acceleration (EXA) is enabled by default now, except on RV740.
- Backlight handling finally fixed - compatible with xbacklight 1.1.1.
- Overhaul of memory controller setup. Fixes many "MC not idle" issues.
- Overhaul of cursor handling. Fixes most cursor bugs.
- Selectable color space for XVideo on R6xx/R7xx.
- Tons of bug fixes (DDC, EXA, LUT, RandR, AtomBIOS).
- More quirk table entries.
- Shave support (cleaner compilation output).
- All warnings fixed.
- Some start of Developer's documentation in README.coding.
diffstat:
x11/xf86-video-radeonhd/Makefile | 5 +-
x11/xf86-video-radeonhd/distinfo | 9 +-
x11/xf86-video-radeonhd/patches/patch-aa | 360 -------------------------------
3 files changed, 6 insertions(+), 368 deletions(-)
diffs (truncated from 392 to 300 lines):
diff -r 4d27c0c831b5 -r 0a98510d0374 x11/xf86-video-radeonhd/Makefile
--- a/x11/xf86-video-radeonhd/Makefile Wed Oct 14 18:46:58 2009 +0000
+++ b/x11/xf86-video-radeonhd/Makefile Wed Oct 14 18:50:20 2009 +0000
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.14 2009/06/11 07:00:31 hasso Exp $
+# $NetBSD: Makefile,v 1.15 2009/10/14 18:50:20 hasso Exp $
#
-DISTNAME= xf86-video-radeonhd-1.2.5
-PKGREVISION= 2
+DISTNAME= xf86-video-radeonhd-1.3.0
CATEGORIES= x11
MASTER_SITES= ${MASTER_SITE_XORG:=driver/}
EXTRACT_SUFX= .tar.bz2
diff -r 4d27c0c831b5 -r 0a98510d0374 x11/xf86-video-radeonhd/distinfo
--- a/x11/xf86-video-radeonhd/distinfo Wed Oct 14 18:46:58 2009 +0000
+++ b/x11/xf86-video-radeonhd/distinfo Wed Oct 14 18:50:20 2009 +0000
@@ -1,6 +1,5 @@
-$NetBSD: distinfo,v 1.10 2009/06/11 07:00:31 hasso Exp $
+$NetBSD: distinfo,v 1.11 2009/10/14 18:50:20 hasso Exp $
-SHA1 (xf86-video-radeonhd-1.2.5.tar.bz2) = 64fc0eb5209adba5479396bafe53b50ded6c0940
-RMD160 (xf86-video-radeonhd-1.2.5.tar.bz2) = e30a896cd08e82b8a1bbc73e6f0ab862fe564a8a
-Size (xf86-video-radeonhd-1.2.5.tar.bz2) = 751941 bytes
-SHA1 (patch-aa) = de3176186b4780be2ae68b3eeb070f3262f0afcf
+SHA1 (xf86-video-radeonhd-1.3.0.tar.bz2) = 4cdcdbcdc6ec7cd4caa19afdbfc34a8bec461f56
+RMD160 (xf86-video-radeonhd-1.3.0.tar.bz2) = 1f396df814872caf2b58f36929f7b6d1db16959f
+Size (xf86-video-radeonhd-1.3.0.tar.bz2) = 772985 bytes
diff -r 4d27c0c831b5 -r 0a98510d0374 x11/xf86-video-radeonhd/patches/patch-aa
--- a/x11/xf86-video-radeonhd/patches/patch-aa Wed Oct 14 18:46:58 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,360 +0,0 @@
-$NetBSD: patch-aa,v 1.7 2009/06/11 07:00:31 hasso Exp $
-
-Accumulated cursor fixes from upstream repository. Should fix cursor
-corruption issues:
-
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=f668cc06
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=6f378a0d
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=669e0bef
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=4be5f715
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=dd287015
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=08461642
-http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=23d25fe7
-
---- src/rhd_cursor.c.oorig 2009-06-10 22:02:08 +0300
-+++ src/rhd_cursor.c 2009-06-10 22:02:47 +0300
-@@ -62,13 +62,16 @@
- static void
- lockCursor(struct rhdCursor *Cursor, Bool Lock)
- {
-- /* Double Buffering: Set _UPDATE_LOCK bit */
-+ /* Locking disables double buffering of HW cursor registers.
-+ * Set D*CURSOR_UPDATE_LOCK bit to 1 to lock.
-+ * We want *_DISABLE_MULTIPLE_UPDATE to always be 0, and since all other
-+ * meaningful bits are read-only for D*CUR_UPDATE registers, it is safe
-+ * to use RHDRegWrite() instead of RHDRegMask(); the latter is slower.
-+ */
- if (Lock)
-- RHDRegMask(Cursor, Cursor->RegOffset + D1CUR_UPDATE,
-- 0x00010000, 0x00010000);
-+ RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_UPDATE, 0x00010000);
- else
-- RHDRegMask(Cursor, Cursor->RegOffset + D1CUR_UPDATE,
-- 0x00000000, 0x00010000);
-+ RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_UPDATE, 0x00000000);
- }
-
- /* RadeonHD has hardware support for hotspots, but doesn't allow negative
-@@ -89,13 +92,23 @@ setCursorPos(struct rhdCursor *Cursor, C
- }
-
- static void
-+setCursorSize(struct rhdCursor *Cursor, CARD32 width, CARD32 height)
-+{
-+ ASSERT ((width > 0) && (width <= MAX_CURSOR_WIDTH));
-+ ASSERT ((height > 0) && (height <= MAX_CURSOR_HEIGHT));
-+ RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_SIZE,
-+ (width - 1) << 16 | (height - 1));
-+}
-+
-+static void
- enableCursor(struct rhdCursor *Cursor, Bool Enable)
- {
-+ /* Make sure mode stays the same even when disabled; bug #13405 */
- if (Enable)
- /* pre-multiplied ARGB, Enable */
- RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_CONTROL, 0x00000201);
- else
-- RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_CONTROL, 0);
-+ RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_CONTROL, 0x00000200);
- }
-
- /* Activate already uploaded cursor image. */
-@@ -106,10 +119,6 @@ setCursorImage(struct rhdCursor *Cursor)
-
- RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_SURFACE_ADDRESS,
- rhdPtr->FbIntAddress + Cursor->Base);
-- ASSERT ((Cursor->Width > 0) && (Cursor->Width <= MAX_CURSOR_WIDTH));
-- ASSERT ((Cursor->Height > 0) && (Cursor->Height <= MAX_CURSOR_HEIGHT));
-- RHDRegWrite(Cursor, Cursor->RegOffset + D1CUR_SIZE,
-- (Cursor->Width - 1) << 16 | (Cursor->Height - 1));
- }
-
- /* Upload image.
-@@ -121,7 +130,7 @@ uploadCursorImage(struct rhdCursor *Curs
- RHDPtr rhdPtr = RHDPTRI(Cursor);
-
- memcpy(((CARD8 *) rhdPtr->FbBase + Cursor->Base), img,
-- MAX_CURSOR_WIDTH * Cursor->Height * 4);
-+ MAX_CURSOR_WIDTH * MAX_CURSOR_HEIGHT * 4);
- }
-
- static void
-@@ -192,6 +201,8 @@ convertBitsToARGB(struct rhd_Cursor_Bits
- CARD8 *mask = src + srcPitch * bits->height;
- int x, y;
-
-+ memset(dest, 0, MAX_CURSOR_WIDTH * MAX_CURSOR_HEIGHT * 4);
-+
- for (y = 0; y < bits->height; y++) {
- CARD8 *s = src, *m = mask;
- CARD32 *d = dest;
-@@ -210,41 +221,24 @@ convertBitsToARGB(struct rhd_Cursor_Bits
- }
- }
-
--/* Enable/disable cursor according to visibility, and set cursor pos */
--static void
--displayCursor(struct rhdCrtc *Crtc)
-+/*
-+ * Returns if CRTC has a visible cursor
-+ */
-+static Bool
-+hasVisibleCursor(struct rhdCrtc *Crtc)
- {
- struct rhdCursor *Cursor = Crtc->Cursor;
-+ if (Cursor->X >= Crtc->X - MAX_CURSOR_WIDTH &&
-+ Cursor->X < Crtc->X + Crtc->Width &&
-+ Cursor->Y >= Crtc->Y - MAX_CURSOR_HEIGHT &&
-+ Cursor->Y < Crtc->Y + Crtc->Height) {
-
-- /* Hardware doesn't allow negative cursor pos. Use hardware
-- * hotspot support for that. Cannot exceed width, but cursor is
-- * not visible in this case. */
--
-- /* xorg bug#13405: Cursor corruptions
-- * With both CRTC enabled but HW cursor active only on one, the reported
-- * corruption is seen. If HW cursor for both CRTC is forced to stay on, then no
-- * corruption occurs. */
--#if 0
-- if (Cursor->X >= Crtc->X - Cursor->Width &&
-- Cursor->X < Crtc->X + Crtc->Width &&
-- Cursor->Y >= Crtc->Y - Cursor->Height &&
-- Cursor->Y < Crtc->Y + Crtc->Height) {
--#endif
-- int X, Y, HotX, HotY;
--
-- X = Cursor->X >= 0 ? Cursor->X : 0;
-- Y = Cursor->Y >= 0 ? Cursor->Y : 0;
-- HotX = Cursor->X >= 0 ? 0 : -Cursor->X;
-- HotY = Cursor->Y >= 0 ? 0 : -Cursor->Y;
--
-- enableCursor(Cursor, TRUE);
-- setCursorPos(Cursor, X, Y, HotX, HotY);
--#if 0
-+ return TRUE;
- } else
-- enableCursor(Cursor, FALSE);
--#endif
-+ return FALSE;
- }
-
-+
- /*
- * Internal Driver + Xorg Interface
- */
-@@ -258,12 +252,10 @@ rhdShowCursor(ScrnInfoPtr pScrn)
- for (i = 0; i < 2; i++) {
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
-- if (Crtc->Active && Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
-+ if (Crtc->Active && Crtc->scrnIndex == pScrn->scrnIndex
-+ && hasVisibleCursor(Crtc)) {
-
-- lockCursor (Cursor, TRUE);
-- displayCursor(Crtc);
-- lockCursor (Cursor, FALSE);
-+ rhdCrtcShowCursor(Crtc);
- }
- }
- }
-@@ -278,11 +270,7 @@ rhdHideCursor(ScrnInfoPtr pScrn)
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
- if (Crtc->Active && Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
--
-- lockCursor (Cursor, TRUE);
-- enableCursor(Cursor, FALSE);
-- lockCursor (Cursor, FALSE);
-+ rhdCrtcHideCursor(Crtc);
- }
- }
- }
-@@ -339,14 +327,7 @@ rhdReloadCursor(ScrnInfoPtr pScrn)
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
- if (Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
--
-- lockCursor (Cursor, TRUE);
-- uploadCursorImage(Cursor, rhdPtr->CursorImage);
-- setCursorImage (Cursor);
-- if (Crtc->Active)
-- displayCursor(Crtc);
-- lockCursor (Cursor, FALSE);
-+ rhdCrtcLoadCursorARGB(Crtc, rhdPtr->CursorImage);
- }
- }
- }
-@@ -363,16 +344,11 @@ rhdSetCursorPosition(ScrnInfoPtr pScrn,
- for (i = 0; i < 2; i++) {
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
-- if (Crtc->Active && Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
-+ if (Crtc->Active && Crtc->scrnIndex == pScrn->scrnIndex
-+ && hasVisibleCursor(Crtc)) {
-
- /* Given cursor pos is always relative to frame - make absolute */
-- Cursor->X = x + pScrn->frameX0;
-- Cursor->Y = y + pScrn->frameY0;
--
-- lockCursor (Cursor, TRUE);
-- displayCursor(Crtc);
-- lockCursor (Cursor, FALSE);
-+ rhdCrtcSetCursorPosition(Crtc, x+pScrn->frameX0, y+pScrn->frameY0);
- }
- }
- }
-@@ -397,12 +373,7 @@ rhdSetCursorColors(ScrnInfoPtr pScrn, in
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
- if (Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
--
-- lockCursor (Cursor, TRUE);
-- uploadCursorImage(Cursor, rhdPtr->CursorImage);
-- setCursorImage (Cursor);
-- lockCursor (Cursor, FALSE);
-+ rhdCrtcLoadCursorARGB(Crtc, rhdPtr->CursorImage);
- }
- }
- }
-@@ -422,15 +393,7 @@ rhdLoadCursorImage(ScrnInfoPtr pScrn, un
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
- if (Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
--
-- Cursor->Width = bits->width;
-- Cursor->Height = bits->height;
--
-- lockCursor (Cursor, TRUE);
-- uploadCursorImage(Cursor, rhdPtr->CursorImage);
-- setCursorImage (Cursor);
-- lockCursor (Cursor, FALSE);
-+ rhdCrtcLoadCursorARGB(Crtc, rhdPtr->CursorImage);
- }
- }
- }
-@@ -455,24 +418,19 @@ rhdLoadCursorARGB(ScrnInfoPtr pScrn, Cur
- rhdPtr->CursorBits = NULL;
-
- /* Hardware only supports 64-wide cursor images. */
-- for (i = 0; i < cur->bits->height; i++)
-- memcpy(rhdPtr->CursorImage + MAX_CURSOR_WIDTH*i,
-+ memset(rhdPtr->CursorImage, 0, MAX_CURSOR_WIDTH * MAX_CURSOR_HEIGHT * 4);
-+ for (i = 0; i < cur->bits->height; i++) {
-+ CARD32 *img = rhdPtr->CursorImage + MAX_CURSOR_WIDTH*i;
-+ memcpy(img,
- cur->bits->argb + cur->bits->width*i,
- cur->bits->width*4);
-+ }
-
- for (i = 0; i < 2; i++) {
- struct rhdCrtc *Crtc = rhdPtr->Crtc[i];
-
- if (Crtc->scrnIndex == pScrn->scrnIndex) {
-- struct rhdCursor *Cursor = Crtc->Cursor;
--
-- Cursor->Width = cur->bits->width;
-- Cursor->Height = cur->bits->height;
--
-- lockCursor (Cursor, TRUE);
-- uploadCursorImage(Cursor, rhdPtr->CursorImage);
-- setCursorImage (Cursor);
-- lockCursor (Cursor, FALSE);
Home |
Main Index |
Thread Index |
Old Index