[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-ati: Changes to 'ubuntu'



 configure.ac                          |    2 
 debian/changelog                      |   11 ++
 debian/patches/101_llano-support.diff |  119 ----------------------------
 debian/patches/102_llano-pciids.diff  |  140 ---------------------------------
 debian/patches/series                 |    3 
 man/radeon.man                        |   13 +--
 src/Makefile.am                       |    2 
 src/ati_pciids_gen.h                  |   13 +++
 src/drmmode_display.c                 |   52 +++++++-----
 src/drmmode_display.h                 |   10 +-
 src/evergreen_accel.c                 |   53 ++++++++++++
 src/evergreen_reg.h                   |    1 
 src/pcidb/ati_pciids.csv              |   13 +++
 src/r6xx_accel.c                      |    4 
 src/radeon.h                          |    2 
 src/radeon_chipinfo_gen.h             |   13 +++
 src/radeon_chipset_gen.h              |   13 +++
 src/radeon_commonfuncs.c              |    6 +
 src/radeon_dri2.c                     |  109 +++++++++++++++++++++----
 src/radeon_driver.c                   |    6 -
 src/radeon_exa_funcs.c                |    2 
 src/radeon_kms.c                      |   16 +++
 src/radeon_pci_chipset_gen.h          |   13 +++
 src/radeon_pci_device_match_gen.h     |   13 +++
 src/radeon_video.c                    |   22 ++++-
 src/radeon_video.h                    |    5 +
 src/radeon_xvmc.c                     |  144 ++++++++++++++++++++++++++++++++++
 27 files changed, 481 insertions(+), 319 deletions(-)

New commits:
commit c06a9878e86ddd50573238ee3592e3663df76eb9
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date:   Thu Aug 11 17:43:42 2011 +1000

    Drop upstream cherry-picks now in snapshot

diff --git a/debian/changelog b/debian/changelog
index 1d0d94b..2f40db0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ xserver-xorg-video-ati (1:6.14.99~git20110811.g93fc084-0ubuntu1) UNRELEASED; urg
     - DRI2 fixes.
     - Pageflipping and vsync fixes.
     - More PCIIDs supported
+  * 101_llano-support.diff, 102_llano-pciids.diff:
+    - Drop; in new upstream snapshot.
 
  -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 11 Aug 2011 10:02:19 +1000
 
diff --git a/debian/patches/101_llano-support.diff b/debian/patches/101_llano-support.diff
deleted file mode 100644
index 40b4bb2..0000000
--- a/debian/patches/101_llano-support.diff
+++ /dev/null
@@ -1,119 +0,0 @@
-commit 36afd1e1055eeadb2396dadcc68b214655bd90a9
-Author: Alex Deucher <alexdeucher@gmail.com>
-Date:   Tue May 31 16:03:36 2011 -0400
-
-    radeon: add support for llano APUs
-    
-    - KMS only
-    - Includes full EXA/Xv support
-    
-    Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
-
-diff --git a/src/evergreen_accel.c b/src/evergreen_accel.c
-index 70f3c1f..7cf3960 100644
---- a/src/evergreen_accel.c
-+++ b/src/evergreen_accel.c
-@@ -90,6 +90,8 @@ evergreen_sq_setup(ScrnInfoPtr pScrn, sq_config_t *sq_conf)
- 
-     if ((info->ChipFamily == CHIP_FAMILY_CEDAR) ||
- 	(info->ChipFamily == CHIP_FAMILY_PALM) ||
-+	(info->ChipFamily == CHIP_FAMILY_SUMO) ||
-+	(info->ChipFamily == CHIP_FAMILY_SUMO2) ||
- 	(info->ChipFamily == CHIP_FAMILY_CAICOS))
- 	sq_config = 0;
-     else
-@@ -554,6 +556,8 @@ evergreen_set_vtx_resource(ScrnInfoPtr pScrn, vtx_resource_t *res, uint32_t doma
-     /* flush vertex cache */
-     if ((info->ChipFamily == CHIP_FAMILY_CEDAR) ||
- 	(info->ChipFamily == CHIP_FAMILY_PALM) ||
-+	(info->ChipFamily == CHIP_FAMILY_SUMO) ||
-+	(info->ChipFamily == CHIP_FAMILY_SUMO2) ||
- 	(info->ChipFamily == CHIP_FAMILY_CAICOS) ||
- 	(info->ChipFamily == CHIP_FAMILY_CAYMAN))
- 	evergreen_cp_set_surface_sync(pScrn, TC_ACTION_ENA_bit,
-@@ -955,6 +959,48 @@ evergreen_set_default_state(ScrnInfoPtr pScrn)
- 	sq_conf.num_hs_stack_entries = 42;
- 	sq_conf.num_ls_stack_entries = 42;
- 	break;
-+    case CHIP_FAMILY_SUMO:
-+	sq_conf.num_ps_gprs = 93;
-+	sq_conf.num_vs_gprs = 46;
-+	sq_conf.num_temp_gprs = 4;
-+	sq_conf.num_gs_gprs = 31;
-+	sq_conf.num_es_gprs = 31;
-+	sq_conf.num_hs_gprs = 23;
-+	sq_conf.num_ls_gprs = 23;
-+	sq_conf.num_ps_threads = 96;
-+	sq_conf.num_vs_threads = 25;
-+	sq_conf.num_gs_threads = 25;
-+	sq_conf.num_es_threads = 25;
-+	sq_conf.num_hs_threads = 25;
-+	sq_conf.num_ls_threads = 25;
-+	sq_conf.num_ps_stack_entries = 42;
-+	sq_conf.num_vs_stack_entries = 42;
-+	sq_conf.num_gs_stack_entries = 42;
-+	sq_conf.num_es_stack_entries = 42;
-+	sq_conf.num_hs_stack_entries = 42;
-+	sq_conf.num_ls_stack_entries = 42;
-+	break;
-+    case CHIP_FAMILY_SUMO2:
-+	sq_conf.num_ps_gprs = 93;
-+	sq_conf.num_vs_gprs = 46;
-+	sq_conf.num_temp_gprs = 4;
-+	sq_conf.num_gs_gprs = 31;
-+	sq_conf.num_es_gprs = 31;
-+	sq_conf.num_hs_gprs = 23;
-+	sq_conf.num_ls_gprs = 23;
-+	sq_conf.num_ps_threads = 96;
-+	sq_conf.num_vs_threads = 25;
-+	sq_conf.num_gs_threads = 25;
-+	sq_conf.num_es_threads = 25;
-+	sq_conf.num_hs_threads = 25;
-+	sq_conf.num_ls_threads = 25;
-+	sq_conf.num_ps_stack_entries = 85;
-+	sq_conf.num_vs_stack_entries = 85;
-+	sq_conf.num_gs_stack_entries = 85;
-+	sq_conf.num_es_stack_entries = 85;
-+	sq_conf.num_hs_stack_entries = 85;
-+	sq_conf.num_ls_stack_entries = 85;
-+	break;
-     case CHIP_FAMILY_BARTS:
- 	sq_conf.num_ps_gprs = 93;
- 	sq_conf.num_vs_gprs = 46;
-diff --git a/src/radeon.h b/src/radeon.h
-index dd83a69..f66ffd0 100644
---- a/src/radeon.h
-+++ b/src/radeon.h
-@@ -360,6 +360,8 @@ typedef enum {
-     CHIP_FAMILY_CYPRESS,
-     CHIP_FAMILY_HEMLOCK,
-     CHIP_FAMILY_PALM,
-+    CHIP_FAMILY_SUMO,
-+    CHIP_FAMILY_SUMO2,
-     CHIP_FAMILY_BARTS,
-     CHIP_FAMILY_TURKS,
-     CHIP_FAMILY_CAICOS,
-diff --git a/src/radeon_driver.c b/src/radeon_driver.c
-index 35c2761..202951f 100644
---- a/src/radeon_driver.c
-+++ b/src/radeon_driver.c
-@@ -1475,7 +1475,9 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn)
- 	(info->ChipFamily != CHIP_FAMILY_RS740) &&
- 	(info->ChipFamily != CHIP_FAMILY_RS780) &&
- 	(info->ChipFamily != CHIP_FAMILY_RS880) &&
--	(info->ChipFamily != CHIP_FAMILY_PALM)) {
-+	(info->ChipFamily != CHIP_FAMILY_PALM) &&
-+	(info->ChipFamily != CHIP_FAMILY_SUMO) &&
-+	(info->ChipFamily != CHIP_FAMILY_SUMO2)) {
- 	if (info->IsIGP)
- 	    info->mc_fb_location = INREG(RADEON_NB_TOM);
- 	else
-@@ -1894,7 +1896,7 @@ static Bool RADEONPreInitChipType(ScrnInfoPtr pScrn)
- 	}
-     }
- 
--    if (IS_DCE5_VARIANT) {
-+    if (info->ChipFamily >= CHIP_FAMILY_SUMO) {
- 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- 		   "Chipset: \"%s\" (ChipID = 0x%04x) requires KMS\n",
- 		   pScrn->chipset,
diff --git a/debian/patches/102_llano-pciids.diff b/debian/patches/102_llano-pciids.diff
deleted file mode 100644
index 23b3b73..0000000
--- a/debian/patches/102_llano-pciids.diff
+++ /dev/null
@@ -1,140 +0,0 @@
-commit cbcc57b0fa6f581be777bef648f2bf3efe7443ee
-Author: Alex Deucher <alexdeucher@gmail.com>
-Date:   Mon Apr 4 12:52:00 2011 -0400
-
-    radeon: add llano pci ids
-    
-    Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
-
-diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h
-index 9e1e086..566e34a 100644
---- a/src/ati_pciids_gen.h
-+++ b/src/ati_pciids_gen.h
-@@ -451,6 +451,17 @@
- #define PCI_CHIP_RS780_9614 0x9614
- #define PCI_CHIP_RS780_9615 0x9615
- #define PCI_CHIP_RS780_9616 0x9616
-+#define PCI_CHIP_SUMO_9640 0x9640
-+#define PCI_CHIP_SUMO_9641 0x9641
-+#define PCI_CHIP_SUMO2_9642 0x9642
-+#define PCI_CHIP_SUMO2_9643 0x9643
-+#define PCI_CHIP_SUMO2_9644 0x9644
-+#define PCI_CHIP_SUMO2_9645 0x9645
-+#define PCI_CHIP_SUMO_9647 0x9647
-+#define PCI_CHIP_SUMO_9648 0x9648
-+#define PCI_CHIP_SUMO_964A 0x964A
-+#define PCI_CHIP_SUMO_964E 0x964E
-+#define PCI_CHIP_SUMO_964F 0x964F
- #define PCI_CHIP_RS880_9710 0x9710
- #define PCI_CHIP_RS880_9711 0x9711
- #define PCI_CHIP_RS880_9712 0x9712
-diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv
-index 04c204f..2d63029 100644
---- a/src/pcidb/ati_pciids.csv
-+++ b/src/pcidb/ati_pciids.csv
-@@ -452,6 +452,17 @@
- "0x9614","RS780_9614","RS780",,1,,,1,"ATI Radeon HD 3300 Graphics"
- "0x9615","RS780_9615","RS780",,1,,,1,"ATI Radeon HD 3200 Graphics"
- "0x9616","RS780_9616","RS780",,1,,,1,"ATI Radeon 3000 Graphics"
-+"0x9640","SUMO_9640","SUMO",,1,,,1,"SUMO"
-+"0x9641","SUMO_9641","SUMO",1,1,,,1,"SUMO"
-+"0x9642","SUMO2_9642","SUMO2",,1,,,1,"SUMO2"
-+"0x9643","SUMO2_9643","SUMO2",1,1,,,1,"SUMO2"
-+"0x9644","SUMO2_9644","SUMO2",,1,,,1,"SUMO2"
-+"0x9645","SUMO2_9645","SUMO2",1,1,,,1,"SUMO2"
-+"0x9647","SUMO_9647","SUMO",1,1,,,1,"SUMO"
-+"0x9648","SUMO_9648","SUMO",1,1,,,1,"SUMO"
-+"0x964A","SUMO_964A","SUMO",,1,,,1,"SUMO"
-+"0x964E","SUMO_964E","SUMO",1,1,,,1,"SUMO"
-+"0x964F","SUMO_964F","SUMO",1,1,,,1,"SUMO"
- "0x9710","RS880_9710","RS880",,1,,,1,"ATI Radeon HD 4200"
- "0x9711","RS880_9711","RS880",,1,,,1,"ATI Radeon 4100"
- "0x9712","RS880_9712","RS880",1,1,,,1,"ATI Mobility Radeon HD 4200"
-diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h
-index 23c1697..9c9295e 100644
---- a/src/radeon_chipinfo_gen.h
-+++ b/src/radeon_chipinfo_gen.h
-@@ -371,6 +371,17 @@ static RADEONCardInfo RADEONCards[] = {
-  { 0x9614, CHIP_FAMILY_RS780, 0, 1, 0, 0, 1 },
-  { 0x9615, CHIP_FAMILY_RS780, 0, 1, 0, 0, 1 },
-  { 0x9616, CHIP_FAMILY_RS780, 0, 1, 0, 0, 1 },
-+ { 0x9640, CHIP_FAMILY_SUMO, 0, 1, 0, 0, 1 },
-+ { 0x9641, CHIP_FAMILY_SUMO, 1, 1, 0, 0, 1 },
-+ { 0x9642, CHIP_FAMILY_SUMO2, 0, 1, 0, 0, 1 },
-+ { 0x9643, CHIP_FAMILY_SUMO2, 1, 1, 0, 0, 1 },
-+ { 0x9644, CHIP_FAMILY_SUMO2, 0, 1, 0, 0, 1 },
-+ { 0x9645, CHIP_FAMILY_SUMO2, 1, 1, 0, 0, 1 },
-+ { 0x9647, CHIP_FAMILY_SUMO, 1, 1, 0, 0, 1 },
-+ { 0x9648, CHIP_FAMILY_SUMO, 1, 1, 0, 0, 1 },
-+ { 0x964A, CHIP_FAMILY_SUMO, 0, 1, 0, 0, 1 },
-+ { 0x964E, CHIP_FAMILY_SUMO, 1, 1, 0, 0, 1 },
-+ { 0x964F, CHIP_FAMILY_SUMO, 1, 1, 0, 0, 1 },
-  { 0x9710, CHIP_FAMILY_RS880, 0, 1, 0, 0, 1 },
-  { 0x9711, CHIP_FAMILY_RS880, 0, 1, 0, 0, 1 },
-  { 0x9712, CHIP_FAMILY_RS880, 1, 1, 0, 0, 1 },
-diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h
-index fb86211..6b5018d 100644
---- a/src/radeon_chipset_gen.h
-+++ b/src/radeon_chipset_gen.h
-@@ -371,6 +371,17 @@ static SymTabRec RADEONChipsets[] = {
-   { PCI_CHIP_RS780_9614, "ATI Radeon HD 3300 Graphics" },
-   { PCI_CHIP_RS780_9615, "ATI Radeon HD 3200 Graphics" },
-   { PCI_CHIP_RS780_9616, "ATI Radeon 3000 Graphics" },
-+  { PCI_CHIP_SUMO_9640, "SUMO" },
-+  { PCI_CHIP_SUMO_9641, "SUMO" },
-+  { PCI_CHIP_SUMO2_9642, "SUMO2" },
-+  { PCI_CHIP_SUMO2_9643, "SUMO2" },
-+  { PCI_CHIP_SUMO2_9644, "SUMO2" },
-+  { PCI_CHIP_SUMO2_9645, "SUMO2" },
-+  { PCI_CHIP_SUMO_9647, "SUMO" },
-+  { PCI_CHIP_SUMO_9648, "SUMO" },
-+  { PCI_CHIP_SUMO_964A, "SUMO" },
-+  { PCI_CHIP_SUMO_964E, "SUMO" },
-+  { PCI_CHIP_SUMO_964F, "SUMO" },
-   { PCI_CHIP_RS880_9710, "ATI Radeon HD 4200" },
-   { PCI_CHIP_RS880_9711, "ATI Radeon 4100" },
-   { PCI_CHIP_RS880_9712, "ATI Mobility Radeon HD 4200" },
-diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h
-index 64af176..dca2c0c 100644
---- a/src/radeon_pci_chipset_gen.h
-+++ b/src/radeon_pci_chipset_gen.h
-@@ -371,6 +371,17 @@ PciChipsets RADEONPciChipsets[] = {
-  { PCI_CHIP_RS780_9614, PCI_CHIP_RS780_9614, RES_SHARED_VGA },
-  { PCI_CHIP_RS780_9615, PCI_CHIP_RS780_9615, RES_SHARED_VGA },
-  { PCI_CHIP_RS780_9616, PCI_CHIP_RS780_9616, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_9640, PCI_CHIP_SUMO_9640, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_9641, PCI_CHIP_SUMO_9641, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO2_9642, PCI_CHIP_SUMO2_9642, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO2_9643, PCI_CHIP_SUMO2_9643, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO2_9644, PCI_CHIP_SUMO2_9644, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO2_9645, PCI_CHIP_SUMO2_9645, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_9647, PCI_CHIP_SUMO_9647, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_9648, PCI_CHIP_SUMO_9648, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_964A, PCI_CHIP_SUMO_964A, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_964E, PCI_CHIP_SUMO_964E, RES_SHARED_VGA },
-+ { PCI_CHIP_SUMO_964F, PCI_CHIP_SUMO_964F, RES_SHARED_VGA },
-  { PCI_CHIP_RS880_9710, PCI_CHIP_RS880_9710, RES_SHARED_VGA },
-  { PCI_CHIP_RS880_9711, PCI_CHIP_RS880_9711, RES_SHARED_VGA },
-  { PCI_CHIP_RS880_9712, PCI_CHIP_RS880_9712, RES_SHARED_VGA },
-diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h
-index e09daae..bf192c4 100644
---- a/src/radeon_pci_device_match_gen.h
-+++ b/src/radeon_pci_device_match_gen.h
-@@ -371,6 +371,17 @@ static const struct pci_id_match radeon_device_match[] = {
-  ATI_DEVICE_MATCH( PCI_CHIP_RS780_9614, 0 ),
-  ATI_DEVICE_MATCH( PCI_CHIP_RS780_9615, 0 ),
-  ATI_DEVICE_MATCH( PCI_CHIP_RS780_9616, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_9640, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_9641, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO2_9642, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO2_9643, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO2_9644, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO2_9645, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_9647, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_9648, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_964A, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_964E, 0 ),
-+ ATI_DEVICE_MATCH( PCI_CHIP_SUMO_964F, 0 ),
-  ATI_DEVICE_MATCH( PCI_CHIP_RS880_9710, 0 ),
-  ATI_DEVICE_MATCH( PCI_CHIP_RS880_9711, 0 ),
-  ATI_DEVICE_MATCH( PCI_CHIP_RS880_9712, 0 ),
diff --git a/debian/patches/series b/debian/patches/series
index 3f89a10..ad73ef3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,3 @@
 # placeholder
 100_radeon-6.9.0-bgnr-enable.patch
-101_llano-support.diff
-102_llano-pciids.diff
+

commit ce80ffd60d172ae3c6eb51e0a7a0c1622a44a1e5
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date:   Thu Aug 11 10:04:22 2011 +1000

    New upstream snapshot

diff --git a/debian/changelog b/debian/changelog
index 10ad8ba..1d0d94b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+xserver-xorg-video-ati (1:6.14.99~git20110811.g93fc084-0ubuntu1) UNRELEASED; urgency=low
+
+  * New upstream snapshot:
+    - DRI2 fixes.
+    - Pageflipping and vsync fixes.
+    - More PCIIDs supported
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 11 Aug 2011 10:02:19 +1000
+
 xserver-xorg-video-ati (1:6.14.2-1ubuntu2) oneiric; urgency=low
 
   * 101_llano-support.diff, 102_llano-pciids.diff:

commit 93fc0843a1e31dc9237433bc2bf17df79e956d26
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Aug 10 17:44:37 2011 +0200

    Change my e-mail address to something that still works, and always will, I hope.

diff --git a/man/radeon.man b/man/radeon.man
index 8a2343c..b293d89 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -779,7 +779,7 @@ Kevin E. Martin          \fIkem@freedesktop.org\fP
 Alan Hourihane           \fIalanh@fairlite.demon.co.uk\fP
 Marc Aurele La France    \fItsi@xfree86.org\fP
 Benjamin Herrenschmidt   \fIbenh@kernel.crashing.org\fP
-Michel D\(:anzer            \fImichel@tungstengraphics.com\fP
+Michel D\(:anzer            \fImichel@daenzer.net\fP
 Alex Deucher             \fIalexdeucher@gmail.com\fP
 Bogdan D.                \fIbogdand@users.sourceforge.net\fP
 Eric Anholt              \fIeric@anholt.net\fP
diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c
index b6767f0..52adcea 100644
--- a/src/radeon_exa_funcs.c
+++ b/src/radeon_exa_funcs.c
@@ -27,7 +27,7 @@
  *    Eric Anholt <anholt@FreeBSD.org>
  *    Zack Rusin <zrusin@trolltech.com>
  *    Benjamin Herrenschmidt <benh@kernel.crashing.org>
- *    Michel Dänzer <michel@tungstengraphics.com>
+ *    Michel Dänzer <michel@daenzer.net>
  *
  */
 

commit 9151f3b1c2ebcc34e63195888ba696f2183ba5e2
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Tue Aug 9 19:13:26 2011 +0200

    Prefer the CRTC of the primary output for synchronization.
    
    See https://bugs.freedesktop.org/show_bug.cgi?id=39696 .
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>

diff --git a/man/radeon.man b/man/radeon.man
index 83e33e7..8a2343c 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -719,8 +719,10 @@ It has two values: 'off'(0) and 'on'(1). The default is
 XV_CRTC is used to control which display controller (crtc) the textured
 adapter synchronizes the screen update with when XV_VSYNC is enabled.
 The default, 'auto'(-1), will sync to the display controller that more
-of the video is on.  This attribute is useful for things like clone mode
-where the user can best decide which display should be synced.
+of the video is on; when this is ambiguous, the display controller associated
+with the RandR primary output is preferred.  This attribute is useful for
+things like clone mode where the user can best decide which display should be
+synced.
 The default is
 .B 'auto'(-1).
 
diff --git a/src/radeon_video.c b/src/radeon_video.c
index edd6d54..66ff2ad 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -142,19 +142,27 @@ radeon_pick_best_crtc(ScrnInfoPtr pScrn,
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
     int			coverage, best_coverage, c;
     BoxRec		box, crtc_box, cover_box;
-    xf86CrtcPtr         best_crtc = NULL;
+    RROutputPtr         primary_output;
+    xf86CrtcPtr         best_crtc = NULL, primary_crtc = NULL;
 
     box.x1 = x1;
     box.x2 = x2;
     box.y1 = y1;
     box.y2 = y2;
     best_coverage = 0;
+
+    /* Prefer the CRTC of the primary output */
+    primary_output = RRFirstOutput(pScrn->pScreen);
+    if (primary_output && primary_output->crtc)
+	primary_crtc = primary_output->crtc->devPrivate;
+
     for (c = 0; c < xf86_config->num_crtc; c++) {
 	xf86CrtcPtr crtc = xf86_config->crtc[c];
 	radeon_crtc_box(crtc, &crtc_box);
 	radeon_box_intersect(&cover_box, &crtc_box, &box);
 	coverage = radeon_box_area(&cover_box);
-	if (coverage > best_coverage) {
+	if (coverage > best_coverage ||
+	    (coverage == best_coverage && crtc == primary_crtc)) {
 	    best_crtc = crtc;
 	    best_coverage = coverage;
 	}

commit 3b9fdc807dd7e52af0576299cefba596040f6f2f
Author: Alex Deucher <alexdeucher@gmail.com>
Date:   Wed Aug 3 16:20:13 2011 -0400

    r5xx+: Fix vline setup with crtc offsets
    
    On r5xx+, vline is relative to to the viewport, not
    the scanlines.  Based on initial patch and investigation
    from Herbert Pötzl (Bertl) on IRC.
    
    Signed-off-by: Alex Deucher <alexdeucher@gmail.com>

diff --git a/src/evergreen_accel.c b/src/evergreen_accel.c
index f4c70c7..5c95e20 100644
--- a/src/evergreen_accel.c
+++ b/src/evergreen_accel.c
@@ -312,6 +312,10 @@ void evergreen_cp_wait_vline_sync(ScrnInfoPtr pScrn, PixmapPtr pPix,
     if (start > crtc->mode.VDisplay)
         return;
 
+    /* on r5xx+ vline starts at viewport_y */
+    start += crtc->y;
+    stop += crtc->y;
+
     BEGIN_BATCH(11);
     /* set the VLINE range */
     EREG(EVERGREEN_VLINE_START_END, /* this is just a marker */
diff --git a/src/r6xx_accel.c b/src/r6xx_accel.c
index b5acf85..752165b 100644
--- a/src/r6xx_accel.c
+++ b/src/r6xx_accel.c
@@ -373,6 +373,10 @@ r600_cp_wait_vline_sync(ScrnInfoPtr pScrn, drmBufPtr ib, PixmapPtr pPix,
     if (start > crtc->mode.VDisplay)
         return;
 
+    /* on r5xx+ vline starts at viewport_y */
+    start += crtc->y;
+    stop += crtc->y;
+
 #if defined(XF86DRM_MODE)
     if (info->cs) {
 	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c
index 2199daf..7281949 100644
--- a/src/radeon_commonfuncs.c
+++ b/src/radeon_commonfuncs.c
@@ -867,6 +867,12 @@ void FUNC_NAME(RADEONWaitForVLine)(ScrnInfoPtr pScrn, PixmapPtr pPix,
     if (start > crtc->mode.VDisplay)
 	return;
 
+    if (IS_AVIVO_VARIANT) {
+	/* on r5xx+ vline starts at viewport_y */
+	start += crtc->y;
+	stop += crtc->y;
+    }
+
 #if defined(ACCEL_CP) && defined(XF86DRM_MODE)
     if (info->cs) {
 	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;

commit 104b2d7c071f29266b1bc4184a74e9714d14febc
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Aug 1 10:05:30 2011 -0400

    kms: fix possible leak in pageflip code
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 7f6ce18..f49aa3d 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1654,7 +1654,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 	unsigned int pitch;
 	int i, old_fb_id;
 	uint32_t tiling_flags = 0;
-	int height;
+	int height, emitted = 0;
 	drmmode_flipdata_ptr flipdata;
 	drmmode_flipevtcarrier_ptr flipcarrier;
 
@@ -1708,6 +1708,8 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 		if (!flipcarrier) {
 			xf86DrvMsg(scrn->scrnIndex, X_WARNING,
 				   "flip queue: carrier alloc failed.\n");
+			if (emitted == 0)
+				free(flipdata);
 			goto error_undo;
 		}
 
@@ -1722,8 +1724,11 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 			xf86DrvMsg(scrn->scrnIndex, X_WARNING,
 				   "flip queue failed: %s\n", strerror(errno));
 			free(flipcarrier);
+			if (emitted == 0)
+				free(flipdata);
 			goto error_undo;
 		}
+		emitted++;
 	}
 
 	flipdata->old_fb_id = old_fb_id;

commit d29bab632e9ecccba518d4107d52620bf75eb1cf
Author: Ville Syrjala <syrjala@sci.fi>
Date:   Wed May 4 23:51:27 2011 +0300

    kms: Move flip_count and co. to a per swap structure
    
    If multiple drawables are doing page flipping, the global drmmode
    structure can't be used to keep per swap information. For example
    flip_count can increase prematurely due to another swap request,
    and then the previous swap request never gets completed, leading to a
    stuck client. Move the relevant pieces of data to a strucuture that
    gets allocated once per swap request and shared by all involved CRTCs.
    
    Signed-off-by: Ville Syrjala <syrjala@sci.fi>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index afa4c26..7f6ce18 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1331,31 +1331,34 @@ drmmode_flip_handler(int fd, unsigned int frame, unsigned int tv_sec,
 		     unsigned int tv_usec, void *event_data)
 {
 	drmmode_flipevtcarrier_ptr flipcarrier = event_data;
-	drmmode_ptr drmmode = flipcarrier->drmmode;
+	drmmode_flipdata_ptr flipdata = flipcarrier->flipdata;
+	drmmode_ptr drmmode = flipdata->drmmode;
 
 	/* Is this the event whose info shall be delivered to higher level? */
 	if (flipcarrier->dispatch_me) {
 		/* Yes: Cache msc, ust for later delivery. */
-		drmmode->fe_frame = frame;
-		drmmode->fe_tv_sec = tv_sec;
-		drmmode->fe_tv_usec = tv_usec;
+		flipdata->fe_frame = frame;
+		flipdata->fe_tv_sec = tv_sec;
+		flipdata->fe_tv_usec = tv_usec;
 	}
 	free(flipcarrier);
 
 	/* Last crtc completed flip? */
-	drmmode->flip_count--;
-	if (drmmode->flip_count > 0)
+	flipdata->flip_count--;
+	if (flipdata->flip_count > 0)
 		return;
 
 	/* Release framebuffer */
-	drmModeRmFB(drmmode->fd, drmmode->old_fb_id);
+	drmModeRmFB(drmmode->fd, flipdata->old_fb_id);
 
-	if (drmmode->event_data == NULL)
+	if (flipdata->event_data == NULL)
 		return;
 
 	/* Deliver cached msc, ust from reference crtc to flip event handler */
-	radeon_dri2_flip_event_handler(drmmode->fe_frame, drmmode->fe_tv_sec,
-				       drmmode->fe_tv_usec, drmmode->event_data);
+	radeon_dri2_flip_event_handler(flipdata->fe_frame, flipdata->fe_tv_sec,
+				       flipdata->fe_tv_usec, flipdata->event_data);
+
+	free(flipdata);
 }
 
 
@@ -1399,12 +1402,10 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp)
 
 	xf86InitialConfiguration(pScrn, TRUE);
 
-	drmmode->flip_count = 0;
 	drmmode->event_context.version = DRM_EVENT_CONTEXT_VERSION;
 	drmmode->event_context.vblank_handler = drmmode_vblank_handler;
 	drmmode->event_context.page_flip_handler = drmmode_flip_handler;
 	if (!pRADEONEnt->fd_wakeup_registered && info->dri->pKernelDRMVersion->version_minor >= 4) {
-		drmmode->flip_count = 0;
 		AddGeneralSocket(drmmode->fd);
 		RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
 				drm_wakeup_handler, drmmode);
@@ -1654,6 +1655,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 	int i, old_fb_id;
 	uint32_t tiling_flags = 0;
 	int height;
+	drmmode_flipdata_ptr flipdata;
 	drmmode_flipevtcarrier_ptr flipcarrier;
 
 	if (info->allowColorTiling) {
@@ -1676,6 +1678,12 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 			 new_front->handle, &drmmode->fb_id))
 		goto error_out;
 
+        flipdata = calloc(1, sizeof(drmmode_flipdata_rec));
+        if (!flipdata) {
+             xf86DrvMsg(scrn->scrnIndex, X_WARNING,
+                        "flip queue: data alloc failed.\n");
+             goto error_undo;
+        }
 	/*
 	 * Queue flips on all enabled CRTCs
 	 * Note that if/when we get per-CRTC buffers, we'll have to update this.
@@ -1685,16 +1693,15 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 	 * Also, flips queued on disabled or incorrectly configured displays
 	 * may never complete; this is a configuration error.
 	 */
-	drmmode->fe_frame = 0;
-	drmmode->fe_tv_sec = 0;
-	drmmode->fe_tv_usec = 0;
+
+        flipdata->event_data = data;
+        flipdata->drmmode = drmmode;
 
 	for (i = 0; i < config->num_crtc; i++) {
 		if (!config->crtc[i]->enabled)
 			continue;
 
-		drmmode->event_data = data;
-		drmmode->flip_count++;
+		flipdata->flip_count++;
 		drmmode_crtc = config->crtc[i]->driver_private;
 
 		flipcarrier = calloc(1, sizeof(drmmode_flipevtcarrier_rec));
@@ -1708,7 +1715,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 		 * completion event. All other crtc's events will be discarded.
 		 */
 		flipcarrier->dispatch_me = (drmmode_crtc->hw_id == ref_crtc_hw_id);
-		flipcarrier->drmmode = drmmode;
+		flipcarrier->flipdata = flipdata;
 
 		if (drmModePageFlip(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
 				    drmmode->fb_id, DRM_MODE_PAGE_FLIP_EVENT, flipcarrier)) {
@@ -1719,7 +1726,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *dat
 		}
 	}
 
-	drmmode->old_fb_id = old_fb_id;
+	flipdata->old_fb_id = old_fb_id;
 	return TRUE;
 
 error_undo:
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index 548907b..eb271f5 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -39,7 +39,6 @@
 typedef struct {
   int fd;
   unsigned fb_id;
-  unsigned old_fb_id;
   drmModeResPtr mode_res;
   drmModeFBPtr mode_fb;
   int cpp;
@@ -50,15 +49,20 @@ typedef struct {
   InputHandlerProc uevent_handler;
 #endif
   drmEventContext event_context;
+} drmmode_rec, *drmmode_ptr;
+
+typedef struct {
+  drmmode_ptr drmmode;
+  unsigned old_fb_id;
   int flip_count;
   void *event_data;
   unsigned int fe_frame;
   unsigned int fe_tv_sec;
   unsigned int fe_tv_usec;
-} drmmode_rec, *drmmode_ptr;
+} drmmode_flipdata_rec, *drmmode_flipdata_ptr;
 
 typedef struct {
-  drmmode_ptr drmmode;
+  drmmode_flipdata_ptr flipdata;
   Bool dispatch_me;
 } drmmode_flipevtcarrier_rec, *drmmode_flipevtcarrier_ptr;
 

commit 9493563c1ef4b51af0ee8a44cb4e7c5bb280347e
Author: Ville Syrjala <syrjala@sci.fi>
Date:   Wed May 4 23:51:26 2011 +0300

    dri2: Update front buffer pixmap and name before exchanging buffers
    
    Buffer exchange assumes that the front buffer pixmap and name
    information is accurate. That may not be the case eg. if the window
    has been (un)redirected since the buffer was created.
    
    Signed-off-by: Ville Syrjala <syrjala@sci.fi>

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 1133319..46573a7 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -662,12 +662,42 @@ radeon_dri2_schedule_flip(ScrnInfoPtr scrn, ClientPtr client,
 }
 
 static Bool
-can_exchange(ScrnInfoPtr pScrn,
+update_front(DrawablePtr draw, DRI2BufferPtr front)
+{
+    int r;
+    PixmapPtr pixmap;
+    struct dri2_buffer_priv *priv = front->driverPrivate;
+    struct radeon_exa_pixmap_priv *driver_priv;
+
+    if (draw->type == DRAWABLE_PIXMAP)
+	pixmap = (PixmapPtr)draw;
+    else
+	pixmap = (*draw->pScreen->GetWindowPixmap)((WindowPtr)draw);
+
+    pixmap->refcnt++;
+
+    exaMoveInPixmap(pixmap);
+    driver_priv = exaGetPixmapDriverPrivate(pixmap);
+    r = radeon_gem_get_kernel_name(driver_priv->bo, &front->name);
+    if (r) {
+	(*draw->pScreen->DestroyPixmap)(pixmap);
+	return FALSE;
+    }
+    (*draw->pScreen->DestroyPixmap)(priv->pixmap);
+    front->pitch = pixmap->devKind;
+    front->cpp = pixmap->drawable.bitsPerPixel / 8;
+    priv->pixmap = pixmap;
+
+    return TRUE;
+}
+
+static Bool
+can_exchange(ScrnInfoPtr pScrn, DrawablePtr draw,
 	     DRI2BufferPtr front, DRI2BufferPtr back)
 {
     struct dri2_buffer_priv *front_priv = front->driverPrivate;
     struct dri2_buffer_priv *back_priv = back->driverPrivate;
-    PixmapPtr front_pixmap = front_priv->pixmap;
+    PixmapPtr front_pixmap;
     PixmapPtr back_pixmap = back_priv->pixmap;
     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
     int i;
@@ -678,6 +708,11 @@ can_exchange(ScrnInfoPtr pScrn,
 	    return FALSE;
     }
 
+    if (!update_front(draw, front))
+	return FALSE;
+
+    front_pixmap = front_priv->pixmap;
+
     if (front_pixmap->drawable.width != back_pixmap->drawable.width)
 	return FALSE;
 
@@ -757,7 +792,7 @@ void radeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec,
     case DRI2_FLIP:
 	if (info->allowPageFlip &&
 	    DRI2CanFlip(drawable) &&
-	    can_exchange(scrn, event->front, event->back) &&
+	    can_exchange(scrn, drawable, event->front, event->back) &&
 	    radeon_dri2_schedule_flip(scrn,
 				      event->client,
 				      drawable,
@@ -772,7 +807,7 @@ void radeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec,
 	/* else fall through to exchange/blit */
     case DRI2_SWAP:
 	if (DRI2CanExchange(drawable) &&
-	    can_exchange(scrn, event->front, event->back)) {
+	    can_exchange(scrn, drawable, event->front, event->back)) {
 	    radeon_dri2_exchange_buffers(drawable, event->front, event->back);
 	    swap_type = DRI2_EXCHANGE_COMPLETE;
 	} else {
@@ -1134,7 +1169,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw,
     /* Flips need to be submitted one frame before */
     if (info->allowPageFlip &&
 	DRI2CanFlip(draw) &&
-	can_exchange(scrn, front, back)) {
+	can_exchange(scrn, draw, front, back)) {
 	swap_type = DRI2_FLIP;
 	flip = 1;
     }

commit 8c9266ed2da22a510243f9a952c14d4423f48a2b
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jul 15 10:44:57 2011 -0400

    radeon: add some new NI pci ids
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h
index 566e34a..ff7c91b 100644
--- a/src/ati_pciids_gen.h
+++ b/src/ati_pciids_gen.h
@@ -557,6 +557,7 @@
 #define PCI_CHIP_TURKS_6750 0x6750
 #define PCI_CHIP_TURKS_6758 0x6758
 #define PCI_CHIP_TURKS_6759 0x6759
+#define PCI_CHIP_TURKS_675F 0x675F
 #define PCI_CHIP_CAICOS_6760 0x6760
 #define PCI_CHIP_CAICOS_6761 0x6761
 #define PCI_CHIP_CAICOS_6762 0x6762
@@ -567,4 +568,5 @@
 #define PCI_CHIP_CAICOS_6767 0x6767
 #define PCI_CHIP_CAICOS_6768 0x6768
 #define PCI_CHIP_CAICOS_6770 0x6770
+#define PCI_CHIP_CAICOS_6778 0x6778
 #define PCI_CHIP_CAICOS_6779 0x6779
diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv
index 2d63029..131e56c 100644
--- a/src/pcidb/ati_pciids.csv
+++ b/src/pcidb/ati_pciids.csv
@@ -558,6 +558,7 @@
 "0x6750","TURKS_6750","TURKS",,,,,,"TURKS"
 "0x6758","TURKS_6758","TURKS",,,,,,"TURKS"
 "0x6759","TURKS_6759","TURKS",,,,,,"TURKS"
+"0x675F","TURKS_675F","TURKS",,,,,,"TURKS"
 "0x6760","CAICOS_6760","CAICOS",1,,,,,"CAICOS"
 "0x6761","CAICOS_6761","CAICOS",1,,,,,"CAICOS"
 "0x6762","CAICOS_6762","CAICOS",,,,,,"CAICOS"
@@ -568,4 +569,5 @@
 "0x6767","CAICOS_6767","CAICOS",,,,,,"CAICOS"
 "0x6768","CAICOS_6768","CAICOS",,,,,,"CAICOS"
 "0x6770","CAICOS_6770","CAICOS",,,,,,"CAICOS"
+"0x6778","CAICOS_6778","CAICOS",,,,,,"CAICOS"
 "0x6779","CAICOS_6779","CAICOS",,,,,,"CAICOS"
diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h
index 9c9295e..fcf6b33 100644
--- a/src/radeon_chipinfo_gen.h
+++ b/src/radeon_chipinfo_gen.h
@@ -477,6 +477,7 @@ static RADEONCardInfo RADEONCards[] = {
  { 0x6750, CHIP_FAMILY_TURKS, 0, 0, 0, 0, 0 },
  { 0x6758, CHIP_FAMILY_TURKS, 0, 0, 0, 0, 0 },
  { 0x6759, CHIP_FAMILY_TURKS, 0, 0, 0, 0, 0 },
+ { 0x675F, CHIP_FAMILY_TURKS, 0, 0, 0, 0, 0 },
  { 0x6760, CHIP_FAMILY_CAICOS, 1, 0, 0, 0, 0 },
  { 0x6761, CHIP_FAMILY_CAICOS, 1, 0, 0, 0, 0 },
  { 0x6762, CHIP_FAMILY_CAICOS, 0, 0, 0, 0, 0 },
@@ -487,5 +488,6 @@ static RADEONCardInfo RADEONCards[] = {
  { 0x6767, CHIP_FAMILY_CAICOS, 0, 0, 0, 0, 0 },
  { 0x6768, CHIP_FAMILY_CAICOS, 0, 0, 0, 0, 0 },
  { 0x6770, CHIP_FAMILY_CAICOS, 0, 0, 0, 0, 0 },
+ { 0x6778, CHIP_FAMILY_CAICOS, 0, 0, 0, 0, 0 },
  { 0x6779, CHIP_FAMILY_CAICOS, 0, 0, 0, 0, 0 },
 };
diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h
index 6b5018d..0303a5d 100644
--- a/src/radeon_chipset_gen.h
+++ b/src/radeon_chipset_gen.h
@@ -477,6 +477,7 @@ static SymTabRec RADEONChipsets[] = {
   { PCI_CHIP_TURKS_6750, "TURKS" },
   { PCI_CHIP_TURKS_6758, "TURKS" },
   { PCI_CHIP_TURKS_6759, "TURKS" },
+  { PCI_CHIP_TURKS_675F, "TURKS" },
   { PCI_CHIP_CAICOS_6760, "CAICOS" },
   { PCI_CHIP_CAICOS_6761, "CAICOS" },
   { PCI_CHIP_CAICOS_6762, "CAICOS" },
@@ -487,6 +488,7 @@ static SymTabRec RADEONChipsets[] = {
   { PCI_CHIP_CAICOS_6767, "CAICOS" },
   { PCI_CHIP_CAICOS_6768, "CAICOS" },
   { PCI_CHIP_CAICOS_6770, "CAICOS" },
+  { PCI_CHIP_CAICOS_6778, "CAICOS" },
   { PCI_CHIP_CAICOS_6779, "CAICOS" },
   { -1,                 NULL }
 };
diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h
index dca2c0c..549eaca 100644
--- a/src/radeon_pci_chipset_gen.h
+++ b/src/radeon_pci_chipset_gen.h
@@ -477,6 +477,7 @@ PciChipsets RADEONPciChipsets[] = {
  { PCI_CHIP_TURKS_6750, PCI_CHIP_TURKS_6750, RES_SHARED_VGA },
  { PCI_CHIP_TURKS_6758, PCI_CHIP_TURKS_6758, RES_SHARED_VGA },
  { PCI_CHIP_TURKS_6759, PCI_CHIP_TURKS_6759, RES_SHARED_VGA },
+ { PCI_CHIP_TURKS_675F, PCI_CHIP_TURKS_675F, RES_SHARED_VGA },
  { PCI_CHIP_CAICOS_6760, PCI_CHIP_CAICOS_6760, RES_SHARED_VGA },
  { PCI_CHIP_CAICOS_6761, PCI_CHIP_CAICOS_6761, RES_SHARED_VGA },
  { PCI_CHIP_CAICOS_6762, PCI_CHIP_CAICOS_6762, RES_SHARED_VGA },
@@ -487,6 +488,7 @@ PciChipsets RADEONPciChipsets[] = {
  { PCI_CHIP_CAICOS_6767, PCI_CHIP_CAICOS_6767, RES_SHARED_VGA },
  { PCI_CHIP_CAICOS_6768, PCI_CHIP_CAICOS_6768, RES_SHARED_VGA },
  { PCI_CHIP_CAICOS_6770, PCI_CHIP_CAICOS_6770, RES_SHARED_VGA },
+ { PCI_CHIP_CAICOS_6778, PCI_CHIP_CAICOS_6778, RES_SHARED_VGA },
  { PCI_CHIP_CAICOS_6779, PCI_CHIP_CAICOS_6779, RES_SHARED_VGA },
  { -1,                 -1,                 RES_UNDEFINED }
 };
diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h
index bf192c4..0739f81 100644
--- a/src/radeon_pci_device_match_gen.h
+++ b/src/radeon_pci_device_match_gen.h
@@ -477,6 +477,7 @@ static const struct pci_id_match radeon_device_match[] = {
  ATI_DEVICE_MATCH( PCI_CHIP_TURKS_6750, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_TURKS_6758, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_TURKS_6759, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_TURKS_675F, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6760, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6761, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6762, 0 ),
@@ -487,6 +488,7 @@ static const struct pci_id_match radeon_device_match[] = {
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6767, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6768, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6770, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6778, 0 ),
  ATI_DEVICE_MATCH( PCI_CHIP_CAICOS_6779, 0 ),
  { 0, 0, 0 }
 };

commit f59c3b294b0f715fc96e2bbe25893f2b31aa488b
Author: Christian König <deathsimple@vodafone.de>
Date:   Thu Jul 14 11:49:06 2011 +0200

    Register XvMC video decoding acceleration

diff --git a/src/Makefile.am b/src/Makefile.am
index 8d4cf17..dc77c02 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -93,7 +93,7 @@ radeon_drv_la_SOURCES = \
 	radeon_driver.c radeon_video.c radeon_bios.c radeon_mm_i2c.c \
 	radeon_vip.c radeon_misc.c radeon_probe.c \
 	legacy_crtc.c legacy_output.c \
-	radeon_textured_video.c radeon_pm.c \
+	radeon_textured_video.c radeon_xvmc.c radeon_pm.c \
 	radeon_crtc.c radeon_output.c radeon_modes.c radeon_tv.c \
 	$(RADEON_ATOMBIOS_SOURCES) radeon_atombios.c radeon_atomwrapper.c \
 	$(RADEON_DRI_SRCS) $(RADEON_EXA_SOURCES) atombios_output.c atombios_crtc.c \
diff --git a/src/radeon_video.c b/src/radeon_video.c
index 58e3920..edd6d54 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -315,6 +315,16 @@ void RADEONInitVideo(ScreenPtr pScreen)
     if(num_adaptors)
 	xf86XVScreenInit(pScreen, adaptors, num_adaptors);
 
+    if(texturedAdaptor) {
+	XF86MCAdaptorPtr xvmcAdaptor = RADEONCreateAdaptorXvMC(pScreen, texturedAdaptor->name);
+	if(xvmcAdaptor) {
+	    if(!xf86XvMCScreenInit(pScreen, 1, &xvmcAdaptor))
+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[XvMC] Failed to initialize extension.\n");
+	    else
+		xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[XvMC] Extension initialized.\n");
+	}
+    }
+
     if(newAdaptors)
 	free(newAdaptors);
 
diff --git a/src/radeon_video.h b/src/radeon_video.h
index 3a4a709..684cb9e 100644
--- a/src/radeon_video.h
+++ b/src/radeon_video.h
@@ -15,6 +15,8 @@
 
 #include "bicubic_table.h"
 
+#include <xf86xvmc.h>


Reply to: