.gitignore | 2 ChangeLog |16944 ----------------------------------------------- Makefile.am | 15 configure.ac | 35 debian/changelog | 36 debian/control | 2 debian/rules | 11 src/Makefile.am | 35 src/drmmode_display.c | 40 src/nouveau_dri2.c | 19 src/nouveau_xv.c | 4 src/nv_accel_common.c | 5 src/nv_driver.c | 146 src/nv_proto.h | 1 src/nv_type.h | 14 src/nvc0_accel.c | 45 src/nvc0_shader.h | 444 - src/nve0_shader.h | 440 - src/shader/.gitignore | 1 src/shader/Makefile | 30 src/shader/exac8nvc0.fp | 41 src/shader/exac8nvc0.fpc | 22 src/shader/exac8nve0.fp | 42 src/shader/exac8nve0.fpc | 28 src/shader/exacanvc0.fp | 41 src/shader/exacanvc0.fpc | 25 src/shader/exacanve0.fp | 43 src/shader/exacanve0.fpc | 30 src/shader/exacmnvc0.fp | 41 src/shader/exacmnvc0.fpc | 25 src/shader/exacmnve0.fp | 43 src/shader/exacmnve0.fpc | 30 src/shader/exas8nvc0.fp | 37 src/shader/exas8nvc0.fpc | 14 src/shader/exas8nve0.fp | 38 src/shader/exas8nve0.fpc | 20 src/shader/exasanvc0.fp | 41 src/shader/exasanvc0.fpc | 25 src/shader/exasanve0.fp | 43 src/shader/exasanve0.fpc | 30 src/shader/exascnvc0.fp | 34 src/shader/exascnvc0.fpc | 11 src/shader/exascnve0.fp | 35 src/shader/exascnve0.fpc | 14 src/shader/videonvc0.fp | 47 src/shader/videonvc0.fpc | 37 src/shader/videonve0.fp | 50 src/shader/videonve0.fpc | 44 src/shader/xfrm2nvc0.vp | 63 src/shader/xfrm2nvc0.vpc | 69 src/shader/xfrm2nve0.vp | 63 src/shader/xfrm2nve0.vpc | 70 52 files changed, 1522 insertions(+), 17943 deletions(-)
New commits: commit 4f1a24481f5b7a123bbb9f042cf7683b10dcfd7e Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Wed Jun 12 11:30:52 2013 +0200 release to saucy diff --git a/debian/changelog b/debian/changelog index 39c0682..709b3f6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +xserver-xorg-video-nouveau (1:1.0.8-0ubuntu1) saucy; urgency=low + + * Sync to unreleased debian experimental git. + * Remaining differences: + - Try to enable vblank if available (LP: #1019131) + - 100-vblank-on.diff + * Add support for displayless cards. (LP: #1142733) + + -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Wed, 12 Jun 2013 11:24:18 +0200 + xserver-xorg-video-nouveau (1:1.0.8-1) UNRELEASED; urgency=low * New upstream release. commit a3dd588c4392e59ea52f814f6eb80f4635465b16 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Wed Jun 12 11:16:38 2013 +0200 Replace dependency on x11proto-xf86dri-dev with x11proto-dri2-dev. Upstream removed dri1 dependency. diff --git a/debian/changelog b/debian/changelog index 6b643e1..5d56bbc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ xserver-xorg-video-nouveau (1:1.0.8-1) UNRELEASED; urgency=low * New upstream release. + * Replace dependency on x11proto-xf86dri-dev with x11proto-dri2-dev. + - Upstream removed dri1 dependency. -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Wed, 12 Jun 2013 10:58:45 +0200 diff --git a/debian/control b/debian/control index 4975203..486fc7e 100644 --- a/debian/control +++ b/debian/control @@ -15,7 +15,7 @@ Build-Depends: x11proto-render-dev, x11proto-xext-dev, libdrm-dev (>= 2.4.40-1), - x11proto-xf86dri-dev, + x11proto-dri2-dev, x11proto-gl-dev, mesa-common-dev, libudev-dev, commit dbb64a8e0cade7f8e85f75090d1f1a7ae8980ab8 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Wed Jun 12 10:59:11 2013 +0200 New upstream release. diff --git a/debian/changelog b/debian/changelog index 84c8d87..6b643e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xserver-xorg-video-nouveau (1:1.0.8-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Wed, 12 Jun 2013 10:58:45 +0200 + xserver-xorg-video-nouveau (1:1.0.7-1) experimental; urgency=low [ Maarten Lankhorst ] commit 7f20a6af25ae28452ec9c971bfa2227857e6ee93 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Wed Jun 12 10:46:39 2013 +0200 bump to 1.0.8 diff --git a/configure.ac b/configure.ac index 575f69d..bf19d3b 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ([2.60]) AC_INIT([xf86-video-nouveau], - [1.0.7], + [1.0.8], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-nouveau]) commit 1fda669c0e5a25eac7f9f1e9a743120cae50ff51 Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Sat Feb 16 20:48:47 2013 +0000 configure: printout the configuration info Let the bikeshedding begin Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/configure.ac b/configure.ac index 4f9f0b1..575f69d 100644 --- a/configure.ac +++ b/configure.ac @@ -132,3 +132,21 @@ AC_CONFIG_FILES([ man/Makefile ]) AC_OUTPUT + +dnl +dnl Output some configuration info for the user +dnl +echo "" +echo " prefix: $prefix" +echo " exec_prefix: $exec_prefix" +echo " libdir: $libdir" +echo " includedir: $includedir" + +echo "" +echo " CFLAGS: $CFLAGS" +echo " CXXFLAGS: $CXXFLAGS" +echo " Macros: $DEFINES" + +echo "" +echo " Run '${MAKE-make}' to build xf86-video-nouveau" +echo "" commit 45dbcaac301efce04d0bb492337f4febf8129ed9 Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Sat Feb 16 20:48:45 2013 +0000 nouveau: mandate dri2 build Building nouveau without dri2 is just silly Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/configure.ac b/configure.ac index fa4a2dc..4f9f0b1 100644 --- a/configure.ac +++ b/configure.ac @@ -84,6 +84,7 @@ AC_SUBST(LIBDRM_NOUVEAU_CFLAGS) AC_SUBST(LIBDRM_NOUVEAU_LIBS) PKG_CHECK_MODULES(XORG, [xorg-server >= 1.8] xproto fontsproto libdrm $REQUIRED_MODULES) +PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6]) PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]), HAVE_XEXTPROTO_71="no") diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index 5511b36..3785956 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -7,9 +7,10 @@ #include "nv_include.h" #ifdef DRI2 #include "dri2.h" +#else +#error "This driver requires a DRI2-enabled X server" #endif -#if defined(DRI2) && DRI2INFOREC_VERSION >= 3 struct nouveau_dri2_buffer { DRI2BufferRec base; PixmapPtr ppix; @@ -817,16 +818,3 @@ nouveau_dri2_fini(ScreenPtr pScreen) { DRI2CloseScreen(pScreen); } -#else -Bool -nouveau_dri2_init(ScreenPtr pScreen) -{ - return TRUE; -} - -void -nouveau_dri2_fini(ScreenPtr pScreen) -{ -} -#endif - commit ea8d225fe100ecabb72e3cc0a92372f16afb10b3 Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Sat Feb 16 20:48:44 2013 +0000 dri1: purge the final references Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/configure.ac b/configure.ac index 15a6e13..fa4a2dc 100644 --- a/configure.ac +++ b/configure.ac @@ -83,7 +83,7 @@ PKG_CHECK_MODULES(LIBDRM_NOUVEAU, [libdrm_nouveau >= 2.4.25]) AC_SUBST(LIBDRM_NOUVEAU_CFLAGS) AC_SUBST(LIBDRM_NOUVEAU_LIBS) -PKG_CHECK_MODULES(XORG, [xorg-server >= 1.8] xproto fontsproto libdrm xf86driproto $REQUIRED_MODULES) +PKG_CHECK_MODULES(XORG, [xorg-server >= 1.8] xproto fontsproto libdrm $REQUIRED_MODULES) PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]), HAVE_XEXTPROTO_71="no") diff --git a/src/nv_type.h b/src/nv_type.h index 13b6672..e6945bc 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -4,16 +4,10 @@ #include "colormapst.h" #include "xf86Cursor.h" #include "exa.h" -#ifdef XF86DRI -#define _XF86DRI_SERVER_ #include "xf86drm.h" -#include "dri.h" #include <stdbool.h> #include <stdint.h> #include "xf86Crtc.h" -#else -#error "This driver requires a DRI-enabled X server" -#endif #if XF86_CRTC_VERSION >= 5 #define NOUVEAU_PIXMAP_SHARING 1 commit b5d1a9bd269c9d2758fee37492cdcccc976fcc3b Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Sat Feb 16 20:48:43 2013 +0000 nouveau: Do not load dri {sub,}module Nouveau does not use dri1, thus loading XFree86-DRI is not needed On the other hand, we do use dri2 As a side effect, purge the 'set-but-unused' variable pLibDRMVersion Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/src/nv_driver.c b/src/nv_driver.c index a6a12ec..b83b822 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -651,40 +651,6 @@ NVCloseDRM(ScrnInfoPtr pScrn) nouveau_device_del(&pNv->dev); } -static Bool -NVDRIGetVersion(ScrnInfoPtr pScrn) -{ - NVPtr pNv = NVPTR(pScrn); - int errmaj, errmin; - pointer ret; - - ret = LoadSubModule(pScrn->module, "dri", NULL, NULL, NULL, - NULL, &errmaj, &errmin); - if (!ret) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "error %d\n", errmaj); - LoaderErrorMsg(pScrn->name, "dri", errmaj, errmin); - } - - if (!ret && errmaj != LDR_ONCEONLY) - return FALSE; - - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Loaded DRI module\n"); - - /* Check the lib version */ - if (xf86LoaderCheckSymbol("drmGetLibVersion")) - pNv->pLibDRMVersion = drmGetLibVersion(0); - if (pNv->pLibDRMVersion == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "NVDRIGetVersion failed because libDRM is really " - "way to old to even get a version number out of it.\n" - "[dri] Disabling DRI.\n"); - return FALSE; - } - - return TRUE; -} - static void nouveau_setup_capabilities(ScrnInfoPtr pScrn) { @@ -778,7 +744,7 @@ NVPreInitDRM(ScrnInfoPtr pScrn) NVPtr pNv = NVPTR(pScrn); int ret; - if (!NVDRIGetVersion(pScrn)) + if (!xf86LoadSubModule(pScrn, "dri2")) return FALSE; /* Load the kernel module, and open the DRM */ diff --git a/src/nv_type.h b/src/nv_type.h index 9c403b5..13b6672 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -74,8 +74,6 @@ typedef struct _NVRec { CARD32 currentRop; - drmVersionPtr pLibDRMVersion; - void *drmmode; /* for KMS */ /* DRM interface */ commit 7c3f6cd8d6b14aea561fb877f6006d339d156f35 Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Sat Feb 16 20:48:42 2013 +0000 nouveau: stop using dri1 function DRICreatePCIBusID Step 1 to completely rip out dri1 out of nouveau Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/src/nv_driver.c b/src/nv_driver.c index 38eddac..a6a12ec 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -272,11 +272,13 @@ NVHasKMS(struct pci_device *pci_dev) char *busid; int chipset, ret; - if (!xf86LoaderCheckSymbol("DRICreatePCIBusID")) { - xf86DrvMsg(-1, X_ERROR, "[drm] No DRICreatePCIBusID symbol\n"); - return FALSE; - } - busid = DRICreatePCIBusID(pci_dev); +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0) + XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d", + pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func); +#else + busid = XNFprintf("pci:%04x:%02x:%02x.%d", + pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func); +#endif ret = drmCheckModesettingSupported(busid); if (ret) { commit 3b1a45325d5fd46f0e7fad17168742b4c9a2465a Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Wed Jun 12 10:30:32 2013 +0200 update makefiles for make distcheck diff --git a/.gitignore b/.gitignore index 4ff1108..186b1c8 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ ltmain.sh missing stamp-h1 ChangeLog +INSTALL diff --git a/Makefile.am b/Makefile.am index 011c574..032be8a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,11 +20,14 @@ AUTOMAKE_OPTIONS = foreign SUBDIRS = src man +MAINTAINERCLEANFILES = ChangeLog INSTALL -EXTRA_DIST = ChangeLog +.PHONY: ChangeLog INSTALL -# Always regenerate the changelog -CLEANFILES = ChangeLog -ChangeLog: FORCE - git log > ChangeLog -FORCE: +INSTALL: + $(INSTALL_CMD) + +ChangeLog: + $(CHANGELOG_CMD) + +EXTRA_DIST = ChangeLog INSTALL diff --git a/src/Makefile.am b/src/Makefile.am index 17c6389..f54e135 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -66,6 +66,39 @@ EXTRA_DIST = hwdefs/nv_3ddefs.xml.h \ hwdefs/nv50_texture.h \ hwdefs/nvc0_3d.xml.h \ hwdefs/nvc0_m2mf.xml.h \ + shader/exac8nvc0.fp \ + shader/exac8nvc0.fpc \ + shader/exac8nve0.fp \ + shader/exac8nve0.fpc \ + shader/exacanvc0.fp \ + shader/exacanvc0.fpc \ + shader/exacanve0.fp \ + shader/exacanve0.fpc \ + shader/exacmnvc0.fp \ + shader/exacmnvc0.fpc \ + shader/exacmnve0.fp \ + shader/exacmnve0.fpc \ + shader/exas8nvc0.fp \ + shader/exas8nvc0.fpc \ + shader/exas8nve0.fp \ + shader/exas8nve0.fpc \ + shader/exasanvc0.fp \ + shader/exasanvc0.fpc \ + shader/exasanve0.fp \ + shader/exasanve0.fpc \ + shader/exascnvc0.fp \ + shader/exascnvc0.fpc \ + shader/exascnve0.fp \ + shader/exascnve0.fpc \ + shader/videonvc0.fp \ + shader/videonvc0.fpc \ + shader/videonve0.fp \ + shader/videonve0.fpc \ + shader/xfrm2nvc0.vp \ + shader/xfrm2nvc0.vpc \ + shader/xfrm2nve0.vp \ + shader/xfrm2nve0.vpc \ + shader/Makefile \ nouveau_local.h \ nv_const.h \ nv_dma.h \ diff --git a/src/shader/.gitignore b/src/shader/.gitignore new file mode 100644 index 0000000..2460008 --- /dev/null +++ b/src/shader/.gitignore @@ -0,0 +1 @@ +!Makefile commit b82aacd3e72b52240181569c8b0abb55c1f716d5 Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Sat Feb 16 12:48:46 2013 -0800 configure: require xorg-macros 1.8 Explicitly check for xorg-macros 1.8, as a subtle hint to update your build deps if building your own ddx Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/configure.ac b/configure.ac index 137de9c..15a6e13 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,18 @@ AM_INIT_AUTOMAKE([dist-bzip2]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])]) + +XORG_MACROS_VERSION(1.8) +XORG_DEFAULT_OPTIONS + +# Require X.Org server macros (i.e. XORG_DRIVER_CHECK_EXT) to check for required modules +m4_ifndef([XORG_DRIVER_CHECK_EXT], + [m4_fatal([must install xorg-server macros before running autoconf/autogen])]) + + # Checks for programs. AC_DISABLE_STATIC LT_INIT commit 4f667b40f41e311fbe302237efe173bcc24fb8bb Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Mon Jun 10 14:29:59 2013 +0200 fix a xfree from previous patch Signed-off-by: Maarten Lankhorst <maarten.lankho...@canonical.com> diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 8fd1dd0..b9b7164 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -1252,7 +1252,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp) if (!drmmode->mode_res->count_connectors || !drmmode->mode_res->count_crtcs) { drmModeFreeResources(drmmode->mode_res); - xfree(drmmode); + free(drmmode); goto done; } commit 2e34d11541e1f987c7ca0556592cb16f4d232299 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Mon Jun 10 13:06:35 2013 +0200 nouveau: enable support for normal optimus configuration nvd7 has no display engine, only enable sink output capability if there is a crtc. drmmode doesn't work without crtc's, so prevent crashes by skipping the drmmode code in that case. Signed-off-by: Maarten Lankhorst <maarten.lankho...@canonical.com> diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 6033a6d..8fd1dd0 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -1129,14 +1129,17 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); ScreenPtr screen = xf86ScrnToScreen(scrn); NVPtr pNv = NVPTR(scrn); - drmmode_crtc_private_ptr - drmmode_crtc = xf86_config->crtc[0]->driver_private; - drmmode_ptr drmmode = drmmode_crtc->drmmode; - uint32_t old_width, old_height, old_pitch, old_fb_id; + drmmode_crtc_private_ptr drmmode_crtc = NULL; + drmmode_ptr drmmode = NULL; + uint32_t old_width, old_height, old_pitch, old_fb_id = 0; struct nouveau_bo *old_bo = NULL; int ret, i, pitch; PixmapPtr ppix; + if (xf86_config->num_crtc) { + drmmode_crtc = xf86_config->crtc[0]->driver_private; + drmmode = drmmode_crtc->drmmode; + } ErrorF("resize called %d %d\n", width, height); if (scrn->virtualX == width && scrn->virtualY == height) @@ -1145,7 +1148,8 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) old_width = scrn->virtualX; old_height = scrn->virtualY; old_pitch = scrn->displayWidth; - old_fb_id = drmmode->fb_id; + if (drmmode) + old_fb_id = drmmode->fb_id; nouveau_bo_ref(pNv->scanout, &old_bo); nouveau_bo_ref(NULL, &pNv->scanout); @@ -1162,11 +1166,13 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) nouveau_bo_map(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client); - ret = drmModeAddFB(drmmode->fd, width, height, scrn->depth, - scrn->bitsPerPixel, pitch, pNv->scanout->handle, - &drmmode->fb_id); - if (ret) - goto fail; + if (drmmode) { + ret = drmModeAddFB(drmmode->fd, width, height, scrn->depth, + scrn->bitsPerPixel, pitch, pNv->scanout->handle, + &drmmode->fb_id); + if (ret) + goto fail; + } if (pNv->ShadowPtr) { free(pNv->ShadowPtr); @@ -1214,7 +1220,8 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) scrn->virtualX = old_width; scrn->virtualY = old_height; scrn->displayWidth = old_pitch; - drmmode->fb_id = old_fb_id; + if (drmmode) + drmmode->fb_id = old_fb_id; return FALSE; } @@ -1241,6 +1248,14 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp) xf86CrtcSetSizeRange(pScrn, 320, 200, drmmode->mode_res->max_width, drmmode->mode_res->max_height); + + if (!drmmode->mode_res->count_connectors || + !drmmode->mode_res->count_crtcs) { + drmModeFreeResources(drmmode->mode_res); + xfree(drmmode); + goto done; + } + for (i = 0; i < drmmode->mode_res->count_crtcs; i++) { if (!xf86IsEntityShared(pScrn->entityList[0]) || (pScrn->confScreen->device->screen == i)) @@ -1250,6 +1265,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp) for (i = 0; i < drmmode->mode_res->count_connectors; i++) drmmode_output_init(pScrn, drmmode, i); +done: #ifdef NOUVEAU_PIXMAP_SHARING xf86ProviderSetup(pScrn, NULL, "nouveau"); #endif @@ -1280,7 +1296,7 @@ drmmode_remove_fb(ScrnInfoPtr pScrn) drmmode_crtc_private_ptr drmmode_crtc; drmmode_ptr drmmode; - if (config) + if (config && config->num_crtc) crtc = config->crtc[0]; if (!crtc) return; diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index e462a86..5511b36 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -266,6 +266,9 @@ can_exchange(DrawablePtr draw, PixmapPtr dst_pix, PixmapPtr src_pix) NVPtr pNv = NVPTR(scrn); int i; + 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) diff --git a/src/nv_driver.c b/src/nv_driver.c index 8a112db..38eddac 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -426,7 +426,7 @@ NVEnterVT(VT_FUNC_ARGS_DECL) if (ret) ErrorF("Unable to get master: %s\n", strerror(errno)); - if (!xf86SetDesiredModes(pScrn)) + if (XF86_CRTC_CONFIG_PTR(pScrn)->num_crtc && !xf86SetDesiredModes(pScrn)) return FALSE; if (pNv->overlayAdaptor && pNv->Architecture != NV_ARCH_04) @@ -559,7 +559,8 @@ NVCloseScreen(CLOSE_SCREEN_ARGS_DECL) ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); NVPtr pNv = NVPTR(pScrn); - drmmode_screen_fini(pScreen); + if (XF86_CRTC_CONFIG_PTR(pScrn)->num_crtc) + drmmode_screen_fini(pScreen); if (!pNv->NoAccel) nouveau_dri2_fini(pScreen); @@ -687,6 +688,7 @@ nouveau_setup_capabilities(ScrnInfoPtr pScrn) { #ifdef NOUVEAU_PIXMAP_SHARING NVPtr pNv = NVPTR(pScrn); + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); uint64_t value; int ret; @@ -695,8 +697,11 @@ nouveau_setup_capabilities(ScrnInfoPtr pScrn) if (ret == 0) { if (value & DRM_PRIME_CAP_EXPORT) pScrn->capabilities |= RR_Capability_SourceOutput; - if (value & DRM_PRIME_CAP_IMPORT) - pScrn->capabilities |= RR_Capability_SourceOffload | RR_Capability_SinkOutput; + if (value & DRM_PRIME_CAP_IMPORT) { + pScrn->capabilities |= RR_Capability_SourceOffload; + if (xf86_config->num_crtc) + pScrn->capabilities |= RR_Capability_SinkOutput; + } } #endif } @@ -862,8 +867,6 @@ NVPreInit(ScrnInfoPtr pScrn, int flags) NVPreInitFail("\n"); dev = pNv->dev; - nouveau_setup_capabilities(pScrn); - pScrn->chipset = malloc(sizeof(char) * 25); sprintf(pScrn->chipset, "NVIDIA NV%02x", dev->chipset); xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Chipset: \"%s\"\n", pScrn->chipset); @@ -1102,9 +1105,35 @@ NVPreInit(ScrnInfoPtr pScrn, int flags) if (!xf86SetGamma(pScrn, gammazeros)) NVPreInitFail("\n"); - /* No usable mode */ +#ifdef NOUVEAU_PIXMAP_SHARING + /* + * The driver will not work as gpu screen without acceleration enabled. + * To support this usecase modesetting ddx can be used instead. + */ + if (pNv->NoAccel || pNv->ShadowFB) { + /* + * Optimus mode requires acceleration enabled. + * So if no mode is found, or the screen is created + * as a gpu screen the pre init should fail. + */ + if (pScrn->is_gpu || !pScrn->modes) + return FALSE; + } + +#else + /* No usable mode, no optimus config possible */ if (!pScrn->modes) return FALSE; +#endif + + nouveau_setup_capabilities(pScrn); + + if (!pScrn->modes) { + pScrn->modes = xf86ModesAdd(pScrn->modes, + xf86CVTMode(pScrn->display->virtualX, + pScrn->display->virtualY, + 60, 0, 0)); + } /* Set the current mode to the first in the list */ pScrn->currentMode = pScrn->modes; @@ -1389,7 +1418,7 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) * Initialize HW cursor layer. * Must follow software cursor initialization. */ - if (pNv->HWCursor) { + if (xf86_config->num_crtc && pNv->HWCursor) { ret = drmmode_cursor_init(pScreen); if (ret != TRUE) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -1444,7 +1473,8 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) * Initialize colormap layer. * Must follow initialization of the default colormap */ - if (!xf86HandleColormaps(pScreen, 256, 8, NVLoadPalette, + if (xf86_config->num_crtc && + !xf86HandleColormaps(pScreen, 256, 8, NVLoadPalette, NULL, CMAP_PALETTED_TRUECOLOR)) return FALSE; @@ -1452,7 +1482,10 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) if (serverGeneration == 1) xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options); - drmmode_screen_init(pScreen); + if (xf86_config->num_crtc) + drmmode_screen_init(pScreen); + else + pNv->glx_vblank = FALSE; return TRUE; } commit bf72ae1f6574c540f0afc2d7845d41df43507a8f Author: Ben Skeggs <bske...@redhat.com> Date: Wed May 15 22:05:01 2013 +1000 nve0: envyas isn't overly clever.. avoid short-form instructions Signed-off-by: Ben Skeggs <bske...@redhat.com> diff --git a/src/shader/exac8nve0.fp b/src/shader/exac8nve0.fp index 55cdde2..f4b4e82 100644 --- a/src/shader/exac8nve0.fp +++ b/src/shader/exac8nve0.fp @@ -35,8 +35,8 @@ interp mul f32 $r2 a[0x80] $r0 0x0 tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r2:$r3 () texbar 0x0 mul ftz rn f32 $r3 $r0 $r1 -mov b32 $r2 $r3 -mov b32 $r1 $r3 -mov b32 $r0 $r3 -exit +long mov b32 $r2 $r3 +long mov b32 $r1 $r3 +long mov b32 $r0 $r3 +long exit #endif diff --git a/src/shader/exac8nve0.fpc b/src/shader/exac8nve0.fpc index c7fc3bd..9e5e741 100644 --- a/src/shader/exac8nve0.fpc +++ b/src/shader/exac8nve0.fpc @@ -18,7 +18,11 @@ 0xf0000000, 0x0400dc40, 0x58000000, -0x00309c28, -0x00305c28, -0x00301c28, -0x88001dff, +0x0c009de4, +0x28000000, +0x0c005de4, +0x28000000, +0x0c001de4, +0x28000000, +0x00001de7, +0x80000000, diff --git a/src/shader/exacanve0.fp b/src/shader/exacanve0.fp index dc54771..edeb717 100644 --- a/src/shader/exacanve0.fp +++ b/src/shader/exacanve0.fp @@ -39,5 +39,5 @@ mul ftz rn f32 $r3 $r3 $r7 mul ftz rn f32 $r2 $r2 $r6 mul ftz rn f32 $r1 $r1 $r5 mul ftz rn f32 $r0 $r0 $r4 -exit +long exit #endif diff --git a/src/shader/exacanve0.fpc b/src/shader/exacanve0.fpc index 52a736d..a8320f0 100644 --- a/src/shader/exacanve0.fpc +++ b/src/shader/exacanve0.fpc @@ -26,4 +26,5 @@ 0x58000000, 0x10001c40, 0x58000000, -0x88001dff, +0x00001de7, +0x80000000, diff --git a/src/shader/exacmnve0.fp b/src/shader/exacmnve0.fp index 5e0edfe..09d22c1 100644 --- a/src/shader/exacmnve0.fp +++ b/src/shader/exacmnve0.fp @@ -39,5 +39,5 @@ mul ftz rn f32 $r3 $r3 $r4 mul ftz rn f32 $r2 $r2 $r4 mul ftz rn f32 $r1 $r1 $r4 mul ftz rn f32 $r0 $r0 $r4 -exit +long exit #endif diff --git a/src/shader/exacmnve0.fpc b/src/shader/exacmnve0.fpc index 15694a0..5c2d4bf 100644 --- a/src/shader/exacmnve0.fpc +++ b/src/shader/exacmnve0.fpc @@ -26,4 +26,5 @@ 0x58000000, 0x10001c40, 0x58000000, -0x88001dff, +0x00001de7, +0x80000000, diff --git a/src/shader/exas8nve0.fp b/src/shader/exas8nve0.fp index 9f96236..8626d9c 100644 --- a/src/shader/exas8nve0.fp +++ b/src/shader/exas8nve0.fp @@ -31,8 +31,8 @@ interp mul f32 $r1 a[0x84] $r0 0x0 interp mul f32 $r0 a[0x80] $r0 0x0 tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r0:$r1 () texbar 0x0 -mov b32 $r3 $r0 -mov b32 $r2 $r0 -mov b32 $r1 $r0 -exit +long mov b32 $r3 $r0 +long mov b32 $r2 $r0 +long mov b32 $r1 $r0 +long exit #endif diff --git a/src/shader/exas8nve0.fpc b/src/shader/exas8nve0.fpc index 2e487f5..ed4793c 100644 --- a/src/shader/exas8nve0.fpc +++ b/src/shader/exas8nve0.fpc @@ -10,7 +10,11 @@ 0x80120000, 0x00001de6, 0xf0000000, -0x0000dc28, -0x00009c28, -0x00005c28, -0x88001dff, +0x0000dde4, +0x28000000, +0x00009de4, +0x28000000, +0x00005de4, +0x28000000, +0x00001de7, +0x80000000, diff --git a/src/shader/exasanve0.fp b/src/shader/exasanve0.fp index 4ec257b..dea8eab 100644 --- a/src/shader/exasanve0.fp +++ b/src/shader/exasanve0.fp @@ -39,5 +39,5 @@ mul ftz rn f32 $r3 $r3 $r4 mul ftz rn f32 $r2 $r2 $r4 mul ftz rn f32 $r1 $r1 $r4 mul ftz rn f32 $r0 $r0 $r4 -exit +long exit #endif diff --git a/src/shader/exasanve0.fpc b/src/shader/exasanve0.fpc index 6a4d54b..efc701e 100644 --- a/src/shader/exasanve0.fpc +++ b/src/shader/exasanve0.fpc @@ -26,4 +26,5 @@ 0x58000000, 0x10001c40, 0x58000000, -0x88001dff, +0x00001de7, +0x80000000, diff --git a/src/shader/exascnve0.fp b/src/shader/exascnve0.fp index 5ec8496..355b894 100644 --- a/src/shader/exascnve0.fp +++ b/src/shader/exascnve0.fp @@ -31,5 +31,5 @@ interp mul f32 $r1 a[0x84] $r0 0x0 interp mul f32 $r0 a[0x80] $r0 0x0 tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () texbar 0x0 -exit +long exit #endif diff --git a/src/shader/exascnve0.fpc b/src/shader/exascnve0.fpc index 5bbd150..24ca7bc 100644 --- a/src/shader/exascnve0.fpc +++ b/src/shader/exascnve0.fpc @@ -10,4 +10,5 @@ 0x8013c000, 0x00001de6, 0xf0000000, -0x88001dff, +0x00001de7, +0x80000000, diff --git a/src/shader/videonve0.fp b/src/shader/videonve0.fp index a6675c9..f761bd5 100644 --- a/src/shader/videonve0.fp +++ b/src/shader/videonve0.fp @@ -46,5 +46,5 @@ fma ftz rn f32 $r5 $r0 c0[0x18] $r5 fma ftz rn f32 $r0 $r1 c0[0x1c] $r3 fma ftz rn f32 $r2 $r1 c0[0x24] $r5 fma ftz rn f32 $r1 $r1 c0[0x20] $r4 -exit +long exit #endif diff --git a/src/shader/videonve0.fpc b/src/shader/videonve0.fpc index c4f1b09..4df540b 100644 --- a/src/shader/videonve0.fpc +++ b/src/shader/videonve0.fpc @@ -40,4 +40,5 @@ 0x300a4000, 0x80105c40, 0x30084000, -0x88001dff, +0x00001de7, +0x80000000, diff --git a/src/shader/xfrm2nve0.vp b/src/shader/xfrm2nve0.vp index 4e39f53..c949ea6 100644 --- a/src/shader/xfrm2nve0.vp +++ b/src/shader/xfrm2nve0.vp -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1umhqi-0000gz...@vasks.debian.org