xserver-xorg-video-ati: Changes to 'upstream-experimental'
configure.ac | 30 +++++--
man/radeon.man | 28 ++++--
src/ati_pciids_gen.h | 51 ++++++++++++
src/drmmode_display.c | 33 ++++----
src/evergreen_accel.c | 2
src/evergreen_exa.c | 20 +++-
src/evergreen_textured_videofuncs.c | 15 ++-
src/pcidb/ati_pciids.csv | 51 ++++++++++++
src/r600_exa.c | 5 -
src/radeon.h | 23 +++--
src/radeon_bo_helper.c | 2
src/radeon_chipinfo_gen.h | 51 ++++++++++++
src/radeon_chipset_gen.h | 51 ++++++++++++
src/radeon_dri2.c | 41 +++++-----
src/radeon_drm.h | 2
src/radeon_exa_funcs.c | 5 -
src/radeon_glamor.c | 42 ++++++++--
src/radeon_glamor.h | 4
src/radeon_kms.c | 147 +++++++++++++++++++++++++-----------
src/radeon_pci_chipset_gen.h | 51 ++++++++++++
src/radeon_pci_device_match_gen.h | 51 ++++++++++++
src/radeon_probe.c | 15 +++
src/radeon_probe.h | 11 ++
src/radeon_video.c | 9 +-
24 files changed, 607 insertions(+), 133 deletions(-)
New commits:
commit cc615d06db0332fc6e673b55632bcc7bf957b44b
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Wed Jun 4 16:58:53 2014 +0900
Rename Option "NoAccel" to "Accel"
Removes the need for a double negation when forcing acceleration on.
Note that this change is backwards compatible, as the option parser
automagically handles the 'No' prefix.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/man/radeon.man b/man/radeon.man
index 65b880c..802f6c2 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -225,12 +225,12 @@ are supported:
Selects software cursor. The default is
.B off.
.TP
-.BI "Option \*qNoAccel\*q \*q" boolean \*q
+.BI "Option \*qAccel\*q \*q" boolean \*q
Enables or disables all hardware acceleration.
.br
-The default is to
-.B enable
-hardware acceleration.
+The default is
+.B on
+except for HAWAII.
.TP
.BI "Option \*qZaphodHeads\*q \*q" string \*q
Specify the RandR output(s) to use with zaphod mode for a particular driver
diff --git a/src/radeon.h b/src/radeon.h
index 136a430..eac6ed5 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -135,7 +135,7 @@
#endif
typedef enum {
- OPTION_NOACCEL,
+ OPTION_ACCEL,
OPTION_SW_CURSOR,
OPTION_PAGE_FLIP,
OPTION_EXA_PIXMAPS,
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index ceaf575..707d0c7 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -59,7 +59,7 @@ extern SymTabRec RADEONChipsets[];
static Bool radeon_setup_kernel_mem(ScreenPtr pScreen);
const OptionInfoRec RADEONOptions_KMS[] = {
- { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_ACCEL, "Accel", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_PAGE_FLIP, "EnablePageFlip", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_COLOR_TILING, "ColorTiling", OPTV_BOOLEAN, {0}, FALSE },
@@ -499,8 +499,8 @@ static Bool RADEONPreInitAccel_KMS(ScrnInfoPtr pScrn)
info->is_fast_fb = TRUE;
}
- if (xf86ReturnOptValBool(info->Options, OPTION_NOACCEL,
- info->ChipFamily == CHIP_FAMILY_HAWAII) ||
+ if (!xf86ReturnOptValBool(info->Options, OPTION_ACCEL,
+ info->ChipFamily != CHIP_FAMILY_HAWAII) ||
(!RADEONIsAccelWorking(pScrn))) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"GPU accel disabled or not working, using shadowfb for KMS\n");
commit 851b2cf8714618843725f6d067915375485ade9d
Author: Adam Jackson <ajax@redhat.com>
Date: Wed May 21 09:34:32 2014 -0400
kms: Use own thunk function instead of shadowUpdatePackedWeak
I plan to delete the Weak functions from a future server.
Signed-off-by: Adam Jackson <ajax@redhat.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 5e052e4..ceaf575 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -212,6 +212,12 @@ radeonShadowWindow(ScreenPtr screen, CARD32 row, CARD32 offset, int mode,
return ((uint8_t *)info->front_bo->ptr + row * stride + offset);
}
+static void
+radeonUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)
+{
+ shadowUpdatePacked(pScreen, pBuf);
+}
+
static Bool RADEONCreateScreenResources_KMS(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
@@ -232,7 +238,7 @@ static Bool RADEONCreateScreenResources_KMS(ScreenPtr pScreen)
if (info->r600_shadow_fb) {
pixmap = pScreen->GetScreenPixmap(pScreen);
- if (!shadowAdd(pScreen, pixmap, shadowUpdatePackedWeak(),
+ if (!shadowAdd(pScreen, pixmap, radeonUpdatePacked,
radeonShadowWindow, 0, NULL))
return FALSE;
}
commit b2dba2906f0b2284f17f53fd5251ba0f03d52a8b
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Thu May 15 16:07:53 2014 +0900
Don't disable acceleration on >= SI on attempts to force EXA
Also make this case clear in the log file:
(WW) RADEON(0): EXA not supported, using glamor
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
index 4aea51d..210ddcf 100644
--- a/src/radeon_glamor.c
+++ b/src/radeon_glamor.c
@@ -90,8 +90,13 @@ radeon_glamor_pre_init(ScrnInfoPtr scrn)
if (s == NULL && info->ChipFamily < CHIP_FAMILY_TAHITI)
return FALSE;
- if (s && strcasecmp(s, "glamor") != 0)
- return FALSE;
+ if (s && strcasecmp(s, "glamor") != 0) {
+ if (info->ChipFamily >= CHIP_FAMILY_TAHITI)
+ xf86DrvMsg(scrn->scrnIndex, X_WARNING,
+ "EXA not supported, using glamor\n");
+ else
+ return FALSE;
+ }
if (info->ChipFamily < CHIP_FAMILY_R300) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
commit be1469cc23aba46daf3293b3d09c5f2e792e7f42
Author: Alex Deucher <alexander.deucher@amd.com>
Date: Fri May 2 17:48:07 2014 -0400
radeon: enable tiling for mullins
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index fb93f8a..5e052e4 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -889,13 +889,13 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
* with proper bit, in the meantime you need to set tiling option in
* xorg configuration files
*/
- info->ChipFamily <= CHIP_FAMILY_HAWAII &&
+ info->ChipFamily <= CHIP_FAMILY_MULLINS &&
!info->is_fast_fb;
/* 2D color tiling */
if (info->ChipFamily >= CHIP_FAMILY_R600) {
info->allowColorTiling2D = xf86ReturnOptValBool(info->Options, OPTION_COLOR_TILING_2D,
- info->ChipFamily <= CHIP_FAMILY_HAWAII);
+ info->ChipFamily <= CHIP_FAMILY_MULLINS);
}
if (info->ChipFamily >= CHIP_FAMILY_R600) {
commit 2ae8e4b8d12f5c9bab6655eb8cd3c5c1d5cfb10e
Author: Samuel Li <samuel.li@amd.com>
Date: Tue Nov 12 15:30:42 2013 -0500
radeon: add Mullins pci ids.
Signed-off-by: Samuel Li <samuel.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h
index eb57992..94c8fc8 100644
--- a/src/ati_pciids_gen.h
+++ b/src/ati_pciids_gen.h
@@ -722,6 +722,22 @@
#define PCI_CHIP_KABINI_983D 0x983D
#define PCI_CHIP_KABINI_983E 0x983E
#define PCI_CHIP_KABINI_983F 0x983F
+#define PCI_CHIP_MULLINS_9850 0x9850
+#define PCI_CHIP_MULLINS_9851 0x9851
+#define PCI_CHIP_MULLINS_9852 0x9852
+#define PCI_CHIP_MULLINS_9853 0x9853
+#define PCI_CHIP_MULLINS_9854 0x9854
+#define PCI_CHIP_MULLINS_9855 0x9855
+#define PCI_CHIP_MULLINS_9856 0x9856
+#define PCI_CHIP_MULLINS_9857 0x9857
+#define PCI_CHIP_MULLINS_9858 0x9858
+#define PCI_CHIP_MULLINS_9859 0x9859
+#define PCI_CHIP_MULLINS_985A 0x985A
+#define PCI_CHIP_MULLINS_985B 0x985B
+#define PCI_CHIP_MULLINS_985C 0x985C
+#define PCI_CHIP_MULLINS_985D 0x985D
+#define PCI_CHIP_MULLINS_985E 0x985E
+#define PCI_CHIP_MULLINS_985F 0x985F
#define PCI_CHIP_KAVERI_1304 0x1304
#define PCI_CHIP_KAVERI_1305 0x1305
#define PCI_CHIP_KAVERI_1306 0x1306
diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv
index 8469a2a..e334230 100644
--- a/src/pcidb/ati_pciids.csv
+++ b/src/pcidb/ati_pciids.csv
@@ -723,6 +723,22 @@
"0x983D","KABINI_983D","KABINI",,1,,,1,"KABINI"
"0x983E","KABINI_983E","KABINI",,1,,,1,"KABINI"
"0x983F","KABINI_983F","KABINI",,1,,,1,"KABINI"
+"0x9850","MULLINS_9850","MULLINS",1,1,,,1,"MULLINS"
+"0x9851","MULLINS_9851","MULLINS",1,1,,,1,"MULLINS"
+"0x9852","MULLINS_9852","MULLINS",1,1,,,1,"MULLINS"
+"0x9853","MULLINS_9853","MULLINS",1,1,,,1,"MULLINS"
+"0x9854","MULLINS_9854","MULLINS",1,1,,,1,"MULLINS"
+"0x9845","MULLINS_9855","MULLINS",1,1,,,1,"MULLINS"
+"0x9856","MULLINS_9856","MULLINS",1,1,,,1,"MULLINS"
+"0x9857","MULLINS_9857","MULLINS",1,1,,,1,"MULLINS"
+"0x9858","MULLINS_9858","MULLINS",1,1,,,1,"MULLINS"
+"0x9859","MULLINS_9859","MULLINS",1,1,,,1,"MULLINS"
+"0x985A","MULLINS_985A","MULLINS",1,1,,,1,"MULLINS"
+"0x985B","MULLINS_985B","MULLINS",1,1,,,1,"MULLINS"
+"0x985C","MULLINS_985C","MULLINS",1,1,,,1,"MULLINS"
+"0x985D","MULLINS_985D","MULLINS",1,1,,,1,"MULLINS"
+"0x985E","MULLINS_985E","MULLINS",1,1,,,1,"MULLINS"
+"0x985F","MULLINS_985F","MULLINS",1,1,,,1,"MULLINS"
"0x1304","KAVERI_1304","KAVERI",1,1,,,1,"KAVERI"
"0x1305","KAVERI_1305","KAVERI",,1,,,1,"KAVERI"
"0x1306","KAVERI_1306","KAVERI",1,1,,,1,"KAVERI"
diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h
index fc9474b..4f6e3bc 100644
--- a/src/radeon_chipinfo_gen.h
+++ b/src/radeon_chipinfo_gen.h
@@ -642,6 +642,22 @@ static RADEONCardInfo RADEONCards[] = {
{ 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 },
+ { 0x9850, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9851, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9852, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9853, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9854, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9855, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9856, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9857, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9858, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x9859, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x985A, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x985B, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x985C, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x985D, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x985E, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
+ { 0x985F, CHIP_FAMILY_MULLINS, 1, 1, 0, 0, 1 },
{ 0x1304, CHIP_FAMILY_KAVERI, 1, 1, 0, 0, 1 },
{ 0x1305, CHIP_FAMILY_KAVERI, 0, 1, 0, 0, 1 },
{ 0x1306, CHIP_FAMILY_KAVERI, 1, 1, 0, 0, 1 },
diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h
index afab6b0..03a413e 100644
--- a/src/radeon_chipset_gen.h
+++ b/src/radeon_chipset_gen.h
@@ -642,6 +642,22 @@ SymTabRec RADEONChipsets[] = {
{ PCI_CHIP_KABINI_983D, "KABINI" },
{ PCI_CHIP_KABINI_983E, "KABINI" },
{ PCI_CHIP_KABINI_983F, "KABINI" },
+ { PCI_CHIP_MULLINS_9850, "MULLINS" },
+ { PCI_CHIP_MULLINS_9851, "MULLINS" },
+ { PCI_CHIP_MULLINS_9852, "MULLINS" },
+ { PCI_CHIP_MULLINS_9853, "MULLINS" },
+ { PCI_CHIP_MULLINS_9854, "MULLINS" },
+ { PCI_CHIP_MULLINS_9855, "MULLINS" },
+ { PCI_CHIP_MULLINS_9856, "MULLINS" },
+ { PCI_CHIP_MULLINS_9857, "MULLINS" },
+ { PCI_CHIP_MULLINS_9858, "MULLINS" },
+ { PCI_CHIP_MULLINS_9859, "MULLINS" },
+ { PCI_CHIP_MULLINS_985A, "MULLINS" },
+ { PCI_CHIP_MULLINS_985B, "MULLINS" },
+ { PCI_CHIP_MULLINS_985C, "MULLINS" },
+ { PCI_CHIP_MULLINS_985D, "MULLINS" },
+ { PCI_CHIP_MULLINS_985E, "MULLINS" },
+ { PCI_CHIP_MULLINS_985F, "MULLINS" },
{ PCI_CHIP_KAVERI_1304, "KAVERI" },
{ PCI_CHIP_KAVERI_1305, "KAVERI" },
{ PCI_CHIP_KAVERI_1306, "KAVERI" },
diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h
index da4440b..a9b186c 100644
--- a/src/radeon_pci_chipset_gen.h
+++ b/src/radeon_pci_chipset_gen.h
@@ -642,6 +642,22 @@ static PciChipsets RADEONPciChipsets[] = {
{ 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 },
+ { PCI_CHIP_MULLINS_9850, PCI_CHIP_MULLINS_9850, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9851, PCI_CHIP_MULLINS_9851, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9852, PCI_CHIP_MULLINS_9852, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9853, PCI_CHIP_MULLINS_9853, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9854, PCI_CHIP_MULLINS_9854, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9855, PCI_CHIP_MULLINS_9855, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9856, PCI_CHIP_MULLINS_9856, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9857, PCI_CHIP_MULLINS_9857, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9858, PCI_CHIP_MULLINS_9858, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_9859, PCI_CHIP_MULLINS_9859, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_985A, PCI_CHIP_MULLINS_985A, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_985B, PCI_CHIP_MULLINS_985B, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_985C, PCI_CHIP_MULLINS_985C, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_985D, PCI_CHIP_MULLINS_985D, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_985E, PCI_CHIP_MULLINS_985E, RES_SHARED_VGA },
+ { PCI_CHIP_MULLINS_985F, PCI_CHIP_MULLINS_985F, RES_SHARED_VGA },
{ PCI_CHIP_KAVERI_1304, PCI_CHIP_KAVERI_1304, RES_SHARED_VGA },
{ PCI_CHIP_KAVERI_1305, PCI_CHIP_KAVERI_1305, RES_SHARED_VGA },
{ PCI_CHIP_KAVERI_1306, PCI_CHIP_KAVERI_1306, RES_SHARED_VGA },
diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h
index d4b3763..a73d9c1 100644
--- a/src/radeon_pci_device_match_gen.h
+++ b/src/radeon_pci_device_match_gen.h
@@ -642,6 +642,22 @@ static const struct pci_id_match radeon_device_match[] = {
ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983D, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983E, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_KABINI_983F, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9850, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9851, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9852, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9853, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9854, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9855, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9856, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9857, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9858, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_9859, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_985A, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_985B, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_985C, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_985D, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_985E, 0 ),
+ ATI_DEVICE_MATCH( PCI_CHIP_MULLINS_985F, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_KAVERI_1304, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_KAVERI_1305, 0 ),
ATI_DEVICE_MATCH( PCI_CHIP_KAVERI_1306, 0 ),
commit 5c86a3461597647224c33d5190b4531aeeb2655f
Author: Samuel Li <samuel.li@amd.com>
Date: Thu Apr 17 15:17:28 2014 -0400
radeon: add support for Mullins.
Signed-off-by: Samuel Li <samuel.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
diff --git a/man/radeon.man b/man/radeon.man
index f6a825d..65b880c 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -208,6 +208,9 @@ KABINI APUs
.TP 12
.B HAWAII
Radeon R9 series
+.TP 12
+.B MULLINS
+MULLINS APUs
.PD
.SH CONFIGURATION DETAILS
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 9500189..3fe4644 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -116,6 +116,7 @@ typedef enum {
CHIP_FAMILY_KAVERI,
CHIP_FAMILY_KABINI,
CHIP_FAMILY_HAWAII,
+ CHIP_FAMILY_MULLINS,
CHIP_FAMILY_LAST
} RADEONChipFamily;
commit fdb90ffc50acbb7d5ba0598470f9feeac6ce55fc
Author: Alex Deucher <alexander.deucher@amd.com>
Date: Fri May 2 17:45:45 2014 -0400
radeon: require libdrm_radeon 2.4.54 for mullins support
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/configure.ac b/configure.ac
index 9086bb6..dc2a656 100644
--- a/configure.ac
+++ b/configure.ac
@@ -71,7 +71,7 @@ XORG_DRIVER_CHECK_EXT(XV, videoproto)
XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
# Checks for libraries.
-PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.51])
+PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.54])
PKG_CHECK_MODULES(LIBDRM_RADEON, [libdrm_radeon])
# Obtain compiler/linker options for the driver dependencies
commit 06e3c8c53ef4bd159f5864eabf726438d008b49a
Author: Dave Airlie <airlied@redhat.com>
Date: Wed Apr 23 13:39:42 2014 +1000
radeon: fix use-after-free in modesetting cleanup
noticed while looking at something else.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 02bdf9e..bd8e701 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -958,8 +958,8 @@ drmmode_output_destroy(xf86OutputPtr output)
}
for (i = 0; i < drmmode_output->mode_output->count_encoders; i++) {
drmModeFreeEncoder(drmmode_output->mode_encoders[i]);
- free(drmmode_output->mode_encoders);
}
+ free(drmmode_output->mode_encoders);
free(drmmode_output->props);
drmModeFreeConnector(drmmode_output->mode_output);
free(drmmode_output);
commit dbac18c361f9e514ecb40d0617f9d68b65a542e0
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Mon Apr 28 17:51:56 2014 +0900
Revert "Adapt to load_cursor_argb signature change in xserver 1.15.99.902"
This reverts commit 48d3dbc8a0d3bfde88f46e402e530438f9317715.
xserver Git has been updated to be backwards compatible with the
previous API.
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index fc99128..02bdf9e 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -590,11 +590,7 @@ drmmode_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
drmModeMoveCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, x, y);
}
-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,902,0)
-static Bool
-#else
static void
-#endif
drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
{
ScrnInfoPtr pScrn = crtc->scrn;
@@ -609,10 +605,6 @@ drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
for (i = 0; i < cursor_size; i++)
ptr[i] = cpu_to_le32(image[i]);
-
-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,902,0)
- return TRUE;
-#endif
}
commit c84230d686c078aac1dc98d82153f8b02521b2e1
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Fri Apr 25 09:17:51 2014 +0900
dri2: Handle PRIME for source buffer as well in radeon_dri2_copy_region2
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77810
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index d47b035..9a9918b 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -409,7 +409,14 @@ radeon_dri2_copy_region2(ScreenPtr pScreen,
dst_drawable = &dst_private->pixmap->drawable;
if (src_private->attachment == DRI2BufferFrontLeft) {
- src_drawable = drawable;
+#ifdef USE_DRI2_PRIME
+ if (drawable->pScreen != pScreen) {
+ src_drawable = DRI2UpdatePrime(drawable, src_buffer);
+ if (!src_drawable)
+ return;
+ } else
+#endif
+ src_drawable = drawable;
}
if (dst_private->attachment == DRI2BufferFrontLeft) {
#ifdef USE_DRI2_PRIME
commit 48d3dbc8a0d3bfde88f46e402e530438f9317715
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Tue Apr 15 17:45:35 2014 +0900
Adapt to load_cursor_argb signature change in xserver 1.15.99.902
Apart from the compiler warning below, not doing this may result in
accidentally using software cursors.
../../src/drmmode_display.c:808:5: warning: initialization from incompatible pointer type [enabled by default]
.load_cursor_argb = drmmode_load_cursor_argb,
^
../../src/drmmode_display.c:808:5: warning: (near initialization for 'drmmode_crtc_funcs.load_cursor_argb') [enabled by default]
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 02bdf9e..fc99128 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -590,7 +590,11 @@ drmmode_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
drmModeMoveCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, x, y);
}
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,902,0)
+static Bool
+#else
static void
+#endif
drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
{
ScrnInfoPtr pScrn = crtc->scrn;
@@ -605,6 +609,10 @@ drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
for (i = 0; i < cursor_size; i++)
ptr[i] = cpu_to_le32(image[i]);
+
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,902,0)
+ return TRUE;
+#endif
}
commit 409786a8f780d78a83bf0bddea5d37117ff6fa39
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Thu Apr 10 11:43:04 2014 +0900
glamor: Fix test for creating shared pixmaps
The pixmap usage hint is not a bitmask in general. The test for
CREATE_PIXMAP_USAGE_SHARED was incorrectly triggering for a glamor internal
usage hint being added in the xserver tree.
Tested-by: Ed Tomlinson <edtoml@gmail.com>
diff --git a/src/radeon.h b/src/radeon.h
index f364b67..136a430 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -794,6 +794,13 @@ enum {
RADEON_CREATE_PIXMAP_SZBUFFER = 0x80000000, /* for eg */
};
+#define RADEON_CREATE_PIXMAP_TILING_FLAGS \
+ (RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE | \
+ RADEON_CREATE_PIXMAP_TILING_MACRO | \
+ RADEON_CREATE_PIXMAP_TILING_MICRO | \
+ RADEON_CREATE_PIXMAP_DEPTH | \
+ RADEON_CREATE_PIXMAP_SZBUFFER)
+
/* Compute log base 2 of val. */
static __inline__ int
diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
index 7f1247c..4aea51d 100644
--- a/src/radeon_glamor.c
+++ b/src/radeon_glamor.c
@@ -172,12 +172,14 @@ Bool radeon_glamor_pixmap_is_offscreen(PixmapPtr pixmap)
return priv && priv->bo;
}
-#ifdef CREATE_PIXMAP_USAGE_SHARED
-#define RADEON_CREATE_PIXMAP_SHARED (CREATE_PIXMAP_USAGE_SHARED | RADEON_CREATE_PIXMAP_DRI2)
-#else
-#define RADEON_CREATE_PIXMAP_SHARED RADEON_CREATE_PIXMAP_DRI2
+#ifndef CREATE_PIXMAP_USAGE_SHARED
+#define CREATE_PIXMAP_USAGE_SHARED RADEON_CREATE_PIXMAP_DRI2
#endif
+#define RADEON_CREATE_PIXMAP_SHARED(usage) \
+ (((usage) & ~RADEON_CREATE_PIXMAP_TILING_FLAGS) == RADEON_CREATE_PIXMAP_DRI2 || \
+ (usage) == CREATE_PIXMAP_USAGE_SHARED)
+
static PixmapPtr
radeon_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth,
unsigned usage)
@@ -186,7 +188,7 @@ radeon_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth,
struct radeon_pixmap *priv;
PixmapPtr pixmap, new_pixmap = NULL;
- if (!(usage & RADEON_CREATE_PIXMAP_SHARED)) {
+ if (!RADEON_CREATE_PIXMAP_SHARED(usage)) {
pixmap = glamor_create_pixmap(screen, w, h, depth, usage);
if (pixmap)
return pixmap;
@@ -229,7 +231,7 @@ radeon_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth,
return pixmap;
fallback_glamor:
- if (usage & RADEON_CREATE_PIXMAP_SHARED) {
+ if (RADEON_CREATE_PIXMAP_SHARED(usage)) {
/* XXX need further work to handle the DRI2 failure case.
* Glamor don't know how to handle a BO only pixmap. Put
* a warning indicator here.
commit aecf1c4e5f4718adcfb85836830d065d3f4f97a5
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Thu Apr 10 15:10:56 2014 +0900
dri2: Fix conflicting CreatePixmap usage flag definitions
RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE was the same as
RADEON_CREATE_PIXMAP_DRI2.
Disambiguate the definitions and rearrange them to try and prevent this
from happening again.
Tested-by: Ed Tomlinson <edtoml@gmail.com>
diff --git a/src/radeon.h b/src/radeon.h
index f1817e7..f364b67 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -786,12 +786,12 @@ static __inline__ void RADEON_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn)
}
enum {
- RADEON_CREATE_PIXMAP_DRI2 = 0x08000000,
- RADEON_CREATE_PIXMAP_TILING_MACRO = 0x10000000,
- RADEON_CREATE_PIXMAP_TILING_MICRO = 0x20000000,
- RADEON_CREATE_PIXMAP_DEPTH = 0x40000000, /* for r200 */
- RADEON_CREATE_PIXMAP_SZBUFFER = 0x80000000, /* for eg */
- RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE = 0x8000000,
+ RADEON_CREATE_PIXMAP_DRI2 = 0x04000000,
+ RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE = 0x08000000,
+ RADEON_CREATE_PIXMAP_TILING_MACRO = 0x10000000,
+ RADEON_CREATE_PIXMAP_TILING_MICRO = 0x20000000,
+ RADEON_CREATE_PIXMAP_DEPTH = 0x40000000, /* for r200 */
+ RADEON_CREATE_PIXMAP_SZBUFFER = 0x80000000, /* for eg */
};
commit b50da3b96c212086cb58501dbe988d64f1f35b6d
Author: Hans de Goede <hdegoede@redhat.com>
Date: Fri Apr 11 09:44:37 2014 +0200
Fix building on older servers without xf86platformBus.h
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index f7f0a0d..fb93f8a 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -593,7 +593,7 @@ static int radeon_get_drm_master_fd(ScrnInfoPtr pScrn)
char *busid;
int fd;
-#if defined(ODEV_ATTRIB_FD)
+#ifdef XF86_PDEV_SERVER_FD
if (pRADEONEnt->platform_dev) {
fd = xf86_get_platform_device_int_attrib(pRADEONEnt->platform_dev,
ODEV_ATTRIB_FD, -1);
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 4f5e645..9500189 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -37,12 +37,16 @@
#define _RADEON_PROBE_H_ 1
#include <stdint.h>
+#include "xorg-server.h"
#include "xf86str.h"
#include "xf86DDC.h"
#include "randrstr.h"
#include "xf86Crtc.h"
+
+#ifdef XSERVER_PLATFORM_BUS
#include "xf86platformBus.h"
+#endif
#include "compat-api.h"
#include "exa.h"
@@ -137,7 +141,9 @@ typedef struct
int fd_ref;
unsigned long fd_wakeup_registered; /* server generation for which fd has been registered for wakeup handling */
int fd_wakeup_ref;
+#ifdef XSERVER_PLATFORM_BUS
struct xf86_platform_device *platform_dev;
+#endif
} RADEONEntRec, *RADEONEntPtr;
extern const OptionInfoRec *RADEONOptionsWeak(void);
commit ed0cfbb4fe77146b0b38f777bc28f3a4ea6da07f
Author: Hans de Goede <hdegoede@redhat.com>
Date: Fri Mar 7 13:27:30 2014 +0100
Add support for server managed fds
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index c0f9762..f7f0a0d 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -180,7 +180,11 @@ static void RADEONFreeRec(ScrnInfoPtr pScrn)
pRADEONEnt = pPriv->ptr;
pRADEONEnt->fd_ref--;
if (!pRADEONEnt->fd_ref) {
- drmClose(pRADEONEnt->fd);
+#ifdef XF86_PDEV_SERVER_FD
+ if (!(pRADEONEnt->platform_dev &&
+ pRADEONEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))
+#endif
+ drmClose(pRADEONEnt->fd);
pRADEONEnt->fd = 0;
}
}
@@ -584,10 +588,20 @@ static Bool RADEONPreInitChipType_KMS(ScrnInfoPtr pScrn)
static int radeon_get_drm_master_fd(ScrnInfoPtr pScrn)
{
RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
struct pci_device *dev = info->PciInfo;
char *busid;
int fd;
+#if defined(ODEV_ATTRIB_FD)
+ if (pRADEONEnt->platform_dev) {
+ fd = xf86_get_platform_device_int_attrib(pRADEONEnt->platform_dev,
+ ODEV_ATTRIB_FD, -1);
+ if (fd != -1)
+ return fd;
+ }
+#endif
+
#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d",
dev->domain, dev->bus, dev->dev, dev->func);
@@ -1107,6 +1121,39 @@ static Bool RADEONSaveScreen_KMS(ScreenPtr pScreen, int mode)
return TRUE;
}
+static Bool radeon_set_drm_master(ScrnInfoPtr pScrn)
+{
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+ int err;
+
+#ifdef XF86_PDEV_SERVER_FD
+ if (pRADEONEnt->platform_dev &&
+ (pRADEONEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))
+ return TRUE;
+#endif
+
+ err = drmSetMaster(info->dri2.drm_fd);
+ if (err)
+ ErrorF("Unable to retrieve master\n");
+
+ return err == 0;
+}
+
+static void radeon_drop_drm_master(ScrnInfoPtr pScrn)
+{
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+
+#ifdef XF86_PDEV_SERVER_FD
+ if (pRADEONEnt->platform_dev &&
+ (pRADEONEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))
+ return;
+#endif
+
+ drmDropMaster(info->dri2.drm_fd);
+}
+
/* Called at the end of each server generation. Restore the original
* text mode, unmap video memory, and unwrap and call the saved
* CloseScreen function.
@@ -1133,7 +1180,7 @@ static Bool RADEONCloseScreen_KMS(CLOSE_SCREEN_ARGS_DECL)
if (info->accel_state->use_vbos)
radeon_vbo_free_lists(pScrn);
- drmDropMaster(info->dri2.drm_fd);
+ radeon_drop_drm_master(pScrn);
drmmode_fini(pScrn, &info->drmmode);
if (info->dri2.enabled)
@@ -1168,7 +1215,6 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
int subPixelOrder = SubPixelUnknown;
char* s;
void *front_ptr;
- int ret;
pScrn->fbOffset = 0;
@@ -1179,11 +1225,9 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
pScrn->defaultVisual)) return FALSE;
miSetPixmapDepths ();
- ret = drmSetMaster(info->dri2.drm_fd);
- if (ret) {
- ErrorF("Unable to retrieve master\n");
+ if (!radeon_set_drm_master(pScrn))
return FALSE;
- }
+
info->directRenderingEnabled = FALSE;
if (info->r600_shadow_fb == FALSE)
info->directRenderingEnabled = radeon_dri2_screen_init(pScreen);
@@ -1396,15 +1440,12 @@ Bool RADEONEnterVT_KMS(VT_FUNC_ARGS_DECL)
{
SCRN_INFO_PTR(arg);
RADEONInfoPtr info = RADEONPTR(pScrn);
- int ret;
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
"RADEONEnterVT_KMS\n");
+ radeon_set_drm_master(pScrn);
- ret = drmSetMaster(info->dri2.drm_fd);
- if (ret)
- ErrorF("Unable to retrieve master\n");
info->accel_state->XInited3D = FALSE;
info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN;
@@ -1425,7 +1466,7 @@ void RADEONLeaveVT_KMS(VT_FUNC_ARGS_DECL)
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
"RADEONLeaveVT_KMS\n");
- drmDropMaster(info->dri2.drm_fd);
+ radeon_drop_drm_master(pScrn);
xf86RotateFreeShadow(pScrn);
diff --git a/src/radeon_probe.c b/src/radeon_probe.c
index 2d3c58e..ad1e96e 100644
--- a/src/radeon_probe.c
+++ b/src/radeon_probe.c
@@ -202,6 +202,10 @@ RADEONDriverFunc(ScrnInfoPtr scrn, xorgDriverFuncOp op, void *data)
flag = (CARD32 *)data;
(*flag) = 0;
return TRUE;
+#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,15,99,0,0)
+ case SUPPORTS_SERVER_FDS:
+ return TRUE;
+#endif
default:
return FALSE;
}
@@ -272,6 +276,7 @@ radeon_platform_probe(DriverPtr pDriver,
pRADEONEnt = pPriv->ptr;
pRADEONEnt->HasSecondary = TRUE;
}
+ pRADEONEnt->platform_dev = dev;
}
free(pEnt);
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index cea6695..4f5e645 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -42,6 +42,7 @@
#include "randrstr.h"
#include "xf86Crtc.h"
+#include "xf86platformBus.h"
#include "compat-api.h"
#include "exa.h"
@@ -136,6 +137,7 @@ typedef struct
int fd_ref;
unsigned long fd_wakeup_registered; /* server generation for which fd has been registered for wakeup handling */
int fd_wakeup_ref;
+ struct xf86_platform_device *platform_dev;
} RADEONEntRec, *RADEONEntPtr;
extern const OptionInfoRec *RADEONOptionsWeak(void);
commit 3d7861fe112f25874319d4cdc12b745fbcd359cf
Author: Hans de Goede <hdegoede@redhat.com>
Date: Mon Mar 17 10:38:13 2014 +0100
Add radeon_get_drm_master_fd helper function
This is a preparation patch for adding server-managed-fd support without it
turning into a goto fest.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 16a1b5f..c0f9762 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -581,23 +581,12 @@ static Bool RADEONPreInitChipType_KMS(ScrnInfoPtr pScrn)
return TRUE;
}
-static Bool radeon_open_drm_master(ScrnInfoPtr pScrn)
+static int radeon_get_drm_master_fd(ScrnInfoPtr pScrn)
{
RADEONInfoPtr info = RADEONPTR(pScrn);
- RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
struct pci_device *dev = info->PciInfo;
char *busid;
- drmSetVersion sv;
- int err;
-
- if (pRADEONEnt->fd) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- " reusing fd for second head\n");
-
- info->drmmode.fd = info->dri2.drm_fd = pRADEONEnt->fd;
- pRADEONEnt->fd_ref++;
- return TRUE;
- }
+ int fd;
#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d",
@@ -607,16 +596,35 @@ static Bool radeon_open_drm_master(ScrnInfoPtr pScrn)
dev->domain, dev->bus, dev->dev, dev->func);
#endif
- info->dri2.drm_fd = drmOpen(NULL, busid);
- if (info->dri2.drm_fd == -1) {
-
+ fd = drmOpen(NULL, busid);
+ if (fd == -1)
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"[drm] Failed to open DRM device for %s: %s\n",
busid, strerror(errno));
- free(busid);
- return FALSE;
- }
+
free(busid);
+ return fd;
+}
+
+static Bool radeon_open_drm_master(ScrnInfoPtr pScrn)
+{
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+ drmSetVersion sv;
+ int err;
+
+ if (pRADEONEnt->fd) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ " reusing fd for second head\n");
+
+ info->drmmode.fd = info->dri2.drm_fd = pRADEONEnt->fd;
+ pRADEONEnt->fd_ref++;
+ return TRUE;
+ }
+
+ info->dri2.drm_fd = radeon_get_drm_master_fd(pScrn);
+ if (info->dri2.drm_fd == -1)
+ return FALSE;
Reply to: