xserver-xorg-video-nouveau: Changes to 'upstream-experimental'
configure.ac | 2 +-
src/drmmode_display.c | 17 ++++++++++++++++-
src/nouveau_copy.c | 2 ++
src/nouveau_exa.c | 1 +
src/nv_accel_common.c | 1 +
src/nv_driver.c | 4 ++++
src/nv_type.h | 1 +
src/nvc0_accel.c | 6 ++++++
8 files changed, 32 insertions(+), 2 deletions(-)
New commits:
commit a7c190e0c230ed2d5e047ed6aba12d71a4866950
Author: Lyude <lyude@redhat.com>
Date: Fri Apr 21 14:41:17 2017 -0400
Bump version to 1.0.15
Signed-off-by: Lyude <lyude@redhat.com>
diff --git a/configure.ac b/configure.ac
index e494300..0b01d3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ([2.60])
AC_INIT([xf86-video-nouveau],
- [1.0.14],
+ [1.0.15],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-nouveau])
commit 3047e99a641d2b8720371aae292750206f5e91fc
Author: Ben Skeggs <bskeggs@redhat.com>
Date: Thu Apr 20 15:57:33 2017 +1000
fix null pointer deref when building against >=libdrm 2.4.78
A new pointer got added to drmEventContext.
As a result of us both:
- Setting drmEventContext.version to "latest" AND
- Not zeroing the struct
We end up thwarting libdrm's compatibility checks, resulting in
libdrm choosing to call through an invalid pointer.
Fix this by zeroing the struct.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index ae29d9a..2b71c9c 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1433,7 +1433,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
unsigned int crtcs_needed = 0;
int crtcshift;
- drmmode = xnfalloc(sizeof *drmmode);
+ drmmode = xnfcalloc(sizeof(*drmmode), 1);
drmmode->fd = fd;
drmmode->fb_id = 0;
commit e9418e434311336e905b70553a5ed740838d90ad
Author: Mariusz Bialonczyk <manio@skyboo.net>
Date: Wed Mar 29 22:07:50 2017 +0200
Do not register hotplug without RandR
When using Xinerama, RandR is automatically disabled, and calling RR
routines will trigger an assert() because the RR keys/resources are
not set, leading to an Xserver abort.
Hotplug makes little sense without RandR, so no need to install a
udev monitor if RandR is not available.
Ported from xf86-video-intel commit
1a489142c8e6a4828348cc9afbd0f430d3b1e2d8, original work by:
Chris Wilson <chris@chris-wilson.co.uk>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98383
Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index dd9fa27..ae29d9a 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1556,6 +1556,15 @@ drmmode_udev_notify(int fd, int notify, void *data)
}
#endif
+static bool has_randr(void)
+{
+#if HAS_DIXREGISTERPRIVATEKEY
+ return dixPrivateKeyRegistered(rrPrivKey);
+#else
+ return *rrPrivKey;
+#endif
+}
+
static void
drmmode_uevent_init(ScrnInfoPtr scrn)
{
@@ -1564,6 +1573,12 @@ drmmode_uevent_init(ScrnInfoPtr scrn)
struct udev *u;
struct udev_monitor *mon;
+ /* RandR will be disabled if Xinerama is active, and so generating
+ * RR hotplug events is then forbidden.
+ */
+ if (!has_randr())
+ return;
+
u = udev_new();
if (!u)
return;
commit e472b47d15634a864c8c981ed588d882aceaf26b
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date: Tue Mar 21 21:25:33 2017 -0400
Add Pascal family support, identical to Maxwell
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Tested-by: Lyude <lyude@redhat.com>
diff --git a/src/nouveau_copy.c b/src/nouveau_copy.c
index 7118a7a..7fbcc87 100644
--- a/src/nouveau_copy.c
+++ b/src/nouveau_copy.c
@@ -42,6 +42,7 @@ nouveau_copy_init(ScreenPtr pScreen)
int engine;
Bool (*init)(NVPtr);
} methods[] = {
+ { 0xc1b5, 0, nouveau_copya0b5_init },
{ 0xc0b5, 0, nouveau_copya0b5_init },
{ 0xb0b5, 0, nouveau_copya0b5_init },
{ 0xa0b5, 0, nouveau_copya0b5_init },
@@ -84,6 +85,7 @@ nouveau_copy_init(ScreenPtr pScreen)
break;
case NV_KEPLER:
case NV_MAXWELL:
+ case NV_PASCAL:
ret = nouveau_object_new(&pNv->dev->object, 0,
NOUVEAU_FIFO_CHANNEL_CLASS,
&(struct nve0_fifo) {
diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c
index 0f02b99..55df6f8 100644
--- a/src/nouveau_exa.c
+++ b/src/nouveau_exa.c
@@ -515,6 +515,7 @@ nouveau_exa_init(ScreenPtr pScreen)
case NV_FERMI:
case NV_KEPLER:
case NV_MAXWELL:
+ case NV_PASCAL:
exa->CheckComposite = NVC0EXACheckComposite;
exa->PrepareComposite = NVC0EXAPrepareComposite;
exa->Composite = NVC0EXAComposite;
diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c
index 5d12dd8..5561708 100644
--- a/src/nv_accel_common.c
+++ b/src/nv_accel_common.c
@@ -723,6 +723,7 @@ NVAccelCommonInit(ScrnInfoPtr pScrn)
case NV_FERMI:
case NV_KEPLER:
case NV_MAXWELL:
+ case NV_PASCAL:
INIT_CONTEXT_OBJECT(3D_NVC0);
break;
case NV_TESLA:
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 61940a8..32062eb 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -391,6 +391,7 @@ NVHasKMS(struct pci_device *pci_dev, struct xf86_platform_device *platform_dev)
case 0x100:
case 0x110:
case 0x120:
+ case 0x130:
break;
default:
xf86DrvMsg(-1, X_ERROR, "Unknown chipset: NV%02X\n", chipset);
@@ -945,6 +946,9 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
case 0x120:
pNv->Architecture = NV_MAXWELL;
break;
+ case 0x130:
+ pNv->Architecture = NV_PASCAL;
+ break;
default:
return FALSE;
}
diff --git a/src/nv_type.h b/src/nv_type.h
index d7bb4f4..6dc5793 100644
--- a/src/nv_type.h
+++ b/src/nv_type.h
@@ -23,6 +23,7 @@
#define NV_FERMI 0xc0
#define NV_KEPLER 0xe0
#define NV_MAXWELL 0x110
+#define NV_PASCAL 0x130
struct xf86_platform_device;
diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c
index 6c2bae8..1047d36 100644
--- a/src/nvc0_accel.c
+++ b/src/nvc0_accel.c
@@ -250,6 +250,12 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
} else if (pNv->dev->chipset < 0x130) {
class = 0xb197;
handle = 0x0000906e;
+ } else if (pNv->dev->chipset == 0x130) {
+ class = 0xc097;
+ handle = 0x0000906e;
+ } else if (pNv->dev->chipset < 0x140) {
+ class = 0xc197;
+ handle = 0x0000906e;
} else {
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"No 3D acceleration support for NV%X\n",
Reply to: