diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/.lastcommit xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/.lastcommit --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/.lastcommit 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/.lastcommit 2013-07-10 15:44:03.000000000 +0000 @@ -1 +1 @@ -commit bd2557ea5ef84b975060e929d5ece53ec464336f +commit c16c59f8f9b6aa7a4a6a6465582ad98f02a3606a diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/ChangeLog xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/ChangeLog --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/ChangeLog 2013-05-31 16:34:27.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/ChangeLog 2013-07-10 15:44:11.000000000 +0000 @@ -1,9 +1,114 @@ -commit 68b1b3919e98b651dfefb7917a89467e416c8468 +commit 2ae465b8dc18d69e0012dd9b3c4568fac952e3cf Author: Robert Hooker -Date: Fri May 31 12:34:17 2013 -0400 +Date: Wed Jul 10 11:44:03 2013 -0400 Add debian tree from origin/ubuntu +commit c16c59f8f9b6aa7a4a6a6465582ad98f02a3606a +Author: Mark Kettenis +Date: Sun Jul 7 13:44:13 2013 +0200 + + Always go through DFS/UTS when byte swapping is needed. + + Before commit ef9bfb262db7004bef3704e5d914687e50d3fca4 and + e5bd99faa3b6629a55168386d5dfa936ee4e97ae, byte swapping for the front buffer + used to be done in hardware. Now that this no longer happens we need to let + DFS/UTS ihandle the byte swapping. + + See https://bugs.freedesktop.org/show_bug.cgi?id=66663 . + + Signed-off-by: Mark Kettenis + +commit 1239dbbd8c8d9b55756c1de52cad353171a06522 +Author: Alex Deucher +Date: Sun Jul 7 20:22:10 2013 -0400 + + radeon: bump libdrm requirement to 2.4.46 for CIK support + + Signed-off-by: Alex Deucher + +commit 869e0b187b2d07e637c4482fe50d9f1b0c09f4e4 +Author: Alex Deucher +Date: Thu Jan 24 21:12:28 2013 -0500 + + radeon/kms: add kabini pci ids + + Signed-off-by: Alex Deucher + +commit 0edcefc4c97e4572431c38fe170032470e22e0b7 +Author: Alex Deucher +Date: Fri Jun 7 14:56:26 2013 -0400 + + radeon/kms: add bonaire pci ids + + Signed-off-by: Alex Deucher + +commit ebc32b27af25b23604e725eb50d844a8d26116bb +Author: Alex Deucher +Date: Fri Aug 31 18:17:24 2012 -0400 + + radeon: update cursor handling for CIK + + CIK asics have 128x128 hw cursors + + Signed-off-by: Alex Deucher + +commit 4adaea996454b1ad5185f9c0f37667dbfc266495 +Author: Alex Deucher +Date: Fri Jun 7 14:47:36 2013 -0400 + + radeon: add family ids for CIK + + Signed-off-by: Alex Deucher + +commit 3626ab147b6749a355e7d21710447f13b9796c77 +Author: Leo Liu +Date: Fri Jun 14 10:27:20 2013 -0400 + + radeon: fix a memory leak in get_modes() callback. + + leak happens when looping xrandr prop. + + Signed-off-by: Leo Liu + Signed-off-by: Alex Deucher + +commit c0f7d03cb29166c6c00dd6fb698ba3f70c59dbdf +Author: Alex Deucher +Date: Mon Jun 17 11:38:27 2013 -0400 + + man: fix up previous commit + + Signed-off-by: Alex Deucher + +commit 03b5edc9dd3859eed2504155970613aaf88df852 +Author: Eric S. Raymond +Date: Fri Jun 7 13:23:14 2013 -0400 + + Fix some incomplete list entries. + + This necessarily involved adding some content, which I was able to + Google for. Please review, correct, and make more specific. + + Bodiless .TP entries screw up doclifter's page parsing. Please + don't do that anymore. + +commit 7ce43639a8e53eefb94e5255a39c1232b6bdbf66 +Author: Michel Dänzer +Date: Thu Jun 6 09:58:27 2013 +0200 + + autogen.sh: Restore passing --enable-maintainer-mode to configure + + Looks like this was accidentally dropped when the GNOME Build API was + implemented. + +commit 365e571d9de0b5979425c34210789afca4ea5f68 +Author: Samuel Li +Date: Wed Mar 20 11:59:58 2013 -0400 + + radeon: use direct mapping for fast fb access. + + Signed-off-by: Samuel Li + commit bd2557ea5ef84b975060e929d5ece53ec464336f Author: Ilija Hadzic Date: Wed May 8 22:39:48 2013 -0400 diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/autogen.sh xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/autogen.sh --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/autogen.sh 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/autogen.sh 2013-07-10 15:44:02.000000000 +0000 @@ -10,5 +10,5 @@ cd $ORIGDIR || exit $? if test -z "$NOCONFIGURE"; then - $srcdir/configure "$@" + $srcdir/configure --enable-maintainer-mode "$@" fi diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/configure xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/configure --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/configure 2013-05-31 16:34:26.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/configure 2013-07-10 15:44:10.000000000 +0000 @@ -18313,12 +18313,12 @@ pkg_cv_LIBDRM_CFLAGS="$LIBDRM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.44\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.44") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.46\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.46") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBDRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm >= 2.4.44" 2>/dev/null` + pkg_cv_LIBDRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm >= 2.4.46" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -18330,12 +18330,12 @@ pkg_cv_LIBDRM_LIBS="$LIBDRM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.44\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.44") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.46\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.46") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBDRM_LIBS=`$PKG_CONFIG --libs "libdrm >= 2.4.44" 2>/dev/null` + pkg_cv_LIBDRM_LIBS=`$PKG_CONFIG --libs "libdrm >= 2.4.46" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -18356,14 +18356,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBDRM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdrm >= 2.4.44" 2>&1` + LIBDRM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdrm >= 2.4.46" 2>&1` else - LIBDRM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdrm >= 2.4.44" 2>&1` + LIBDRM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdrm >= 2.4.46" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBDRM_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libdrm >= 2.4.44) were not met: + as_fn_error $? "Package requirements (libdrm >= 2.4.46) were not met: $LIBDRM_PKG_ERRORS diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/configure.ac xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/configure.ac --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/configure.ac 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/configure.ac 2013-07-10 15:44:02.000000000 +0000 @@ -71,7 +71,7 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) # Checks for libraries. -PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.44]) +PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.46]) PKG_CHECK_MODULES(LIBDRM_RADEON, [libdrm_radeon]) # Obtain compiler/linker options for the driver dependencies diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/debian/changelog xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/debian/changelog --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/debian/changelog 2013-07-10 16:00:19.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/debian/changelog 2013-07-10 16:00:19.000000000 +0000 @@ -1,14 +1,14 @@ -xserver-xorg-video-ati (1:7.1.99+git20130531.bd2557ea-0ubuntu0sarvatt~precise) precise; urgency=critical +xserver-xorg-video-ati (1:7.1.99+git20130710.c16c59f8-0ubuntu0sarvatt~precise) precise; urgency=critical - * Checkout from git 20130531 (master branch) up to commit - bd2557ea5ef84b975060e929d5ece53ec464336f + * Checkout from git 20130710 (master branch) up to commit + c16c59f8f9b6aa7a4a6a6465582ad98f02a3606a * Only added debian/ tree from origin/ubuntu * hook: Drop fixup-close.patch (upstream) * hook: Drop drmmode-fail.patch (upstream) * Forcing Build-depends to xserver-xorg-dev 2:1.12 - * Drop reverse-prime.patch for precise. + * + Drop reverse-prime.patch for precise. - -- Robert Hooker Fri, 31 May 2013 12:34:28 -0400 + -- Robert Hooker Wed, 10 Jul 2013 11:44:11 -0400 xserver-xorg-video-ati (1:7.1.0-0ubuntu2) raring; urgency=low diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/man/radeon.man xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/man/radeon.man --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/man/radeon.man 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/man/radeon.man 2013-07-10 15:44:02.000000000 +0000 @@ -180,16 +180,31 @@ Radeon HD 6950/6970/6990 .TP 12 .B ARUBA +Radeon HD 7000 series .TP 12 .B TAHITI +Radeon HD 7900 series .TP 12 .B PITCAIRN +Radeon HD 7800 series .TP 12 .B VERDE +Radeon HD 7700 series .TP 12 .B OLAND +Radeon HD 8000 series .TP 12 .B HAINAN +Radeon HD 8000 series +.TP 12 +.B BONAIRE +Radeon HD 7790 series +.TP 12 +.B KAVERI +KAVERI APUs +.TP 12 +.B KABINI +KABINI APUs .PD .SH CONFIGURATION DETAILS Please refer to __xconfigfile__(__filemansuffix__) for general configuration @@ -232,7 +247,7 @@ for R/RV3XX, R/RV4XX, R/RV5XX, RS6XX, RS740, R/RV6XX, R/RV7XX, RS780, RS880, EVERGREEN, CAYMAN, and ARUBA and .B off -for R/RV/RS1XX, R/RV/RS2XX, and RS3XX. +for R/RV/RS1XX, R/RV/RS2XX, RS3XX, and RS690/RS780/RS880 when fast fb feature is enabled. .TP .BI "Option \*qColorTiling2D\*q \*q" "boolean" \*q The framebuffer can be addressed either in linear, 1D, or 2D tiled modes. 2D tiled mode can @@ -280,7 +295,7 @@ to use VRAM for non-essential pixmaps. This option allows us to override the heuristic. The default is .B on -with > 32MB VRAM, off with < 32MB. +with > 32MB VRAM, off with < 32MB or when fast fb feature is enabled for RS690/RS780/RS880. .TP .BI "Option \*qSwapbuffersWait\*q \*q" boolean \*q This option controls the behavior of glXSwapBuffers and glXCopySubBufferMESA diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/ati_pciids_gen.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/ati_pciids_gen.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/ati_pciids_gen.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/ati_pciids_gen.h 2013-07-10 15:44:02.000000000 +0000 @@ -698,3 +698,27 @@ #define PCI_CHIP_HAINAN_6665 0x6665 #define PCI_CHIP_HAINAN_6667 0x6667 #define PCI_CHIP_HAINAN_666F 0x666F +#define PCI_CHIP_BONAIRE_6640 0x6640 +#define PCI_CHIP_BONAIRE_6641 0x6641 +#define PCI_CHIP_BONAIRE_6649 0x6649 +#define PCI_CHIP_BONAIRE_6650 0x6650 +#define PCI_CHIP_BONAIRE_6651 0x6651 +#define PCI_CHIP_BONAIRE_6658 0x6658 +#define PCI_CHIP_BONAIRE_665C 0x665C +#define PCI_CHIP_BONAIRE_665D 0x665D +#define PCI_CHIP_KABINI_9830 0x9830 +#define PCI_CHIP_KABINI_9831 0x9831 +#define PCI_CHIP_KABINI_9832 0x9832 +#define PCI_CHIP_KABINI_9833 0x9833 +#define PCI_CHIP_KABINI_9834 0x9834 +#define PCI_CHIP_KABINI_9835 0x9835 +#define PCI_CHIP_KABINI_9836 0x9836 +#define PCI_CHIP_KABINI_9837 0x9837 +#define PCI_CHIP_KABINI_9838 0x9838 +#define PCI_CHIP_KABINI_9839 0x9839 +#define PCI_CHIP_KABINI_983A 0x983A +#define PCI_CHIP_KABINI_983B 0x983B +#define PCI_CHIP_KABINI_983C 0x983C +#define PCI_CHIP_KABINI_983D 0x983D +#define PCI_CHIP_KABINI_983E 0x983E +#define PCI_CHIP_KABINI_983F 0x983F diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/drmmode_display.c xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/drmmode_display.c --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/drmmode_display.c 2013-05-31 16:34:29.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/drmmode_display.c 2013-07-10 15:44:12.000000000 +0000 @@ -584,14 +584,17 @@ static void drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image) { + ScrnInfoPtr pScrn = crtc->scrn; + RADEONInfoPtr info = RADEONPTR(pScrn); drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; int i; uint32_t *ptr; + uint32_t cursor_size = info->cursor_w * info->cursor_h; /* cursor should be mapped already */ ptr = (uint32_t *)(drmmode_crtc->cursor_bo->ptr); - for (i = 0; i < 64 * 64; i++) + for (i = 0; i < cursor_size; i++) ptr[i] = cpu_to_le32(image[i]); } @@ -599,21 +602,27 @@ static void drmmode_hide_cursor (xf86CrtcPtr crtc) { + ScrnInfoPtr pScrn = crtc->scrn; + RADEONInfoPtr info = RADEONPTR(pScrn); drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; drmmode_ptr drmmode = drmmode_crtc->drmmode; - drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, 0, 64, 64); + drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, 0, + info->cursor_w, info->cursor_h); } static void drmmode_show_cursor (xf86CrtcPtr crtc) { + ScrnInfoPtr pScrn = crtc->scrn; + RADEONInfoPtr info = RADEONPTR(pScrn); drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; drmmode_ptr drmmode = drmmode_crtc->drmmode; uint32_t handle = drmmode_crtc->cursor_bo->handle; - drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle, 64, 64); + drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle, + info->cursor_w, info->cursor_h); } static void * @@ -837,8 +846,9 @@ drmModeFreePropertyBlob(drmmode_output->edid_blob); drmmode_output->edid_blob = drmModeGetPropertyBlob(drmmode->fd, koutput->prop_values[i]); } - drmModeFreeProperty(props); } + if (props) + drmModeFreeProperty(props); } if (drmmode_output->edid_blob) { diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/pcidb/ati_pciids.csv xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/pcidb/ati_pciids.csv --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/pcidb/ati_pciids.csv 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/pcidb/ati_pciids.csv 2013-07-10 15:44:02.000000000 +0000 @@ -699,3 +699,27 @@ "0x6665","HAINAN_6665","HAINAN",1,,,,,"HAINAN" "0x6667","HAINAN_6667","HAINAN",1,,,,,"HAINAN" "0x666F","HAINAN_666F","HAINAN",1,,,,,"HAINAN" +"0x6640","BONAIRE_6640","BONAIRE",1,,,,,"BONAIRE" +"0x6641","BONAIRE_6641","BONAIRE",1,,,,,"BONAIRE" +"0x6649","BONAIRE_6649","BONAIRE",,,,,,"BONAIRE" +"0x6650","BONAIRE_6650","BONAIRE",,,,,,"BONAIRE" +"0x6651","BONAIRE_6651","BONAIRE",,,,,,"BONAIRE" +"0x6658","BONAIRE_6658","BONAIRE",,,,,,"BONAIRE" +"0x665C","BONAIRE_665C","BONAIRE",,,,,,"BONAIRE" +"0x665D","BONAIRE_665D","BONAIRE",,,,,,"BONAIRE" +"0x9830","KABINI_9830","KABINI",1,1,,,1,"KABINI" +"0x9831","KABINI_9831","KABINI",,1,,,1,"KABINI" +"0x9832","KABINI_9832","KABINI",1,1,,,1,"KABINI" +"0x9833","KABINI_9833","KABINI",,1,,,1,"KABINI" +"0x9834","KABINI_9834","KABINI",1,1,,,1,"KABINI" +"0x9835","KABINI_9835","KABINI",,1,,,1,"KABINI" +"0x9836","KABINI_9836","KABINI",1,1,,,1,"KABINI" +"0x9837","KABINI_9837","KABINI",,1,,,1,"KABINI" +"0x9838","KABINI_9838","KABINI",1,1,,,1,"KABINI" +"0x9839","KABINI_9839","KABINI",1,1,,,1,"KABINI" +"0x983A","KABINI_983A","KABINI",,1,,,1,"KABINI" +"0x983B","KABINI_983B","KABINI",1,1,,,1,"KABINI" +"0x983C","KABINI_983C","KABINI",,1,,,1,"KABINI" +"0x983D","KABINI_983D","KABINI",,1,,,1,"KABINI" +"0x983E","KABINI_983E","KABINI",,1,,,1,"KABINI" +"0x983F","KABINI_983F","KABINI",,1,,,1,"KABINI" diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/r600_exa.c xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/r600_exa.c --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/r600_exa.c 2013-05-31 16:34:11.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/r600_exa.c 2013-07-10 15:44:02.000000000 +0000 @@ -1542,6 +1542,9 @@ if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain)) goto copy; } + /* use cpu copy for fast fb access */ + if (info->is_fast_fb) + goto copy; } scratch_pitch = RADEON_ALIGN(w, drmmode_get_pitch_align(pScrn, (bpp / 8), 0)); diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon.h 2013-07-10 15:44:02.000000000 +0000 @@ -235,6 +235,12 @@ (info->ChipFamily == CHIP_FAMILY_RS300) || \ (info->ChipFamily == CHIP_FAMILY_R200)) +#define CURSOR_WIDTH 64 +#define CURSOR_HEIGHT 64 + +#define CURSOR_WIDTH_CIK 128 +#define CURSOR_HEIGHT_CIK 128 + struct radeon_exa_pixmap_priv { struct radeon_bo *bo; uint32_t tiling_flags; @@ -425,6 +431,7 @@ Bool exa_pixmaps; Bool exa_force_create; XF86ModReqInfo exaReq; + Bool is_fast_fb; /* use direct mapping for fast fb access */ unsigned int xv_max_width; unsigned int xv_max_height; @@ -472,6 +479,10 @@ /* Perform vsync'ed SwapBuffers? */ Bool swapBuffersWait; + + /* cursor size */ + int cursor_w; + int cursor_h; } RADEONInfoRec, *RADEONInfoPtr; /* radeon_accel.c */ diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_chipinfo_gen.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_chipinfo_gen.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_chipinfo_gen.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_chipinfo_gen.h 2013-07-10 15:44:02.000000000 +0000 @@ -618,4 +618,28 @@ { 0x6665, CHIP_FAMILY_HAINAN, 1, 0, 0, 0, 0 }, { 0x6667, CHIP_FAMILY_HAINAN, 1, 0, 0, 0, 0 }, { 0x666F, CHIP_FAMILY_HAINAN, 1, 0, 0, 0, 0 }, + { 0x6640, CHIP_FAMILY_BONAIRE, 1, 0, 0, 0, 0 }, + { 0x6641, CHIP_FAMILY_BONAIRE, 1, 0, 0, 0, 0 }, + { 0x6649, CHIP_FAMILY_BONAIRE, 0, 0, 0, 0, 0 }, + { 0x6650, CHIP_FAMILY_BONAIRE, 0, 0, 0, 0, 0 }, + { 0x6651, CHIP_FAMILY_BONAIRE, 0, 0, 0, 0, 0 }, + { 0x6658, CHIP_FAMILY_BONAIRE, 0, 0, 0, 0, 0 }, + { 0x665C, CHIP_FAMILY_BONAIRE, 0, 0, 0, 0, 0 }, + { 0x665D, CHIP_FAMILY_BONAIRE, 0, 0, 0, 0, 0 }, + { 0x9830, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x9831, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x9832, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x9833, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x9834, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x9835, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x9836, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x9837, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x9838, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x9839, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x983A, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x983B, CHIP_FAMILY_KABINI, 1, 1, 0, 0, 1 }, + { 0x983C, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x983D, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x983E, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, + { 0x983F, CHIP_FAMILY_KABINI, 0, 1, 0, 0, 1 }, }; diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_chipset_gen.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_chipset_gen.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_chipset_gen.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_chipset_gen.h 2013-07-10 15:44:02.000000000 +0000 @@ -618,5 +618,29 @@ { PCI_CHIP_HAINAN_6665, "HAINAN" }, { PCI_CHIP_HAINAN_6667, "HAINAN" }, { PCI_CHIP_HAINAN_666F, "HAINAN" }, + { PCI_CHIP_BONAIRE_6640, "BONAIRE" }, + { PCI_CHIP_BONAIRE_6641, "BONAIRE" }, + { PCI_CHIP_BONAIRE_6649, "BONAIRE" }, + { PCI_CHIP_BONAIRE_6650, "BONAIRE" }, + { PCI_CHIP_BONAIRE_6651, "BONAIRE" }, + { PCI_CHIP_BONAIRE_6658, "BONAIRE" }, + { PCI_CHIP_BONAIRE_665C, "BONAIRE" }, + { PCI_CHIP_BONAIRE_665D, "BONAIRE" }, + { PCI_CHIP_KABINI_9830, "KABINI" }, + { PCI_CHIP_KABINI_9831, "KABINI" }, + { PCI_CHIP_KABINI_9832, "KABINI" }, + { PCI_CHIP_KABINI_9833, "KABINI" }, + { PCI_CHIP_KABINI_9834, "KABINI" }, + { PCI_CHIP_KABINI_9835, "KABINI" }, + { PCI_CHIP_KABINI_9836, "KABINI" }, + { PCI_CHIP_KABINI_9837, "KABINI" }, + { PCI_CHIP_KABINI_9838, "KABINI" }, + { PCI_CHIP_KABINI_9839, "KABINI" }, + { PCI_CHIP_KABINI_983A, "KABINI" }, + { PCI_CHIP_KABINI_983B, "KABINI" }, + { PCI_CHIP_KABINI_983C, "KABINI" }, + { PCI_CHIP_KABINI_983D, "KABINI" }, + { PCI_CHIP_KABINI_983E, "KABINI" }, + { PCI_CHIP_KABINI_983F, "KABINI" }, { -1, NULL } }; diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_exa.c xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_exa.c --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_exa.c 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_exa.c 2013-07-10 15:44:02.000000000 +0000 @@ -172,7 +172,7 @@ #if X_BYTE_ORDER == X_BIG_ENDIAN /* May need to handle byte swapping in DownloadFrom/UploadToScreen */ - if (can_fail && pPix->drawable.bitsPerPixel > 8) + if (pPix->drawable.bitsPerPixel > 8) return FALSE; #endif diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_exa_funcs.c xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_exa_funcs.c --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_exa_funcs.c 2013-05-31 16:34:11.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_exa_funcs.c 2013-07-10 15:44:02.000000000 +0000 @@ -412,6 +412,9 @@ if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain)) goto copy; } + /* use cpu copy for fast fb access */ + if (info->is_fast_fb) + goto copy; } size = scratch_pitch * h; diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_kms.c xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_kms.c --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_kms.c 2013-05-31 16:34:29.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_kms.c 2013-07-10 15:44:12.000000000 +0000 @@ -51,9 +51,6 @@ #include "radeon_chipinfo_gen.h" -#define CURSOR_WIDTH 64 -#define CURSOR_HEIGHT 64 - #include "radeon_bo_gem.h" #include "radeon_cs_gem.h" #include "radeon_vbo.h" @@ -319,6 +316,28 @@ } } +static Bool RADEONIsFastFBWorking(ScrnInfoPtr pScrn) +{ + RADEONInfoPtr info = RADEONPTR(pScrn); + struct drm_radeon_info ginfo; + int r; + uint32_t tmp = 0; + +#ifndef RADEON_INFO_FASTFB_WORKING +#define RADEON_INFO_FASTFB_WORKING 0x14 +#endif + memset(&ginfo, 0, sizeof(ginfo)); + ginfo.request = RADEON_INFO_FASTFB_WORKING; + ginfo.value = (uintptr_t)&tmp; + r = drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &ginfo, sizeof(ginfo)); + if (r) { + return FALSE; + } + if (tmp == 1) + return TRUE; + return FALSE; +} + static Bool RADEONIsFusionGARTWorking(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); @@ -464,6 +483,12 @@ return FALSE; } + /* Check whether direct mapping is used for fast fb access*/ + if (RADEONIsFastFBWorking(pScrn)) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct mapping of fb aperture is enabled for fast fb access.\n"); + info->is_fast_fb = TRUE; + } + if (xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE) || (!RADEONIsAccelWorking(pScrn))) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, @@ -839,7 +864,8 @@ * with proper bit, in the meantime you need to set tiling option in * xorg configuration files */ - info->ChipFamily <= CHIP_FAMILY_ARUBA; + info->ChipFamily <= CHIP_FAMILY_ARUBA && + !info->is_fast_fb; /* 2D color tiling */ if (info->ChipFamily >= CHIP_FAMILY_R600) { @@ -917,6 +943,15 @@ } } + /* set cursor size */ + if (info->ChipFamily >= CHIP_FAMILY_BONAIRE) { + info->cursor_w = CURSOR_WIDTH_CIK; + info->cursor_h = CURSOR_HEIGHT_CIK; + } else { + info->cursor_w = CURSOR_WIDTH; + info->cursor_h = CURSOR_HEIGHT; + } + { struct drm_radeon_gem_info mminfo; @@ -935,8 +970,9 @@ if (!info->use_glamor) { info->exa_pixmaps = xf86ReturnOptValBool(info->Options, OPTION_EXA_PIXMAPS, - ((info->vram_size > (32 * 1024 * 1024) && - info->RenderAccel))); + (info->vram_size > (32 * 1024 * 1024) && + info->RenderAccel && + !info->is_fast_fb)); if (info->exa_pixmaps) xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA: Driver will allow EXA pixmaps in VRAM\n"); @@ -986,7 +1022,10 @@ static Bool RADEONCursorInit_KMS(ScreenPtr pScreen) { - return xf86_cursors_init (pScreen, CURSOR_WIDTH, CURSOR_HEIGHT, + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + RADEONInfoPtr info = RADEONPTR(pScrn); + + return xf86_cursors_init (pScreen, info->cursor_w, info->cursor_h, (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP | HARDWARE_CURSOR_AND_SOURCE_WITH_MASK | HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1 | @@ -1502,9 +1541,10 @@ info->front_surface = surface; } { - int cursor_size = 64 * 4 * 64; + int cursor_size; int c; + cursor_size = info->cursor_w * info->cursor_h * 4; cursor_size = RADEON_ALIGN(cursor_size, RADEON_GPU_PAGE_SIZE); for (c = 0; c < xf86_config->num_crtc; c++) { /* cursor objects */ diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_pci_chipset_gen.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_pci_chipset_gen.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_pci_chipset_gen.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_pci_chipset_gen.h 2013-07-10 15:44:02.000000000 +0000 @@ -618,5 +618,29 @@ { PCI_CHIP_HAINAN_6665, PCI_CHIP_HAINAN_6665, RES_SHARED_VGA }, { PCI_CHIP_HAINAN_6667, PCI_CHIP_HAINAN_6667, RES_SHARED_VGA }, { PCI_CHIP_HAINAN_666F, PCI_CHIP_HAINAN_666F, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_6640, PCI_CHIP_BONAIRE_6640, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_6641, PCI_CHIP_BONAIRE_6641, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_6649, PCI_CHIP_BONAIRE_6649, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_6650, PCI_CHIP_BONAIRE_6650, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_6651, PCI_CHIP_BONAIRE_6651, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_6658, PCI_CHIP_BONAIRE_6658, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_665C, PCI_CHIP_BONAIRE_665C, RES_SHARED_VGA }, + { PCI_CHIP_BONAIRE_665D, PCI_CHIP_BONAIRE_665D, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9830, PCI_CHIP_KABINI_9830, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9831, PCI_CHIP_KABINI_9831, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9832, PCI_CHIP_KABINI_9832, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9833, PCI_CHIP_KABINI_9833, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9834, PCI_CHIP_KABINI_9834, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9835, PCI_CHIP_KABINI_9835, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9836, PCI_CHIP_KABINI_9836, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9837, PCI_CHIP_KABINI_9837, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9838, PCI_CHIP_KABINI_9838, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_9839, PCI_CHIP_KABINI_9839, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_983A, PCI_CHIP_KABINI_983A, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_983B, PCI_CHIP_KABINI_983B, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_983C, PCI_CHIP_KABINI_983C, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_983D, PCI_CHIP_KABINI_983D, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_983E, PCI_CHIP_KABINI_983E, RES_SHARED_VGA }, + { PCI_CHIP_KABINI_983F, PCI_CHIP_KABINI_983F, RES_SHARED_VGA }, { -1, -1, RES_UNDEFINED } }; diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_pci_device_match_gen.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_pci_device_match_gen.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_pci_device_match_gen.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_pci_device_match_gen.h 2013-07-10 15:44:02.000000000 +0000 @@ -618,5 +618,29 @@ ATI_DEVICE_MATCH( PCI_CHIP_HAINAN_6665, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_HAINAN_6667, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_HAINAN_666F, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_6640, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_6641, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_6649, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_6650, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_6651, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_6658, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_665C, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_BONAIRE_665D, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9830, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9831, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9832, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9833, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9834, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9835, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9836, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9837, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9838, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_9839, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983A, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983B, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983C, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983D, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983E, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983F, 0 ), { 0, 0, 0 } }; diff -Nru xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_probe.h xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_probe.h --- xserver-xorg-video-ati-7.1.99+git20130531.bd2557ea/src/radeon_probe.h 2013-05-31 16:34:17.000000000 +0000 +++ xserver-xorg-video-ati-7.1.99+git20130710.c16c59f8/src/radeon_probe.h 2013-07-10 15:44:02.000000000 +0000 @@ -107,6 +107,9 @@ CHIP_FAMILY_VERDE, CHIP_FAMILY_OLAND, CHIP_FAMILY_HAINAN, + CHIP_FAMILY_BONAIRE, + CHIP_FAMILY_KAVERI, + CHIP_FAMILY_KABINI, CHIP_FAMILY_LAST } RADEONChipFamily;