configure.ac | 2 debian/changelog | 29 + debian/control | 19 debian/rules | 4 debian/upstream/signing-key.asc | 75 +++ src/Makefile.am | 17 src/drmmode_display.c | 2 src/hwdefs/gm107_texture.xml.h | 365 ++++++++++++++++ src/hwdefs/nvc0_3d.xml.h | 867 ++++++++++++++++++++++++---------------- src/nouveau_copy.c | 5 src/nouveau_exa.c | 3 src/nouveau_local.h | 2 src/nouveau_xv.c | 2 src/nv_accel_common.c | 2 src/nv_driver.c | 7 src/nv_type.h | 1 src/nvc0_accel.c | 74 +++ src/nvc0_accel.h | 57 ++ src/nvc0_exa.c | 71 ++- src/nvc0_xv.c | 115 +++-- src/shader/Makefile | 23 - src/shader/exac8nv110.fp | 47 ++ src/shader/exac8nv110.fpc | 38 + src/shader/exacanv110.fp | 47 ++ src/shader/exacanv110.fpc | 38 + src/shader/exacmnv110.fp | 47 ++ src/shader/exacmnv110.fpc | 38 + src/shader/exas8nv110.fp | 42 + src/shader/exas8nv110.fpc | 28 + src/shader/exasanv110.fp | 47 ++ src/shader/exasanv110.fpc | 38 + src/shader/exascnv110.fp | 38 + src/shader/exascnv110.fpc | 20 src/shader/videonv110.fp | 54 ++ src/shader/videonv110.fpc | 52 ++ src/shader/xfrm2nv110.vp | 82 +++ src/shader/xfrm2nv110.vpc | 102 ++++ 37 files changed, 2051 insertions(+), 449 deletions(-)
New commits: commit 49f8d296445e3a277781c80cab7adfb745891b00 Author: Sven Joachim <[email protected]> Date: Wed Jun 21 18:10:43 2017 +0200 Upload to unstable diff --git a/debian/changelog b/debian/changelog index aa1ec91..af6ff4d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,12 @@ -xserver-xorg-video-nouveau (1:1.0.15-2) UNRELEASED; urgency=medium +xserver-xorg-video-nouveau (1:1.0.15-2) unstable; urgency=medium + * Team upload. * Suggest firmware-misc-nonfree, needed for acceleration on Maxwell and newer cards. * Bump Standards-Version to 4.0.0, no changes needed. + * Upload to unstable. - -- Sven Joachim <[email protected]> Wed, 21 Jun 2017 18:02:23 +0200 + -- Sven Joachim <[email protected]> Wed, 21 Jun 2017 18:10:27 +0200 xserver-xorg-video-nouveau (1:1.0.15-1) experimental; urgency=low commit 11d0f16bc9845ca45ffd4764545cebc1910009e0 Author: Sven Joachim <[email protected]> Date: Wed Jun 21 18:08:42 2017 +0200 Bump Standards-Version to 4.0.0 diff --git a/debian/changelog b/debian/changelog index af864dd..aa1ec91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ xserver-xorg-video-nouveau (1:1.0.15-2) UNRELEASED; urgency=medium * Suggest firmware-misc-nonfree, needed for acceleration on Maxwell and newer cards. + * Bump Standards-Version to 4.0.0, no changes needed. -- Sven Joachim <[email protected]> Wed, 21 Jun 2017 18:02:23 +0200 diff --git a/debian/control b/debian/control index ec81456..06f9e2d 100644 --- a/debian/control +++ b/debian/control @@ -21,7 +21,7 @@ Build-Depends: libtool, xutils-dev, quilt, -Standards-Version: 3.9.8 +Standards-Version: 4.0.0 Homepage: https://nouveau.freedesktop.org/wiki/ Vcs-Git: https://anonscm.debian.org/git/pkg-xorg/driver/xserver-xorg-video-nouveau.git Vcs-Browser: https://anonscm.debian.org/cgit/pkg-xorg/driver/xserver-xorg-video-nouveau.git commit c0fbcd8a8bc61bda19f849aad54501b24d9a90c4 Author: Sven Joachim <[email protected]> Date: Wed Jun 21 18:04:46 2017 +0200 Suggest firmware-misc-nonfree Starting with the Maxwell generation of cards, signed firmware from NVidia is required for acceleration. diff --git a/debian/changelog b/debian/changelog index 6d845e8..af864dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +xserver-xorg-video-nouveau (1:1.0.15-2) UNRELEASED; urgency=medium + + * Suggest firmware-misc-nonfree, needed for acceleration on Maxwell + and newer cards. + + -- Sven Joachim <[email protected]> Wed, 21 Jun 2017 18:02:23 +0200 + xserver-xorg-video-nouveau (1:1.0.15-1) experimental; urgency=low * Team upload. diff --git a/debian/control b/debian/control index 81e8350..ec81456 100644 --- a/debian/control +++ b/debian/control @@ -33,6 +33,7 @@ Depends: ${misc:Depends}, ${xviddriver:Depends}, Recommends: libgl1-mesa-dri (>= 9.0) +Suggests: firmware-misc-nonfree Provides: ${xviddriver:Provides} Description: X.Org X server -- Nouveau display driver This driver for the X.Org X server (see xserver-xorg for a further description) commit e4a2c8c370819f99fae1d1b3c7f7f3f8d54feed8 Author: Sven Joachim <[email protected]> Date: Sat Apr 22 09:35:02 2017 +0200 Upload to experimental diff --git a/debian/changelog b/debian/changelog index ec42c9a..6d845e8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,10 @@ -xserver-xorg-video-nouveau (1:1.0.15-1) UNRELEASED; urgency=low +xserver-xorg-video-nouveau (1:1.0.15-1) experimental; urgency=low + * Team upload. * New upstream release. - Add support for Pascal cards. - -- Sven Joachim <[email protected]> Sat, 22 Apr 2017 09:28:46 +0200 + -- Sven Joachim <[email protected]> Sat, 22 Apr 2017 09:33:48 +0200 xserver-xorg-video-nouveau (1:1.0.14-1) experimental; urgency=low commit d2d75d8d1f383fee0737ad61ed2c1a97131009b2 Author: Sven Joachim <[email protected]> Date: Sat Apr 22 09:33:33 2017 +0200 New upstream release diff --git a/debian/changelog b/debian/changelog index a9dfa33..ec42c9a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +xserver-xorg-video-nouveau (1:1.0.15-1) UNRELEASED; urgency=low + + * New upstream release. + - Add support for Pascal cards. + + -- Sven Joachim <[email protected]> Sat, 22 Apr 2017 09:28:46 +0200 + xserver-xorg-video-nouveau (1:1.0.14-1) experimental; urgency=low * Team upload. commit a7c190e0c230ed2d5e047ed6aba12d71a4866950 Author: Lyude <[email protected]> Date: Fri Apr 21 14:41:17 2017 -0400 Bump version to 1.0.15 Signed-off-by: Lyude <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98383 Signed-off-by: Mariusz Bialonczyk <[email protected]> Acked-by: Ilia Mirkin <[email protected]> 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 <[email protected]> Date: Tue Mar 21 21:25:33 2017 -0400 Add Pascal family support, identical to Maxwell Signed-off-by: Ilia Mirkin <[email protected]> Tested-by: Lyude <[email protected]> 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", commit ad363c2713bf8fcad8a1ab77f5a60b94786b5cdf Author: Sven Joachim <[email protected]> Date: Wed Mar 15 17:55:05 2017 +0100 Upload to experimental diff --git a/debian/changelog b/debian/changelog index 5e7dc63..89bbd38 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,12 +1,13 @@ -xserver-xorg-video-nouveau (1:1.0.14-1) UNRELEASED; urgency=medium +xserver-xorg-video-nouveau (1:1.0.14-1) experimental; urgency=low + * Team upload. * New upstream release. - Provide acceleration support for Maxwell cards. * Add Lyude's key C5469FB8758F9C2B to debian/upstream/signing-key.asc. * Drop xserver-xorg-video-nouveau-dbg in favor of an automatic xserver-xorg-video-nouveau-dbgsym package. - -- Sven Joachim <[email protected]> Mon, 13 Mar 2017 20:52:13 +0100 + -- Sven Joachim <[email protected]> Wed, 15 Mar 2017 17:53:03 +0100 xserver-xorg-video-nouveau (1:1.0.13-2) unstable; urgency=medium commit 35c6348ccb983a1b28504194924167e22ab816c3 Author: Sven Joachim <[email protected]> Date: Wed Mar 15 17:40:48 2017 +0100 Drop the xserver-xorg-video-nouveau-dbg package diff --git a/debian/changelog b/debian/changelog index f06b282..5e7dc63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ xserver-xorg-video-nouveau (1:1.0.14-1) UNRELEASED; urgency=medium * New upstream release. - Provide acceleration support for Maxwell cards. * Add Lyude's key C5469FB8758F9C2B to debian/upstream/signing-key.asc. + * Drop xserver-xorg-video-nouveau-dbg in favor of an automatic + xserver-xorg-video-nouveau-dbgsym package. -- Sven Joachim <[email protected]> Mon, 13 Mar 2017 20:52:13 +0100 diff --git a/debian/control b/debian/control index 18c0734..81e8350 100644 --- a/debian/control +++ b/debian/control @@ -42,19 +42,3 @@ Description: X.Org X server -- Nouveau display driver RandR. 3D functionality is provided by the libgl1-mesa-dri package. . This package is built from the FreeDesktop.org xf86-video-nouveau driver. - -Package: xserver-xorg-video-nouveau-dbg -Architecture: linux-any -Depends: - ${misc:Depends}, - xserver-xorg-video-nouveau (= ${binary:Version}), -Section: debug -Priority: extra -Description: X.Org X server -- Nouveau display driver (debug symbols) - This driver for the X.Org X server (see xserver-xorg for a further description) - provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards. - . - This package provides 2D support including EXA acceleration, Xv and - RandR. 3D functionality is provided by the libgl1-mesa-dri package. - . - This package provides debugging symbols for this Xorg X driver. diff --git a/debian/rules b/debian/rules index fe0a8e6..c429e5d 100755 --- a/debian/rules +++ b/debian/rules @@ -19,10 +19,6 @@ override_dh_install: find debian/tmp -name '*.la' -delete dh_install --fail-missing -# Debug package: -override_dh_strip: - dh_strip --dbg-package=xserver-xorg-video-nouveau-dbg - # That's a plugin, use appropriate warning level: override_dh_shlibdeps: dh_shlibdeps -- --warnings=6 commit 3108362450c1520aac14c3d6b05c188c414b3a17 Author: Sven Joachim <[email protected]> Date: Mon Mar 13 20:54:53 2017 +0100 Add Lyude's key C5469FB8758F9C2B diff --git a/debian/changelog b/debian/changelog index b6c8e8e..f06b282 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ xserver-xorg-video-nouveau (1:1.0.14-1) UNRELEASED; urgency=medium * New upstream release. - Provide acceleration support for Maxwell cards. + * Add Lyude's key C5469FB8758F9C2B to debian/upstream/signing-key.asc. -- Sven Joachim <[email protected]> Mon, 13 Mar 2017 20:52:13 +0100 diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc index df45a3e..623a108 100644 --- a/debian/upstream/signing-key.asc +++ b/debian/upstream/signing-key.asc @@ -173,3 +173,78 @@ hZ30sS7aoLrtIXPV1nVyIDSPZkW6dk7t7Tl7nEYhCYBaweCqTtVhx2huESbq4oog GtLp6sJi2Q0t9a2IMD62a+dAj74J =Gywi -----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=uFxS +-----END PGP PUBLIC KEY BLOCK----- commit 2595049899964fcbcd32f896c4d684e1ee30789b Author: Sven Joachim <[email protected]> Date: Mon Mar 13 20:52:25 2017 +0100 New upstream release diff --git a/debian/changelog b/debian/changelog index 7fa9a76..b6c8e8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +xserver-xorg-video-nouveau (1:1.0.14-1) UNRELEASED; urgency=medium + + * New upstream release. + - Provide acceleration support for Maxwell cards. + + -- Sven Joachim <[email protected]> Mon, 13 Mar 2017 20:52:13 +0100 + xserver-xorg-video-nouveau (1:1.0.13-2) unstable; urgency=medium * Team upload. commit b71de83b7fae0abeb311251e6144294d319062cf Author: Lyude <[email protected]> Date: Tue Mar 7 18:44:43 2017 -0500 Bump version to 1.0.14 Signed-off-by: Lyude <[email protected]> diff --git a/configure.ac b/configure.ac index 0e004d7..e494300 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ([2.60]) AC_INIT([xf86-video-nouveau], - [1.0.13], + [1.0.14], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-nouveau]) commit 924083938c8f209d8f6ff472caf8692a644f7e78 Author: Lyude <[email protected]> Date: Fri Mar 3 18:27:42 2017 -0500 Consider CRTCs disabled when DPMS is off It turns out there's a difference in X between a CRTC being "disabled" and simply having it's DPMS turned off. This is problematic though, because if DPMS is turned off you can't really use the CRTC as a normal CRTC anyway since page flipping and vblanks will be non-functional. As a result, we've been considering DPMS-on CRTCs as enabled and attempt to perform pageflips, vblank waits, etc. on them which inevitably fails. and usually breaks the display the first time any of the CRTCs have their DPMS turned on. This was a problem that didn't really show itself until kernel 4.10 when atomic modesetting was added which caused nouveau to stop trying to fulfill pageflips and vblank waits on disabled CRTCs. I'm not sure how pageflipping disabled CRTCs ever worked in the first place, but since not doing so is the proper behavior anyway I haven't investigated any further. So, copy the ms_crtc_on() function from the modesetting driver and add it here as drmmode_crtc_on(), then use that in all of the places where we should be checking for both DPMS off and disabled CRTCs. This fixes issues with the X ceasing to function (usually) after the first time a CRTC has it's DPMS turned on. Reproduction recipe: - Load up gnome-shell on a machine - Wait for the display to timeout from inactivity and turn itself off - Shake the cursor or press something on the keyboard. Chances are the monitor will come back on, but the display remains black until the next time the X server is restarted. Signed-off-by: Lyude <[email protected]> Reviewed-by: Adam Jackson <[email protected]> diff --git a/src/drmmode_display.c b/src/drmmode_display.c index b6c9bb9..dd9fa27 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -65,6 +65,7 @@ typedef struct { uint32_t rotate_fb_id; Bool cursor_visible; int scanout_pixmap_x; + int dpms_mode; } drmmode_crtc_private_rec, *drmmode_crtc_private_ptr; typedef struct { @@ -114,6 +115,14 @@ drmmode_crtc(xf86CrtcPtr crtc) return drmmode_crtc->mode_crtc->crtc_id; } +Bool +drmmode_crtc_on(xf86CrtcPtr crtc) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + + return crtc->enabled && drmmode_crtc->dpms_mode == DPMSModeOn; +} + int drmmode_head(xf86CrtcPtr crtc) { @@ -313,9 +322,10 @@ drmmode_ConvertToKMode(ScrnInfoPtr scrn, drmModeModeInfo *kmode, } static void -drmmode_crtc_dpms(xf86CrtcPtr drmmode_crtc, int mode) +drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode) { - + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_crtc->dpms_mode = mode; } void diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index 81ee9be..cbb7b2a 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -279,23 +279,27 @@ can_exchange(DrawablePtr draw, PixmapPtr dst_pix, PixmapPtr src_pix) ScrnInfoPtr scrn = xf86ScreenToScrn(draw->pScreen); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); NVPtr pNv = NVPTR(scrn); - int i; + int i, active_crtc_count = 0; if (!xf86_config->num_crtc) return FALSE; for (i = 0; i < xf86_config->num_crtc; i++) { xf86CrtcPtr crtc = xf86_config->crtc[i]; - if (crtc->enabled && crtc->rotatedData) - return FALSE; + if (drmmode_crtc_on(crtc)) { + if (crtc->rotatedData) + return FALSE; + active_crtc_count++; + } } return ((DRI2CanFlip(draw) && pNv->has_pageflip)) && dst_pix->drawable.width == src_pix->drawable.width && dst_pix->drawable.height == src_pix->drawable.height && dst_pix->drawable.bitsPerPixel == src_pix->drawable.bitsPerPixel && - dst_pix->devKind == src_pix->devKind; + dst_pix->devKind == src_pix->devKind && + active_crtc_count; } static Bool @@ -475,7 +479,7 @@ dri2_page_flip(DrawablePtr draw, PixmapPtr back, void *priv, int head = drmmode_crtc(config->crtc[i]); void *token; - if (!config->crtc[i]->enabled) + if (!drmmode_crtc_on(config->crtc[i])) continue; flipdata->flip_count++; diff --git a/src/nouveau_present.c b/src/nouveau_present.c index 482ac6e..ebd5fcf 100644 --- a/src/nouveau_present.c +++ b/src/nouveau_present.c @@ -152,7 +152,7 @@ nouveau_present_flip_check(RRCrtcPtr rrcrtc, WindowPtr window, ScrnInfoPtr scrn = xf86ScreenToScrn(window->drawable.pScreen); xf86CrtcPtr crtc = rrcrtc->devPrivate; - if (!scrn->vtSema || !crtc->enabled) + if (!scrn->vtSema || !drmmode_crtc_on(crtc)) return FALSE; return TRUE; @@ -199,7 +199,7 @@ nouveau_present_flip_exec(ScrnInfoPtr scrn, uint64_t event_id, int sync, flip->msc = target_msc; for (i = 0; i < config->num_crtc; i++) { - if (config->crtc[i]->enabled) + if (drmmode_crtc_on(config->crtc[i])) last = i; } @@ -208,7 +208,7 @@ nouveau_present_flip_exec(ScrnInfoPtr scrn, uint64_t event_id, int sync, int crtc = drmmode_crtc(config->crtc[i]); void *user = NULL; - if (!config->crtc[i]->enabled) + if (!drmmode_crtc_on(config->crtc[i])) continue; if (token && ((crtc == sync) || (i == last))) { diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index 716b18d..4b939f7 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -299,7 +299,7 @@ nv_window_belongs_to_crtc(ScrnInfoPtr pScrn, int x, int y, int w, int h) for (i = 0; i < xf86_config->num_crtc; i++) { xf86CrtcPtr crtc = xf86_config->crtc[i]; - if (!crtc->enabled) + if (!drmmode_crtc_on(crtc)) continue; if ((x < (crtc->x + crtc->mode.HDisplay)) && diff --git a/src/nv_proto.h b/src/nv_proto.h index 122ede5..4a57406 100644 --- a/src/nv_proto.h +++ b/src/nv_proto.h @@ -13,6 +13,7 @@ void drmmode_screen_init(ScreenPtr pScreen); void drmmode_screen_fini(ScreenPtr pScreen); int drmmode_crtc(xf86CrtcPtr crtc); +Bool drmmode_crtc_on(xf86CrtcPtr crtc); int drmmode_head(xf86CrtcPtr crtc); void drmmode_swap(ScrnInfoPtr, uint32_t, uint32_t *); commit 1516d35b06c9cda399bef01d992805d6e63dcbae Author: Ilia Mirkin <[email protected]> Date: Sun Oct 16 15:10:10 2016 -0400 recognize and accelerate GM20x Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> diff --git a/src/nv_driver.c b/src/nv_driver.c index fff83f8..61940a8 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -390,6 +390,7 @@ NVHasKMS(struct pci_device *pci_dev, struct xf86_platform_device *platform_dev) case 0xf0: case 0x100: case 0x110: + case 0x120: break; default: xf86DrvMsg(-1, X_ERROR, "Unknown chipset: NV%02X\n", chipset); @@ -941,6 +942,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags) pNv->Architecture = NV_KEPLER; break; case 0x110: + case 0x120: pNv->Architecture = NV_MAXWELL; break; default: diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index d0a835e..6c2bae8 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -244,9 +244,17 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn) } else if (pNv->dev->chipset < 0x110) { class = 0xa197; handle = 0x0000906e; - } else { + } else if (pNv->dev->chipset < 0x120) { class = 0xb097; handle = 0x0000906e; + } else if (pNv->dev->chipset < 0x130) { + class = 0xb197; + handle = 0x0000906e; + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "No 3D acceleration support for NV%X\n", + pNv->dev->chipset); + return FALSE; } ret = nouveau_object_new(pNv->channel, class, class, commit b00b73c3aa0da1d4cee5c9f580ca65a7bd344e0f Author: Ilia Mirkin <[email protected]> Date: Mon Oct 17 23:23:41 2016 -0400 copy: add maxwell/pascal copy engine classes Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> diff --git a/src/nouveau_copy.c b/src/nouveau_copy.c index c139de6..7118a7a 100644 --- a/src/nouveau_copy.c +++ b/src/nouveau_copy.c @@ -42,6 +42,8 @@ nouveau_copy_init(ScreenPtr pScreen) int engine; Bool (*init)(NVPtr); } methods[] = { + { 0xc0b5, 0, nouveau_copya0b5_init }, + { 0xb0b5, 0, nouveau_copya0b5_init }, { 0xa0b5, 0, nouveau_copya0b5_init }, { 0x90b8, 5, nouveau_copy90b5_init }, { 0x90b5, 4, nouveau_copy90b5_init }, diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index 8da5051..d0a835e 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -156,9 +156,17 @@ NVAccelInitCOPY_NVE0(ScrnInfoPtr pScrn) { NVPtr pNv = NVPTR(pScrn); struct nouveau_pushbuf *push = pNv->pushbuf; + uint32_t class; int ret; - ret = nouveau_object_new(pNv->channel, 0x0000a0b5, 0xa0b5, + if (pNv->dev->chipset < 0x110) + class = 0xa0b5; + else if (pNv->dev->chipset < 0x130) + class = 0xb0b5; + else + class = 0xc0b5; + + ret = nouveau_object_new(pNv->channel, class, class, NULL, 0, &pNv->NvCOPY); if (ret) return FALSE; commit 5a3ada3b0ff3d89441faf35d331bb8b6cf5e51c0 Author: Ilia Mirkin <[email protected]> Date: Sun Oct 16 15:03:35 2016 -0400 nvc0: refactor TIC uploads to allow different specifics per generation This flips GM10x to using the updated format, which is what I tested with. However GM20x and GP10x also use this TIC format. Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index 0682806..8da5051 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -322,6 +322,17 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn) PUSH_DATA (push, (bo->offset + MISC_OFFSET) >> 32); PUSH_DATA (push, (bo->offset + MISC_OFFSET)); PUSH_DATA (push, 1); + } else { + /* Use new TIC format. Not strictly necessary for GM20x+ */ + IMMED_NVC0(push, SUBC_3D(0x0f10), 1); + if (pNv->dev->chipset >= 0x120) { + /* Use center sample locations. */ + BEGIN_NVC0(push, SUBC_3D(0x11e0), 4); + PUSH_DATA (push, 0x88888888); + PUSH_DATA (push, 0x88888888); + PUSH_DATA (push, 0x88888888); + PUSH_DATA (push, 0x88888888); + } } BEGIN_NVC0(push, NVC0_3D(CODE_ADDRESS_HIGH), 2); diff --git a/src/nvc0_accel.h b/src/nvc0_accel.h index 607e97b..959f67f 100644 --- a/src/nvc0_accel.h +++ b/src/nvc0_accel.h @@ -7,6 +7,7 @@ #include "hwdefs/nvc0_m2mf.xml.h" #include "hwdefs/nv50_defs.xml.h" #include "hwdefs/nv50_texture.h" +#include "hwdefs/gm107_texture.xml.h" #include "hwdefs/nv_3ddefs.xml.h" /* subchannel assignments, compatible with kepler's fixed layout */ @@ -108,4 +109,59 @@ PUSH_DATAu(struct nouveau_pushbuf *push, struct nouveau_bo *bo, } } +static __inline__ void +PUSH_TIC(struct nouveau_pushbuf *push, struct nouveau_bo *bo, unsigned offset, + unsigned width, unsigned height, unsigned pitch, unsigned format) +{ + if (push->client->device->chipset < 0x110) { + unsigned tic2 = 0xd0001000; + if (pitch == 0) + tic2 |= 0x00004000; + else + tic2 |= 0x0005c000; + PUSH_DATA(push, format); + PUSH_DATA(push, bo->offset + offset); + PUSH_DATA(push, ((bo->offset + offset) >> 32) | + (bo->config.nvc0.tile_mode << 18) | + tic2); + PUSH_DATA(push, 0x00300000); + PUSH_DATA(push, 0x80000000 | width); + PUSH_DATA(push, 0x00010000 | height); + PUSH_DATA(push, 0x03000000); + PUSH_DATA(push, 0x00000000); + } else { + unsigned tile_mode = bo->config.nvc0.tile_mode; + PUSH_DATA(push, (format & 0x3f) | ((format & ~0x3f) << 1)); + PUSH_DATA(push, bo->offset + offset); + if (pitch == 0) { + PUSH_DATA(push, ((bo->offset + offset) >> 32) | + GM107_TIC2_2_HEADER_VERSION_BLOCKLINEAR); + PUSH_DATA(push, GM107_TIC2_3_LOD_ANISO_QUALITY_2 | + ((tile_mode & 0x007)) | + ((tile_mode & 0x070) >> (4 - 3)) | + ((tile_mode & 0x700) >> (8 - 6))); + PUSH_DATA(push, GM107_TIC2_4_SECTOR_PROMOTION_PROMOTE_TO_2_V | + GM107_TIC2_4_BORDER_SIZE_SAMPLER_COLOR | + GM107_TIC2_4_TEXTURE_TYPE_TWO_D | + (width - 1)); + PUSH_DATA(push, GM107_TIC2_5_NORMALIZED_COORDS | + ((height - 1) & 0xffff)); + PUSH_DATA(push, GM107_TIC2_6_ANISO_FINE_SPREAD_FUNC_TWO | + GM107_TIC2_6_ANISO_COARSE_SPREAD_FUNC_ONE); + PUSH_DATA(push, 0x00000000); + } else { + PUSH_DATA(push, ((bo->offset + offset) >> 32) | + GM107_TIC2_2_HEADER_VERSION_PITCH);

