Hello community,
here is the log from the commit of package xorg-x11-driver-video for openSUSE:Factory
checked in at Fri Feb 4 18:24:02 CET 2011.
--------
--- xorg-x11-driver-video/xorg-x11-driver-video.changes 2011-01-28 12:45:55.000000000 +0100
+++ xorg-x11-driver-video/xorg-x11-driver-video.changes 2011-02-04 05:31:43.000000000 +0100
@@ -1,0 +2,16 @@
+Fri Feb 4 04:15:09 UTC 2011 - sndirsch@novell.com
+
+- xf86-video-ati-6.14.0
+ * KMS EXA/Xv support for evergreen asics (requires kernel 2.6.36
+ or newer)
+ * KMS EXA/Xv support for ontario fusion asics (requires kernel
+ 2.6.38 or newer)
+ * KMS EXA/Xv support for northern islands asics (requires kernel
+ 2.6.38 or newer)
+ * UMS support for ontario fusion asics
+ * KMS pageflipping support for all radeons (requires kernel
+ 2.6.38 or newer)
+ * Major man page cleanup
+ * Lots of bug fixes
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
xf86-video-ati-6.13.99-20110121-fadee04.tar.bz2
New:
----
xf86-video-ati-6.14.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11-driver-video.spec ++++++
--- /var/tmp/diff_new_pack.CvxmlS/_old 2011-02-04 18:23:07.000000000 +0100
+++ /var/tmp/diff_new_pack.CvxmlS/_new 2011-02-04 18:23:07.000000000 +0100
@@ -23,7 +23,7 @@
BuildRequires: Mesa-devel libdrm-devel pkgconfig xorg-x11-proto-devel xorg-x11-server-sdk
Url: http://xorg.freedesktop.org/
Version: 7.6
-Release: 5
+Release: 6
License: MIT License (or similar)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: System/X11/Servers/XF86_4
@@ -67,7 +67,7 @@
Source42: xf86-video-voodoo-1.2.4.tar.bz2
Source44: HALlib-4.1.tar.gz
Source45: xf86-video-intel-2.14.0.tar.bz2
-Source46: xf86-video-ati-6.13.99-20110121-fadee04.tar.bz2
+Source46: xf86-video-ati-6.14.0.tar.bz2
Source51: xf86-video-geode-2.11.10.tar.bz2
Source54: xf86-video-mach64-6.8.2.tar.bz2
Source55: xf86-video-r128-6.8.1.tar.bz2
++++++ xf86-video-ati-6.13.99-20110121-fadee04.tar.bz2 -> xf86-video-ati-6.14.0.tar.bz2 ++++++
++++ 4889 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/ChangeLog new/xf86-video-ati-6.14.0/ChangeLog
--- old/xf86-video-ati-6.13.99/ChangeLog 2011-01-22 11:38:10.000000000 +0100
+++ new/xf86-video-ati-6.14.0/ChangeLog 2011-02-04 00:07:49.000000000 +0100
@@ -1,3 +1,106 @@
+commit ef9bfb262db7004bef3704e5d914687e50d3fca4
+Author: Alex Deucher
+Date: Tue Feb 1 19:24:44 2011 -0500
+
+ kms/pre-6xx: fix pageflipping with tiling
+
+ Use UTS/DFS to tile/untile as appropriate for sw access on
+ pre-6xx.
+
+ Fixes:
+ https://bugs.freedesktop.org/show_bug.cgi?id=33738
+
+ Signed-off-by: Alex Deucher
+
+commit bb16dd77321e5a64a3cb2d2ca9982117799ac1a8
+Author: Alex Deucher
+Date: Tue Feb 1 19:20:00 2011 -0500
+
+ kms/r6xx+: fix tiling and pageflipping harder
+
+ Thanks for Michel for final fix. Fixes:
+ https://bugs.freedesktop.org/show_bug.cgi?id=33738
+ for r6xx+ asics. A similar approach for pre-r6xx
+ asics is pending.
+
+ Signed-off-by: Alex Deucher
+
+commit 9c124f781049ef11a8b19894a29b7f62975b3011
+Author: Alex Deucher
+Date: Tue Feb 1 18:59:40 2011 -0500
+
+ radeon: remove device 0x4243
+
+ 0x4243 is a PCI bridge, not a gpu.
+
+ See:
+ https://bugs.freedesktop.org/show_bug.cgi?id=33815
+
+ Signed-off-by: Alex Deucher
+
+commit 66eb81b62e5ae8e1d7bd44ed8a179e5ec1ca69af
+Author: Michel Dänzer
+Date: Mon Jan 31 12:26:20 2011 +0100
+
+ UMS: Slightly improve xserver version check.
+
+ This will ensure the xserver definitions necessary to compile the new code are
+ there. xf86CrtcSetMode will be unresolved at runtime with a few xserver
+ commits, but I'm afraid this is the best we can do.
+
+ See https://bugs.freedesktop.org/show_bug.cgi?id=33719 .
+
+commit 3dc28c86eb57cac819e4ed650acfe1f7df6ef565
+Author: Alex Deucher
+Date: Thu Jan 27 13:09:26 2011 -0500
+
+ ums: fix build against xserver >= 1.10
+
+ xf86CrtcSetMode was removed in:
+ http://cgit.freedesktop.org/xorg/xserver/commit/?id=8b35118c03590a7ad3786d32...
+
+commit f58e1354b78bf6b70120bddfe1566da3b0723f72
+Author: Jerome Glisse
+Date: Wed Jan 26 16:13:30 2011 -0500
+
+ dp: fix displayport support by syncing with KMS code
+
+ Warning the dp clock value are divided by 10 in ddx (10 times
+ bigger than kernel value) this is somethings very picky.
+
+ Signed-off-by: Jerome Glisse
+
+commit 0f90133ac61c5e1d80b6fa9256e079349940029f
+Author: Alex Deucher
+Date: Mon Jan 24 12:40:22 2011 -0500
+
+ vbo: warn if we add a bo with a pointer to the wait list
+
+commit 42529603ecf86fcfd0a8f3495d9db9ce1ee9b4c3
+Author: Alex Deucher
+Date: Mon Jan 24 12:30:56 2011 -0500
+
+ vbo: always flush the cbuf bo in flush_indirect()
+
+ Always flush the cbuf in case we end up with a cbuf mapped in
+ Prepare*(), but never end up issuing a draw call since the cbuf
+ may be in use by multiple ops.
+
+ The CS check for the cbuf bo is no longer necessay because
+ the cbuf bo is NULL at this point due to the radeon_vbo_put()
+ just prior.
+
+ Fixes:
+ https://bugs.freedesktop.org/show_bug.cgi?id=32188
+
+commit 9b0e03e98ab739efb4031f81cc4a1a50b3d87a42
+Author: Alex Deucher
+Date: Mon Jan 24 00:13:25 2011 -0500
+
+ vbo: avoid extra cs revalidation in vbo alloc
+
+ Make sure we have a valid bo before revalidating.
+
commit fadee0409a8e13b78bbccb83dd70f590fee23d57
Author: Alex Deucher
Date: Fri Jan 21 17:30:28 2011 -0500
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/configure.ac new/xf86-video-ati-6.14.0/configure.ac
--- old/xf86-video-ati-6.13.99/configure.ac 2010-10-16 11:01:13.000000000 +0200
+++ new/xf86-video-ati-6.14.0/configure.ac 2011-02-04 00:02:19.000000000 +0100
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-ati],
- [6.13.99],
+ [6.14.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-ati])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/missing new/xf86-video-ati-6.14.0/missing
--- old/xf86-video-ati-6.13.99/missing 2007-11-22 08:18:41.000000000 +0100
+++ new/xf86-video-ati-6.14.0/missing 2010-05-24 21:13:23.000000000 +0200
@@ -1,10 +1,10 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2006-05-10.23
+scriptversion=2009-04-28.21; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
@@ -18,9 +18,7 @@
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program. If not, see http://www.gnu.org/licenses/.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -89,6 +87,9 @@
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
Send bug reports to ."
exit $?
;;
@@ -106,15 +107,22 @@
esac
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
-# the program).
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
case $1 in
- lex|yacc)
+ lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
- tar)
+ tar*)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
@@ -138,7 +146,7 @@
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case $1 in
+case $program in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
@@ -148,7 +156,7 @@
touch aclocal.m4
;;
- autoconf)
+ autoconf*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
@@ -157,7 +165,7 @@
touch configure
;;
- autoheader)
+ autoheader*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
@@ -187,7 +195,7 @@
while read f; do touch "$f"; done
;;
- autom4te)
+ autom4te*)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
@@ -210,7 +218,7 @@
fi
;;
- bison|yacc)
+ bison*|yacc*)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
@@ -240,7 +248,7 @@
fi
;;
- lex|flex)
+ lex*|flex*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
@@ -263,7 +271,7 @@
fi
;;
- help2man)
+ help2man*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
@@ -277,11 +285,11 @@
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
- exit 1
+ exit $?
fi
;;
- makeinfo)
+ makeinfo*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -310,7 +318,7 @@
touch $file
;;
- tar)
+ tar*)
shift
# We have already tried tar in the generic part.
@@ -363,5 +371,6 @@
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/ati_pciids_gen.h new/xf86-video-ati-6.14.0/src/ati_pciids_gen.h
--- old/xf86-video-ati-6.13.99/src/ati_pciids_gen.h 2011-01-13 16:29:39.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/ati_pciids_gen.h 2011-02-02 01:01:22.000000000 +0100
@@ -25,7 +25,6 @@
#define PCI_CHIP_MACH32 0x4158
#define PCI_CHIP_RS250_4237 0x4237
#define PCI_CHIP_R200_BB 0x4242
-#define PCI_CHIP_R200_BC 0x4243
#define PCI_CHIP_RS100_4336 0x4336
#define PCI_CHIP_RS200_4337 0x4337
#define PCI_CHIP_MACH64CT 0x4354
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/atombios_output.c new/xf86-video-ati-6.14.0/src/atombios_output.c
--- old/xf86-video-ati-6.13.99/src/atombios_output.c 2011-01-13 16:29:39.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/atombios_output.c 2011-01-27 18:05:58.000000000 +0100
@@ -65,7 +65,114 @@
"DFP5",
};
+#define AUX_NATIVE_WRITE 0x8
+#define AUX_NATIVE_READ 0x9
+
+#define AUX_I2C_WRITE 0x0
+#define AUX_I2C_READ 0x1
+#define AUX_I2C_STATUS 0x2
+#define AUX_I2C_MOT 0x4
+
+#define DP_DPCD_REV 0x0
+#define DP_MAX_LINK_RATE 0x1
+#define DP_MAX_LANE_COUNT 0x2
+#define DP_MAX_DOWNSPREAD 0x3
+#define DP_NORP 0x4
+#define DP_DOWNSTREAMPORT_PRESENT 0x5
+#define DP_MAIN_LINK_CHANNEL_CONFIG 0x6
+#define DP_DP11_DOWNSTREAM_PORT_COUNT 0x7
+
+/* from intel i830_dp.h */
+#define DP_LINK_BW_SET 0x100
+//# define DP_LINK_BW_1_62 0x06
+//# define DP_LINK_BW_2_7 0x0a
+#define DP_LANE_COUNT_SET 0x101
+# define DP_LANE_COUNT_MASK 0x0f
+# define DP_LANE_COUNT_ENHANCED_FRAME_EN (1 << 7)
+
+#define DP_TRAINING_PATTERN_SET 0x102
+
+# define DP_TRAINING_PATTERN_DISABLE 0
+# define DP_TRAINING_PATTERN_1 1
+# define DP_TRAINING_PATTERN_2 2
+# define DP_TRAINING_PATTERN_MASK 0x3
+
+# define DP_LINK_QUAL_PATTERN_DISABLE (0 << 2)
+# define DP_LINK_QUAL_PATTERN_D10_2 (1 << 2)
+# define DP_LINK_QUAL_PATTERN_ERROR_RATE (2 << 2)
+# define DP_LINK_QUAL_PATTERN_PRBS7 (3 << 2)
+# define DP_LINK_QUAL_PATTERN_MASK (3 << 2)
+# define DP_RECOVERED_CLOCK_OUT_EN (1 << 4)
+# define DP_LINK_SCRAMBLING_DISABLE (1 << 5)
+
+# define DP_SYMBOL_ERROR_COUNT_BOTH (0 << 6)
+# define DP_SYMBOL_ERROR_COUNT_DISPARITY (1 << 6)
+# define DP_SYMBOL_ERROR_COUNT_SYMBOL (2 << 6)
+# define DP_SYMBOL_ERROR_COUNT_MASK (3 << 6)
+
+#define DP_TRAINING_LANE0_SET 0x103
+#define DP_TRAINING_LANE1_SET 0x104
+#define DP_TRAINING_LANE2_SET 0x105
+#define DP_TRAINING_LANE3_SET 0x106
+# define DP_TRAIN_VOLTAGE_SWING_MASK 0x3
+# define DP_TRAIN_VOLTAGE_SWING_SHIFT 0
+# define DP_TRAIN_MAX_SWING_REACHED (1 << 2)
+# define DP_TRAIN_VOLTAGE_SWING_400 (0 << 0)
+# define DP_TRAIN_VOLTAGE_SWING_600 (1 << 0)
+# define DP_TRAIN_VOLTAGE_SWING_800 (2 << 0)
+# define DP_TRAIN_VOLTAGE_SWING_1200 (3 << 0)
+
+# define DP_TRAIN_PRE_EMPHASIS_MASK (3 << 3)
+# define DP_TRAIN_PRE_EMPHASIS_0 (0 << 3)
+# define DP_TRAIN_PRE_EMPHASIS_3_5 (1 << 3)
+# define DP_TRAIN_PRE_EMPHASIS_6 (2 << 3)
+# define DP_TRAIN_PRE_EMPHASIS_9_5 (3 << 3)
+
+# define DP_TRAIN_PRE_EMPHASIS_SHIFT 3
+# define DP_TRAIN_MAX_PRE_EMPHASIS_REACHED (1 << 5)
+#define DP_DOWNSPREAD_CTRL 0x107
+# define DP_SPREAD_AMP_0_5 (1 << 4)
+
+#define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108
+# define DP_SET_ANSI_8B10B (1 << 0)
+
+#define DP_LANE0_1_STATUS 0x202
+#define DP_LANE2_3_STATUS 0x203
+
+# define DP_LANE_CR_DONE (1 << 0)
+# define DP_LANE_CHANNEL_EQ_DONE (1 << 1)
+# define DP_LANE_SYMBOL_LOCKED (1 << 2)
+
+#define DP_LANE_ALIGN_STATUS_UPDATED 0x204
+#define DP_INTERLANE_ALIGN_DONE (1 << 0)
+#define DP_DOWNSTREAM_PORT_STATUS_CHANGED (1 << 6)
+#define DP_LINK_STATUS_UPDATED (1 << 7)
+
+#define DP_SINK_STATUS 0x205
+
+#define DP_RECEIVE_PORT_0_STATUS (1 << 0)
+#define DP_RECEIVE_PORT_1_STATUS (1 << 1)
+
+#define DP_ADJUST_REQUEST_LANE0_1 0x206
+#define DP_ADJUST_REQUEST_LANE2_3 0x207
+
+#define DP_ADJUST_VOLTAGE_SWING_LANE0_MASK 0x03
+#define DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT 0
+#define DP_ADJUST_PRE_EMPHASIS_LANE0_MASK 0x0c
+#define DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT 2
+#define DP_ADJUST_VOLTAGE_SWING_LANE1_MASK 0x30
+#define DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT 4
+#define DP_ADJUST_PRE_EMPHASIS_LANE1_MASK 0xc0
+#define DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT 6
+
+#define DP_LINK_STATUS_SIZE 6
+#define DP_LINK_CONFIGURATION_SIZE 9
+
+#define DP_SET_POWER_D0 0x1
+#define DP_SET_POWER_D3 0x2
+
static void do_displayport_link_train(xf86OutputPtr output);
+static void atombios_pick_dig_encoder(xf86OutputPtr output);
static int
atombios_output_dac_setup(xf86OutputPtr output, int action)
@@ -487,40 +594,68 @@
# define DP_LINK_BW_1_62 0x06
# define DP_LINK_BW_2_7 0x0a
+static int radeon_dp_max_lane_count(xf86OutputPtr output);
static int
-dp_lanes_for_mode_clock(RADEONOutputPrivatePtr radeon_output,
- int mode_clock)
+dp_lanes_for_mode_clock(xf86OutputPtr output, int mode_clock)
{
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
int i;
int max_link_bw = radeon_output->dpcd[1];
+ int max_lane_count = radeon_dp_max_lane_count(output);
switch (max_link_bw) {
case DP_LINK_BW_1_62:
default:
for (i = 0; i < num_dp_clocks; i++) {
- if (i % 2)
- continue;
- if (dp_clocks[i] > (mode_clock / 10)) {
- if (i < 2)
- return 1;
- else if (i < 4)
- return 2;
- else
- return 4;
- }
+ if (i % 2)
+ continue;
+ switch (max_lane_count) {
+ case 1:
+ if (i > 1)
+ return 0;
+ break;
+ case 2:
+ if (i > 3)
+ return 0;
+ break;
+ case 4:
+ default:
+ break;
+ }
+ if (dp_clocks[i] > (mode_clock/10)) {
+ if (i < 2)
+ return 1;
+ else if (i < 4)
+ return 2;
+ else
+ return 4;
+ }
}
break;
case DP_LINK_BW_2_7:
for (i = 0; i < num_dp_clocks; i++) {
- if (dp_clocks[i] > (mode_clock / 10)) {
- if (i < 2)
- return 1;
- else if (i < 4)
- return 2;
- else
- return 4;
- }
+ switch (max_lane_count) {
+ case 1:
+ if (i > 1)
+ return 0;
+ break;
+ case 2:
+ if (i > 3)
+ return 0;
+ break;
+ case 4:
+ default:
+ break;
+ }
+ if (dp_clocks[i] > (mode_clock/10)) {
+ if (i < 2)
+ return 1;
+ else if (i < 4)
+ return 2;
+ else
+ return 4;
+ }
}
break;
}
@@ -529,21 +664,54 @@
}
static int
-dp_link_clock_for_mode_clock(RADEONOutputPrivatePtr radeon_output,
- int mode_clock)
+dp_link_clock_for_mode_clock(xf86OutputPtr output, int mode_clock)
{
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
int i;
int max_link_bw = radeon_output->dpcd[1];
+ int max_lane_count = radeon_dp_max_lane_count(output);
switch (max_link_bw) {
case DP_LINK_BW_1_62:
default:
- return 16200;
+ for (i = 0; i < num_dp_clocks; i++) {
+ if (i % 2)
+ continue;
+ switch (max_lane_count) {
+ case 1:
+ if (i > 1)
+ return 0;
+ break;
+ case 2:
+ if (i > 3)
+ return 0;
+ break;
+ case 4:
+ default:
+ break;
+ }
+ if (dp_clocks[i] > (mode_clock/10))
+ return 16200;
+ }
break;
case DP_LINK_BW_2_7:
- for (i = 0; i < num_dp_clocks; i++)
- if (dp_clocks[i] > (mode_clock / 10))
- return (i % 2) ? 27000 : 16200;
+ for (i = 0; i < num_dp_clocks; i++) {
+ switch (max_lane_count) {
+ case 1:
+ if (i > 1)
+ return 0;
+ break;
+ case 2:
+ if (i > 3)
+ return 0;
+ break;
+ case 4:
+ default:
+ break;
+ }
+ if (dp_clocks[i] > (mode_clock/10))
+ return (i % 2) ? 27000 : 16200;
+ }
break;
}
@@ -624,9 +792,9 @@
disp_data.v1.ucEncoderMode = atombios_get_encoder_mode(output);
if (disp_data.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP) {
- if (dp_link_clock_for_mode_clock(radeon_output, clock) == 27000)
+ if (dp_link_clock_for_mode_clock(output, clock) == 27000)
disp_data.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
- disp_data.v1.ucLaneNum = dp_lanes_for_mode_clock(radeon_output, clock);
+ disp_data.v1.ucLaneNum = dp_lanes_for_mode_clock(output, clock);
} else if (clock > 165000)
disp_data.v1.ucLaneNum = 8;
else
@@ -716,7 +884,7 @@
} else {
if (radeon_output->MonType == MT_DP)
disp_data.v1.usPixelClock =
- cpu_to_le16(dp_link_clock_for_mode_clock(radeon_output, clock));
+ cpu_to_le16(dp_link_clock_for_mode_clock(output, clock));
else if (clock > 165000)
disp_data.v1.usPixelClock = cpu_to_le16((clock / 2) / 10);
else
@@ -725,7 +893,7 @@
if (IS_DCE4_VARIANT) {
if (radeon_output->MonType == MT_DP)
- disp_data.v3.ucLaneNum = dp_lanes_for_mode_clock(radeon_output, clock);
+ disp_data.v3.ucLaneNum = dp_lanes_for_mode_clock(output, clock);
else if (clock > 165000)
disp_data.v3.ucLaneNum = 8;
else
@@ -1301,6 +1469,7 @@
if (radeon_encoder == NULL)
return;
+ atombios_pick_dig_encoder(output);
switch (radeon_encoder->encoder_id) {
case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
@@ -1887,111 +2056,6 @@
return MonType;
}
-#define AUX_NATIVE_WRITE 0x8
-#define AUX_NATIVE_READ 0x9
-
-#define AUX_I2C_WRITE 0x0
-#define AUX_I2C_READ 0x1
-#define AUX_I2C_STATUS 0x2
-#define AUX_I2C_MOT 0x4
-
-#define DP_DPCD_REV 0x0
-#define DP_MAX_LINK_RATE 0x1
-#define DP_MAX_LANE_COUNT 0x2
-#define DP_MAX_DOWNSPREAD 0x3
-#define DP_NORP 0x4
-#define DP_DOWNSTREAMPORT_PRESENT 0x5
-#define DP_MAIN_LINK_CHANNEL_CONFIG 0x6
-#define DP_DP11_DOWNSTREAM_PORT_COUNT 0x7
-
-/* from intel i830_dp.h */
-#define DP_LINK_BW_SET 0x100
-//# define DP_LINK_BW_1_62 0x06
-//# define DP_LINK_BW_2_7 0x0a
-#define DP_LANE_COUNT_SET 0x101
-# define DP_LANE_COUNT_MASK 0x0f
-# define DP_LANE_COUNT_ENHANCED_FRAME_EN (1 << 7)
-
-#define DP_TRAINING_PATTERN_SET 0x102
-
-# define DP_TRAINING_PATTERN_DISABLE 0
-# define DP_TRAINING_PATTERN_1 1
-# define DP_TRAINING_PATTERN_2 2
-# define DP_TRAINING_PATTERN_MASK 0x3
-
-# define DP_LINK_QUAL_PATTERN_DISABLE (0 << 2)
-# define DP_LINK_QUAL_PATTERN_D10_2 (1 << 2)
-# define DP_LINK_QUAL_PATTERN_ERROR_RATE (2 << 2)
-# define DP_LINK_QUAL_PATTERN_PRBS7 (3 << 2)
-# define DP_LINK_QUAL_PATTERN_MASK (3 << 2)
-# define DP_RECOVERED_CLOCK_OUT_EN (1 << 4)
-# define DP_LINK_SCRAMBLING_DISABLE (1 << 5)
-
-# define DP_SYMBOL_ERROR_COUNT_BOTH (0 << 6)
-# define DP_SYMBOL_ERROR_COUNT_DISPARITY (1 << 6)
-# define DP_SYMBOL_ERROR_COUNT_SYMBOL (2 << 6)
-# define DP_SYMBOL_ERROR_COUNT_MASK (3 << 6)
-
-#define DP_TRAINING_LANE0_SET 0x103
-#define DP_TRAINING_LANE1_SET 0x104
-#define DP_TRAINING_LANE2_SET 0x105
-#define DP_TRAINING_LANE3_SET 0x106
-# define DP_TRAIN_VOLTAGE_SWING_MASK 0x3
-# define DP_TRAIN_VOLTAGE_SWING_SHIFT 0
-# define DP_TRAIN_MAX_SWING_REACHED (1 << 2)
-# define DP_TRAIN_VOLTAGE_SWING_400 (0 << 0)
-# define DP_TRAIN_VOLTAGE_SWING_600 (1 << 0)
-# define DP_TRAIN_VOLTAGE_SWING_800 (2 << 0)
-# define DP_TRAIN_VOLTAGE_SWING_1200 (3 << 0)
-
-# define DP_TRAIN_PRE_EMPHASIS_MASK (3 << 3)
-# define DP_TRAIN_PRE_EMPHASIS_0 (0 << 3)
-# define DP_TRAIN_PRE_EMPHASIS_3_5 (1 << 3)
-# define DP_TRAIN_PRE_EMPHASIS_6 (2 << 3)
-# define DP_TRAIN_PRE_EMPHASIS_9_5 (3 << 3)
-
-# define DP_TRAIN_PRE_EMPHASIS_SHIFT 3
-# define DP_TRAIN_MAX_PRE_EMPHASIS_REACHED (1 << 5)
-#define DP_DOWNSPREAD_CTRL 0x107
-# define DP_SPREAD_AMP_0_5 (1 << 4)
-
-#define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108
-# define DP_SET_ANSI_8B10B (1 << 0)
-
-#define DP_LANE0_1_STATUS 0x202
-#define DP_LANE2_3_STATUS 0x203
-
-# define DP_LANE_CR_DONE (1 << 0)
-# define DP_LANE_CHANNEL_EQ_DONE (1 << 1)
-# define DP_LANE_SYMBOL_LOCKED (1 << 2)
-
-#define DP_LANE_ALIGN_STATUS_UPDATED 0x204
-#define DP_INTERLANE_ALIGN_DONE (1 << 0)
-#define DP_DOWNSTREAM_PORT_STATUS_CHANGED (1 << 6)
-#define DP_LINK_STATUS_UPDATED (1 << 7)
-
-#define DP_SINK_STATUS 0x205
-
-#define DP_RECEIVE_PORT_0_STATUS (1 << 0)
-#define DP_RECEIVE_PORT_1_STATUS (1 << 1)
-
-#define DP_ADJUST_REQUEST_LANE0_1 0x206
-#define DP_ADJUST_REQUEST_LANE2_3 0x207
-
-#define DP_ADJUST_VOLTAGE_SWING_LANE0_MASK 0x03
-#define DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT 0
-#define DP_ADJUST_PRE_EMPHASIS_LANE0_MASK 0x0c
-#define DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT 2
-#define DP_ADJUST_VOLTAGE_SWING_LANE1_MASK 0x30
-#define DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT 4
-#define DP_ADJUST_PRE_EMPHASIS_LANE1_MASK 0xc0
-#define DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT 6
-
-#define DP_LINK_STATUS_SIZE 6
-#define DP_LINK_CONFIGURATION_SIZE 9
-
-#define DP_SET_POWER_D0 0x1
-#define DP_SET_POWER_D3 0x2
static inline int atom_dp_get_encoder_id(xf86OutputPtr output)
{
@@ -2534,66 +2598,16 @@
return max_lane_count;
}
-static int radeon_dp_max_link_bw(xf86OutputPtr output)
-{
- RADEONOutputPrivatePtr radeon_output = output->driver_private;
- int max_link_bw = radeon_output->dpcd[1];
- switch(max_link_bw) {
- case DP_LINK_BW_1_62:
- case DP_LINK_BW_2_7:
- break;
- default:
- max_link_bw = DP_LINK_BW_1_62;
- break;
- }
- return max_link_bw;
-}
-
-static int radeon_dp_link_clock(uint8_t link_bw)
-{
- if (link_bw == DP_LINK_BW_2_7)
- return 270000;
- else
- return 162000;
-}
-
-
-/* I think this is a fiction */
-static int radeon_dp_link_required(int pixel_clock)
-{
- return pixel_clock * 3;
-}
-
-static int link_bw_avail(int max_link_clock, int max_lanes)
-{
- return (max_link_clock * max_lanes * 8) / 10;
-}
-
Bool radeon_dp_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, DisplayModePtr adjusted_mode)
{
- RADEONOutputPrivatePtr radeon_output = output->driver_private;
- int lane_count, clock;
- int max_lane_count = radeon_dp_max_lane_count(output);
- int max_clock = radeon_dp_max_link_bw(output) == DP_LINK_BW_2_7 ? 1 : 0;
- static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };
+ RADEONOutputPrivatePtr radeon_output = output->driver_private;
+ int clock = adjusted_mode->Clock;
- for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
- for (clock = 0; clock <= max_clock; clock++) {
- int link_avail = link_bw_avail(radeon_dp_link_clock(bws[clock]), lane_count);
-
- if (radeon_dp_link_required(mode->Clock) <= link_avail) {
- radeon_output->dp_lane_count = lane_count;
- radeon_output->dp_clock = radeon_dp_link_clock(bws[clock]);
- if (0)
- xf86DrvMsg(0, X_INFO,
- "lane_count %d clock %d\n",
- radeon_output->dp_lane_count,
- radeon_output->dp_clock);
- return TRUE;
- }
- }
- }
- return FALSE;
+ radeon_output->dp_lane_count = dp_lanes_for_mode_clock(output, clock);
+ radeon_output->dp_clock = dp_link_clock_for_mode_clock(output, clock);
+ if (!radeon_output->dp_lane_count || !radeon_output->dp_clock)
+ return FALSE;
+ return TRUE;
}
static void dp_update_dpvs_emph(xf86OutputPtr output, uint8_t train_set[4])
@@ -2625,7 +2639,7 @@
/* set up link configuration */
memset(dp_link_configuration, 0, DP_LINK_CONFIGURATION_SIZE);
- if (radeon_output->dp_clock == 270000)
+ if (radeon_output->dp_clock == 27000)
dp_link_configuration[0] = DP_LINK_BW_2_7;
else
dp_link_configuration[0] = DP_LINK_BW_1_62;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/drmmode_display.c new/xf86-video-ati-6.14.0/src/drmmode_display.c
--- old/xf86-video-ati-6.13.99/src/drmmode_display.c 2011-01-13 16:29:39.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/drmmode_display.c 2011-02-02 01:23:58.000000000 +0100
@@ -1232,8 +1232,7 @@
}
#endif
if (tiling_flags)
- radeon_bo_set_tiling(info->front_bo,
- tiling_flags | RADEON_TILING_SURFACE, pitch);
+ radeon_bo_set_tiling(info->front_bo, tiling_flags, pitch);
ret = drmModeAddFB(drmmode->fd, width, height, scrn->depth,
scrn->bitsPerPixel, pitch,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/evergreen_exa.c new/xf86-video-ati-6.14.0/src/evergreen_exa.c
--- old/xf86-video-ati-6.13.99/src/evergreen_exa.c 2011-01-22 11:29:34.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/evergreen_exa.c 2011-02-02 01:18:56.000000000 +0100
@@ -1534,19 +1534,28 @@
Bool r;
int i;
struct r600_accel_object src_obj, dst_obj;
+ uint32_t tiling_flags = 0, pitch = 0;
if (bpp < 8)
return FALSE;
driver_priv = exaGetPixmapDriverPrivate(pDst);
+ if (!driver_priv || !driver_priv->bo)
+ return FALSE;
+
+ ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
+ if (ret)
+ ErrorF("radeon_bo_get_tiling failed\n");
/* If we know the BO won't be busy, don't bother with a scratch */
copy_dst = driver_priv->bo;
copy_pitch = pDst->devKind;
- if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
- flush = FALSE;
- if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
- goto copy;
+ if (!(tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) {
+ if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
+ flush = FALSE;
+ if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
+ goto copy;
+ }
}
size = scratch_pitch * h;
@@ -1646,6 +1655,8 @@
return FALSE;
driver_priv = exaGetPixmapDriverPrivate(pSrc);
+ if (!driver_priv || !driver_priv->bo)
+ return FALSE;
ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
if (ret)
@@ -1663,13 +1674,14 @@
else /* A write may be scheduled */
flush = TRUE;
}
- }
- if (!src_domain)
- radeon_bo_is_busy(driver_priv->bo, &src_domain);
+ if (!src_domain)
+ radeon_bo_is_busy(driver_priv->bo, &src_domain);
- if (src_domain & ~(uint32_t)RADEON_GEM_DOMAIN_VRAM)
- goto copy;
+ if (src_domain & ~(uint32_t)RADEON_GEM_DOMAIN_VRAM)
+ goto copy;
+
+ }
if (info->ChipFamily == CHIP_FAMILY_PALM)
goto copy;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/pcidb/ati_pciids.csv new/xf86-video-ati-6.14.0/src/pcidb/ati_pciids.csv
--- old/xf86-video-ati-6.13.99/src/pcidb/ati_pciids.csv 2011-01-22 11:29:34.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/pcidb/ati_pciids.csv 2011-02-02 01:01:22.000000000 +0100
@@ -26,7 +26,6 @@
"0x4158","MACH32","MACH32",,,,,,
"0x4237","RS250_4237","RS200",,1,,,1,"ATI Radeon 7000 IGP (A4+) 4237"
"0x4242","R200_BB","R200",,,,1,,"ATI Radeon 8500 AIW BB (AGP)"
-"0x4243","R200_BC","R200",,,,1,,"ATI Radeon 8500 AIW BC (AGP)"
"0x4336","RS100_4336","RS100",1,1,,,1,"ATI Radeon IGP320M (U1) 4336"
"0x4337","RS200_4337","RS200",1,1,,,1,"ATI Radeon IGP330M/340M/350M (U2) 4337"
"0x4354","MACH64CT","MACH64",,,,,,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/r600_exa.c new/xf86-video-ati-6.14.0/src/r600_exa.c
--- old/xf86-video-ati-6.13.99/src/r600_exa.c 2011-01-22 11:29:34.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/r600_exa.c 2011-02-02 01:18:56.000000000 +0100
@@ -1785,19 +1785,28 @@
Bool r;
int i;
struct r600_accel_object src_obj, dst_obj;
+ uint32_t tiling_flags = 0, pitch = 0;
if (bpp < 8)
return FALSE;
driver_priv = exaGetPixmapDriverPrivate(pDst);
+ if (!driver_priv || !driver_priv->bo)
+ return FALSE;
+
+ ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
+ if (ret)
+ ErrorF("radeon_bo_get_tiling failed\n");
/* If we know the BO won't be busy, don't bother with a scratch */
copy_dst = driver_priv->bo;
copy_pitch = pDst->devKind;
- if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
- flush = FALSE;
- if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
- goto copy;
+ if (!(tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) {
+ if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
+ flush = FALSE;
+ if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
+ goto copy;
+ }
}
size = scratch_pitch * h;
@@ -1897,6 +1906,8 @@
return FALSE;
driver_priv = exaGetPixmapDriverPrivate(pSrc);
+ if (!driver_priv || !driver_priv->bo)
+ return FALSE;
ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
if (ret)
@@ -1914,13 +1925,13 @@
else /* A write may be scheduled */
flush = TRUE;
}
- }
- if (!src_domain)
- radeon_bo_is_busy(driver_priv->bo, &src_domain);
+ if (!src_domain)
+ radeon_bo_is_busy(driver_priv->bo, &src_domain);
- if (src_domain & ~(uint32_t)RADEON_GEM_DOMAIN_VRAM)
- goto copy;
+ if (src_domain & ~(uint32_t)RADEON_GEM_DOMAIN_VRAM)
+ goto copy;
+ }
size = scratch_pitch * h;
scratch = radeon_bo_open(info->bufmgr, 0, size, 0, RADEON_GEM_DOMAIN_GTT, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_chipinfo_gen.h new/xf86-video-ati-6.14.0/src/radeon_chipinfo_gen.h
--- old/xf86-video-ati-6.13.99/src/radeon_chipinfo_gen.h 2011-01-13 16:29:40.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_chipinfo_gen.h 2011-02-02 01:01:22.000000000 +0100
@@ -26,7 +26,6 @@
{ 0x4156, CHIP_FAMILY_RV350, 0, 0, 0, 0, 0 },
{ 0x4237, CHIP_FAMILY_RS200, 0, 1, 0, 0, 1 },
{ 0x4242, CHIP_FAMILY_R200, 0, 0, 0, 1, 0 },
- { 0x4243, CHIP_FAMILY_R200, 0, 0, 0, 1, 0 },
{ 0x4336, CHIP_FAMILY_RS100, 1, 1, 0, 0, 1 },
{ 0x4337, CHIP_FAMILY_RS200, 1, 1, 0, 0, 1 },
{ 0x4437, CHIP_FAMILY_RS200, 1, 1, 0, 0, 1 },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_chipset_gen.h new/xf86-video-ati-6.14.0/src/radeon_chipset_gen.h
--- old/xf86-video-ati-6.13.99/src/radeon_chipset_gen.h 2011-01-22 11:29:34.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_chipset_gen.h 2011-02-02 01:01:22.000000000 +0100
@@ -26,7 +26,6 @@
{ PCI_CHIP_RV350_AV, "ATI FireGL RV360 AV (AGP)" },
{ PCI_CHIP_RS250_4237, "ATI Radeon 7000 IGP (A4+) 4237" },
{ PCI_CHIP_R200_BB, "ATI Radeon 8500 AIW BB (AGP)" },
- { PCI_CHIP_R200_BC, "ATI Radeon 8500 AIW BC (AGP)" },
{ PCI_CHIP_RS100_4336, "ATI Radeon IGP320M (U1) 4336" },
{ PCI_CHIP_RS200_4337, "ATI Radeon IGP330M/340M/350M (U2) 4337" },
{ PCI_CHIP_RS250_4437, "ATI Radeon Mobility 7000 IGP 4437" },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_exa.c new/xf86-video-ati-6.14.0/src/radeon_exa.c
--- old/xf86-video-ati-6.13.99/src/radeon_exa.c 2011-01-13 16:29:40.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_exa.c 2011-02-02 01:23:58.000000000 +0100
@@ -307,6 +307,7 @@
#endif
Bool flush = FALSE;
int ret;
+ uint32_t tiling_flags = 0, pitch = 0;
#if X_BYTE_ORDER == X_BIG_ENDIAN
/* May need to handle byte swapping in DownloadFrom/UploadToScreen */
@@ -318,16 +319,13 @@
if (!driver_priv)
return FALSE;
- if (info->ChipFamily >= CHIP_FAMILY_R600) {
- uint32_t tiling_flags = 0, pitch = 0;
-
- ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
- if (ret)
- return FALSE;
- /* untile in DFS/UTS */
- if (tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))
- return FALSE;
- }
+ /* check if we are tiled */
+ ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
+ if (ret)
+ return FALSE;
+ /* untile in DFS/UTS */
+ if (tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))
+ return FALSE;
/* if we have more refs than just the BO then flush */
if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_exa_funcs.c new/xf86-video-ati-6.14.0/src/radeon_exa_funcs.c
--- old/xf86-video-ati-6.13.99/src/radeon_exa_funcs.c 2010-09-24 11:13:38.000000000 +0200
+++ new/xf86-video-ati-6.14.0/src/radeon_exa_funcs.c 2011-02-02 01:23:58.000000000 +0100
@@ -474,6 +474,7 @@
Bool flush = TRUE;
Bool r;
int i;
+ uint32_t tiling_flags = 0, pitch = 0;
if (bpp < 8)
return FALSE;
@@ -482,6 +483,10 @@
if (!driver_priv || !driver_priv->bo)
return FALSE;
+ ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
+ if (ret)
+ ErrorF("radeon_bo_get_tiling failed\n");
+
#if X_BYTE_ORDER == X_BIG_ENDIAN
switch (bpp) {
case 32:
@@ -496,10 +501,12 @@
/* If we know the BO won't be busy, don't bother with a scratch */
copy_dst = driver_priv->bo;
copy_pitch = pDst->devKind;
- if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
- flush = FALSE;
- if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
- goto copy;
+ if (!(tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) {
+ if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
+ flush = FALSE;
+ if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
+ goto copy;
+ }
}
size = scratch_pitch * h;
@@ -573,6 +580,7 @@
int ret;
Bool flush = FALSE;
Bool r;
+ uint32_t tiling_flags = 0, pitch = 0;
if (bpp < 8)
return FALSE;
@@ -581,6 +589,10 @@
if (!driver_priv || !driver_priv->bo)
return FALSE;
+ ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
+ if (ret)
+ ErrorF("radeon_bo_get_tiling failed\n");
+
#if X_BYTE_ORDER == X_BIG_ENDIAN
switch (bpp) {
case 32:
@@ -595,22 +607,22 @@
/* If we know the BO won't end up in VRAM anyway, don't bother with a scratch */
copy_src = driver_priv->bo;
copy_pitch = pSrc->devKind;
- if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
- src_domain = radeon_bo_get_src_domain(driver_priv->bo);
- if ((src_domain & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM)) ==
- (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM))
- src_domain = 0;
- else /* A write may be scheduled */
- flush = TRUE;
- }
+ if (!(tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) {
+ if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
+ src_domain = radeon_bo_get_src_domain(driver_priv->bo);
+ if ((src_domain & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM)) ==
+ (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM))
+ src_domain = 0;
+ else /* A write may be scheduled */
+ flush = TRUE;
+ }
- if (!src_domain)
- radeon_bo_is_busy(driver_priv->bo, &src_domain);
+ if (!src_domain)
+ radeon_bo_is_busy(driver_priv->bo, &src_domain);
- if (src_domain & ~(uint32_t)RADEON_GEM_DOMAIN_VRAM) {
- goto copy;
+ if (src_domain & ~(uint32_t)RADEON_GEM_DOMAIN_VRAM)
+ goto copy;
}
-
size = scratch_pitch * h;
scratch = radeon_bo_open(info->bufmgr, 0, size, 0, RADEON_GEM_DOMAIN_GTT, 0);
if (scratch == NULL) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_kms.c new/xf86-video-ati-6.14.0/src/radeon_kms.c
--- old/xf86-video-ati-6.13.99/src/radeon_kms.c 2011-01-22 11:29:34.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_kms.c 2011-01-27 18:05:58.000000000 +0100
@@ -91,7 +91,7 @@
}
/* release the current VBO so we don't block on mapping it later */
- if (info->accel_state->cbuf.vb_offset && info->accel_state->cbuf.vb_bo) {
+ if (info->accel_state->cbuf.vb_bo) {
radeon_vbo_put(pScrn, &info->accel_state->cbuf);
info->accel_state->cbuf.vb_start_op = -1;
}
@@ -108,14 +108,6 @@
if (ret)
ErrorF("space check failed in flush\n");
- if (accel_state->cbuf.vb_bo) {
- ret = radeon_cs_space_check_with_bo(info->cs,
- accel_state->cbuf.vb_bo,
- RADEON_GEM_DOMAIN_GTT, 0);
- if (ret)
- ErrorF("space check failed in flush\n");
- }
-
if (info->reemit_current2d && info->state_2d.op)
info->reemit_current2d(pScrn, info->state_2d.op);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_output.c new/xf86-video-ati-6.14.0/src/radeon_output.c
--- old/xf86-video-ati-6.13.99/src/radeon_output.c 2010-10-16 11:01:14.000000000 +0200
+++ new/xf86-video-ati-6.14.0/src/radeon_output.c 2011-02-02 01:01:22.000000000 +0100
@@ -1618,8 +1618,23 @@
xf86CrtcPtr crtc = output->crtc;
if (crtc->enabled) {
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
+ xf86CrtcSetRec crtc_set_rec;
+
+ crtc_set_rec.flags = (XF86CrtcSetMode |
+ XF86CrtcSetOutput |
+ XF86CrtcSetOrigin |
+ XF86CrtcSetRotation);
+ crtc_set_rec.mode = &crtc->desiredMode;
+ crtc_set_rec.rotation = crtc->desiredRotation;
+ crtc_set_rec.transform = NULL;
+ crtc_set_rec.x = crtc->desiredX;
+ crtc_set_rec.y = crtc->desiredY;
+ if (!xf86CrtcSet(crtc, &crtc_set_rec)) {
+#else
if (!xf86CrtcSetMode(crtc, &crtc->desiredMode, crtc->desiredRotation,
crtc->desiredX, crtc->desiredY)) {
+#endif
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Failed to set mode after propery change!\n");
return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_pci_chipset_gen.h new/xf86-video-ati-6.14.0/src/radeon_pci_chipset_gen.h
--- old/xf86-video-ati-6.13.99/src/radeon_pci_chipset_gen.h 2011-01-13 16:29:40.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_pci_chipset_gen.h 2011-02-02 01:01:22.000000000 +0100
@@ -26,7 +26,6 @@
{ PCI_CHIP_RV350_AV, PCI_CHIP_RV350_AV, RES_SHARED_VGA },
{ PCI_CHIP_RS250_4237, PCI_CHIP_RS250_4237, RES_SHARED_VGA },
{ PCI_CHIP_R200_BB, PCI_CHIP_R200_BB, RES_SHARED_VGA },
- { PCI_CHIP_R200_BC, PCI_CHIP_R200_BC, RES_SHARED_VGA },
{ PCI_CHIP_RS100_4336, PCI_CHIP_RS100_4336, RES_SHARED_VGA },
{ PCI_CHIP_RS200_4337, PCI_CHIP_RS200_4337, RES_SHARED_VGA },
{ PCI_CHIP_RS250_4437, PCI_CHIP_RS250_4437, RES_SHARED_VGA },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_pci_device_match_gen.h new/xf86-video-ati-6.14.0/src/radeon_pci_device_match_gen.h
--- old/xf86-video-ati-6.13.99/src/radeon_pci_device_match_gen.h 2011-01-13 16:29:40.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_pci_device_match_gen.h 2011-02-02 01:01:22.000000000 +0100
@@ -26,7 +26,6 @@
ATI_DEVICE_MATCH( PCI_CHIP_RV350_AV, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_RS250_4237, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_R200_BB, 0 ),
- ATI_DEVICE_MATCH( PCI_CHIP_R200_BC, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_RS100_4336, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_RS200_4337, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_RS250_4437, 0 ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-ati-6.13.99/src/radeon_vbo.c new/xf86-video-ati-6.14.0/src/radeon_vbo.c
--- old/xf86-video-ati-6.13.99/src/radeon_vbo.c 2011-01-22 11:29:34.000000000 +0100
+++ new/xf86-video-ati-6.14.0/src/radeon_vbo.c 2011-01-27 18:05:58.000000000 +0100
@@ -136,6 +136,11 @@
if (!radeon_bo_is_idle(dma_bo->bo))
continue;
+ if (dma_bo->bo->ptr) {
+ ErrorF("bo with pointer on wait list!\n");
+ continue;
+ }
+
remove_from_list(dma_bo);
dma_bo->expire_counter = expire_at;
insert_at_tail(&accel_state->bo_free, dma_bo);
@@ -191,17 +196,17 @@
insert_at_head(&accel_state->bo_reserved, dma_bo);
}
+ if (is_empty_list(&accel_state->bo_reserved))
+ goto again_alloc;
+
+ bo = first_elem(&accel_state->bo_reserved)->bo;
+
/* need a space check */
if (radeon_cs_space_check_with_bo(info->cs,
- first_elem(&accel_state->bo_reserved)->bo,
+ bo,
RADEON_GEM_DOMAIN_GTT, 0))
- fprintf(stderr,"failed to revalidated\n");
+ ErrorF("failed to revalidate\n");
- if (is_empty_list(&accel_state->bo_reserved)) {
- goto again_alloc;
- }
-
- bo = first_elem(&accel_state->bo_reserved)->bo;
return bo;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org