Mario Kleiner
2015-Jun-30 03:30 UTC
[Nouveau] [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
X-Server versions older than 1.16.3 have bugs in their DRI3/Present implementation which impair nouveau, so it is better to stick to good old DRI2 by default on such servers. E.g., page flipping doesn't work at all under DRI3/Present with older servers, and use of extensions like OML_sync_control, SGI_video_sync or INTEL_swap_events also causes failure of Present. nouveau's glamor accel backend currently doesn't work under DRI2, so continue to use DRI3 whenever it is supported. Under the exa accel backend, DRI2 works just fine, so disable DRI3 and choose DRI2 by default when nouveau is built for X-Server < 1.16.3, and enable DRI3 if building on later X-Servers which work reasonably well under DRI3/Present. A new boolean xorg.conf Option "DRI3" allows to enforce or prevent use of DRI3/Present under EXA acceleration for testing. Also add a bit more output about status of Present and DRI3 to aid debugging. Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com> --- man/nouveau.man | 6 ++++++ src/nouveau_dri2.c | 11 ++++++++++- src/nv_const.h | 2 ++ src/nv_driver.c | 17 +++++++++++++++-- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/man/nouveau.man b/man/nouveau.man index 129bb7f..12cfbc0 100644 --- a/man/nouveau.man +++ b/man/nouveau.man @@ -125,6 +125,12 @@ that relies on correct presentation timing behaviour as defined in that specification. .br Default: 1. +.TP +.BI "Option \*qDRI3\*q \*q" boolean \*q +Enable the DRI3 extension under exa acceleration if supported by server. +A setting of "off" will only use DRI2 instead. Under glamor acceleration, +DRI3 is always enabled if supported. Default: on for XOrg >= 1.16.3, off for +earlier versions. .SH "SEE ALSO" __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) .SH AUTHORS diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index f22e319..d818976 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -1130,7 +1130,16 @@ nouveau_dri3_screen_init(ScreenPtr screen) if (buf && stat(buf, &render) == 0 && master.st_mode == render.st_mode) { pNv->render_node = buf; - return dri3_screen_init(screen, &nouveau_dri3_screen_info); + if (dri3_screen_init(screen, &nouveau_dri3_screen_info)) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "DRI3 on EXA enabled\n"); + return TRUE; + } + else { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "DRI3 on EXA initialization failed\n"); + return FALSE; + } } else free(buf); #endif diff --git a/src/nv_const.h b/src/nv_const.h index f1b4e9b..df1e398 100644 --- a/src/nv_const.h +++ b/src/nv_const.h @@ -18,6 +18,7 @@ typedef enum { OPTION_SWAP_LIMIT, OPTION_ASYNC_COPY, OPTION_ACCELMETHOD, + OPTION_DRI3, } NVOpts; @@ -34,6 +35,7 @@ static const OptionInfoRec NVOptions[] = { { OPTION_SWAP_LIMIT, "SwapLimit", OPTV_INTEGER, {0}, FALSE }, { OPTION_ASYNC_COPY, "AsyncUTSDFS", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, + { OPTION_DRI3, "DRI3", OPTV_BOOLEAN, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; diff --git a/src/nv_driver.c b/src/nv_driver.c index 8e2ae03..32f04d8 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -1470,7 +1470,13 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) xf86SetBlackWhitePixels(pScreen); - nouveau_present_init(pScreen); + if (nouveau_present_init(pScreen) <= 0) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Hardware support for Present disabled\n"); + else + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Hardware support for Present enabled\n"); + nouveau_sync_init(pScreen); nouveau_dri2_init(pScreen); if (pNv->AccelMethod == GLAMOR) { @@ -1478,7 +1484,14 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) return FALSE; } else if (pNv->AccelMethod == EXA) { - if (!nouveau_dri3_screen_init(pScreen)) + /* Default to DRI3/Present on XOrg >= 1.16.3, DRI2 on older + * servers, as older servers have DRI3/Present bugs affecting + * nouveau. + */ + ret = xf86ReturnOptValBool(pNv->Options, OPTION_DRI3, + XORG_VERSION_CURRENT >+ XORG_VERSION_NUMERIC(1,16,3,0,0)); + if (ret && !nouveau_dri3_screen_init(pScreen)) return FALSE; if (!nouveau_exa_init(pScreen)) -- 1.9.1
Martin Peres
2015-Jun-30 07:00 UTC
[Nouveau] [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
On 30/06/2015 06:30, Mario Kleiner wrote:> X-Server versions older than 1.16.3 have bugs in their > DRI3/Present implementation which impair nouveau, so > it is better to stick to good old DRI2 by default on > such servers. E.g., page flipping doesn't work at all > under DRI3/Present with older servers, and use of > extensions like OML_sync_control, SGI_video_sync or > INTEL_swap_events also causes failure of Present. > > nouveau's glamor accel backend currently doesn't work under > DRI2, so continue to use DRI3 whenever it is supported. > > Under the exa accel backend, DRI2 works just fine, so > disable DRI3 and choose DRI2 by default when nouveau > is built for X-Server < 1.16.3, and enable DRI3 if > building on later X-Servers which work reasonably well > under DRI3/Present. > > A new boolean xorg.conf Option "DRI3" allows to enforce or > prevent use of DRI3/Present under EXA acceleration for > testing. > > Also add a bit more output about status of Present and > DRI3 to aid debugging. > > Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com> > --- > man/nouveau.man | 6 ++++++ > src/nouveau_dri2.c | 11 ++++++++++- > src/nv_const.h | 2 ++ > src/nv_driver.c | 17 +++++++++++++++-- > 4 files changed, 33 insertions(+), 3 deletions(-) > > diff --git a/man/nouveau.man b/man/nouveau.man > index 129bb7f..12cfbc0 100644 > --- a/man/nouveau.man > +++ b/man/nouveau.man > @@ -125,6 +125,12 @@ that relies on correct presentation timing behaviour as defined in that > specification. > .br > Default: 1. > +.TP > +.BI "Option \*qDRI3\*q \*q" boolean \*q > +Enable the DRI3 extension under exa acceleration if supported by server. > +A setting of "off" will only use DRI2 instead. Under glamor acceleration, > +DRI3 is always enabled if supported. Default: on for XOrg >= 1.16.3, off for > +earlier versions. > .SH "SEE ALSO" > __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) > .SH AUTHORS > diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c > index f22e319..d818976 100644 > --- a/src/nouveau_dri2.c > +++ b/src/nouveau_dri2.c > @@ -1130,7 +1130,16 @@ nouveau_dri3_screen_init(ScreenPtr screen) > if (buf && stat(buf, &render) == 0 && > master.st_mode == render.st_mode) { > pNv->render_node = buf; > - return dri3_screen_init(screen, &nouveau_dri3_screen_info); > + if (dri3_screen_init(screen, &nouveau_dri3_screen_info)) { > + xf86DrvMsg(pScrn->scrnIndex, X_INFO, > + "DRI3 on EXA enabled\n"); > + return TRUE; > + } > + else { > + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, > + "DRI3 on EXA initialization failed\n"); > + return FALSE; > + } > } else > free(buf); > #endif > diff --git a/src/nv_const.h b/src/nv_const.h > index f1b4e9b..df1e398 100644 > --- a/src/nv_const.h > +++ b/src/nv_const.h > @@ -18,6 +18,7 @@ typedef enum { > OPTION_SWAP_LIMIT, > OPTION_ASYNC_COPY, > OPTION_ACCELMETHOD, > + OPTION_DRI3, > } NVOpts; > > > @@ -34,6 +35,7 @@ static const OptionInfoRec NVOptions[] = { > { OPTION_SWAP_LIMIT, "SwapLimit", OPTV_INTEGER, {0}, FALSE }, > { OPTION_ASYNC_COPY, "AsyncUTSDFS", OPTV_BOOLEAN, {0}, FALSE }, > { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, > + { OPTION_DRI3, "DRI3", OPTV_BOOLEAN, {0}, FALSE }, > { -1, NULL, OPTV_NONE, {0}, FALSE } > }; > > diff --git a/src/nv_driver.c b/src/nv_driver.c > index 8e2ae03..32f04d8 100644 > --- a/src/nv_driver.c > +++ b/src/nv_driver.c > @@ -1470,7 +1470,13 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) > > xf86SetBlackWhitePixels(pScreen); > > - nouveau_present_init(pScreen); > + if (nouveau_present_init(pScreen) <= 0) > + xf86DrvMsg(pScrn->scrnIndex, X_INFO, > + "Hardware support for Present disabled\n"); > + else > + xf86DrvMsg(pScrn->scrnIndex, X_INFO, > + "Hardware support for Present enabled\n"); > + > nouveau_sync_init(pScreen); > nouveau_dri2_init(pScreen); > if (pNv->AccelMethod == GLAMOR) { > @@ -1478,7 +1484,14 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) > return FALSE; > } else > if (pNv->AccelMethod == EXA) { > - if (!nouveau_dri3_screen_init(pScreen)) > + /* Default to DRI3/Present on XOrg >= 1.16.3, DRI2 on older > + * servers, as older servers have DRI3/Present bugs affecting > + * nouveau. > + */ > + ret = xf86ReturnOptValBool(pNv->Options, OPTION_DRI3, > + XORG_VERSION_CURRENT >> + XORG_VERSION_NUMERIC(1,16,3,0,0)); > + if (ret && !nouveau_dri3_screen_init(pScreen)) > return FALSE; > > if (!nouveau_exa_init(pScreen))I like the added verbosity and indeed, dri3 is not ready yet (I started working on it). I trust you for which version of the xserver is started working better and that you actually tested your code: Reviewed-by: Martin Peres <martin.peres at free.fr>
Ilia Mirkin
2015-Jul-04 17:17 UTC
[Nouveau] [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
IMO it'd be nice to keep this compatible with the intel driver, which has a "DRI" option, which can take the values 1, 2, 3. Obviously for nouveau, 1 makes no sense as that was dropped quite some time ago. See http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/man/intel.man#n68 On Mon, Jun 29, 2015 at 11:30 PM, Mario Kleiner <mario.kleiner.de at gmail.com> wrote:> X-Server versions older than 1.16.3 have bugs in their > DRI3/Present implementation which impair nouveau, so > it is better to stick to good old DRI2 by default on > such servers. E.g., page flipping doesn't work at all > under DRI3/Present with older servers, and use of > extensions like OML_sync_control, SGI_video_sync or > INTEL_swap_events also causes failure of Present. > > nouveau's glamor accel backend currently doesn't work under > DRI2, so continue to use DRI3 whenever it is supported. > > Under the exa accel backend, DRI2 works just fine, so > disable DRI3 and choose DRI2 by default when nouveau > is built for X-Server < 1.16.3, and enable DRI3 if > building on later X-Servers which work reasonably well > under DRI3/Present. > > A new boolean xorg.conf Option "DRI3" allows to enforce or > prevent use of DRI3/Present under EXA acceleration for > testing. > > Also add a bit more output about status of Present and > DRI3 to aid debugging. > > Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com> > --- > man/nouveau.man | 6 ++++++ > src/nouveau_dri2.c | 11 ++++++++++- > src/nv_const.h | 2 ++ > src/nv_driver.c | 17 +++++++++++++++-- > 4 files changed, 33 insertions(+), 3 deletions(-) > > diff --git a/man/nouveau.man b/man/nouveau.man > index 129bb7f..12cfbc0 100644 > --- a/man/nouveau.man > +++ b/man/nouveau.man > @@ -125,6 +125,12 @@ that relies on correct presentation timing behaviour as defined in that > specification. > .br > Default: 1. > +.TP > +.BI "Option \*qDRI3\*q \*q" boolean \*q > +Enable the DRI3 extension under exa acceleration if supported by server. > +A setting of "off" will only use DRI2 instead. Under glamor acceleration, > +DRI3 is always enabled if supported. Default: on for XOrg >= 1.16.3, off for > +earlier versions. > .SH "SEE ALSO" > __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) > .SH AUTHORS > diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c > index f22e319..d818976 100644 > --- a/src/nouveau_dri2.c > +++ b/src/nouveau_dri2.c > @@ -1130,7 +1130,16 @@ nouveau_dri3_screen_init(ScreenPtr screen) > if (buf && stat(buf, &render) == 0 && > master.st_mode == render.st_mode) { > pNv->render_node = buf; > - return dri3_screen_init(screen, &nouveau_dri3_screen_info); > + if (dri3_screen_init(screen, &nouveau_dri3_screen_info)) { > + xf86DrvMsg(pScrn->scrnIndex, X_INFO, > + "DRI3 on EXA enabled\n"); > + return TRUE; > + } > + else { > + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, > + "DRI3 on EXA initialization failed\n"); > + return FALSE; > + } > } else > free(buf); > #endif > diff --git a/src/nv_const.h b/src/nv_const.h > index f1b4e9b..df1e398 100644 > --- a/src/nv_const.h > +++ b/src/nv_const.h > @@ -18,6 +18,7 @@ typedef enum { > OPTION_SWAP_LIMIT, > OPTION_ASYNC_COPY, > OPTION_ACCELMETHOD, > + OPTION_DRI3, > } NVOpts; > > > @@ -34,6 +35,7 @@ static const OptionInfoRec NVOptions[] = { > { OPTION_SWAP_LIMIT, "SwapLimit", OPTV_INTEGER, {0}, FALSE }, > { OPTION_ASYNC_COPY, "AsyncUTSDFS", OPTV_BOOLEAN, {0}, FALSE }, > { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, > + { OPTION_DRI3, "DRI3", OPTV_BOOLEAN, {0}, FALSE }, > { -1, NULL, OPTV_NONE, {0}, FALSE } > }; > > diff --git a/src/nv_driver.c b/src/nv_driver.c > index 8e2ae03..32f04d8 100644 > --- a/src/nv_driver.c > +++ b/src/nv_driver.c > @@ -1470,7 +1470,13 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) > > xf86SetBlackWhitePixels(pScreen); > > - nouveau_present_init(pScreen); > + if (nouveau_present_init(pScreen) <= 0) > + xf86DrvMsg(pScrn->scrnIndex, X_INFO, > + "Hardware support for Present disabled\n"); > + else > + xf86DrvMsg(pScrn->scrnIndex, X_INFO, > + "Hardware support for Present enabled\n"); > + > nouveau_sync_init(pScreen); > nouveau_dri2_init(pScreen); > if (pNv->AccelMethod == GLAMOR) { > @@ -1478,7 +1484,14 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) > return FALSE; > } else > if (pNv->AccelMethod == EXA) { > - if (!nouveau_dri3_screen_init(pScreen)) > + /* Default to DRI3/Present on XOrg >= 1.16.3, DRI2 on older > + * servers, as older servers have DRI3/Present bugs affecting > + * nouveau. > + */ > + ret = xf86ReturnOptValBool(pNv->Options, OPTION_DRI3, > + XORG_VERSION_CURRENT >> + XORG_VERSION_NUMERIC(1,16,3,0,0)); > + if (ret && !nouveau_dri3_screen_init(pScreen)) > return FALSE; > > if (!nouveau_exa_init(pScreen)) > -- > 1.9.1 > > _______________________________________________ > Nouveau mailing list > Nouveau at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/nouveau
Emil Velikov
2015-Jul-04 18:23 UTC
[Nouveau] [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
That would be great, as long as it does only that and does not go into the "drivername" territory. As the said driver ;-) "A driver name to use can be provided instead of simple boolean value, which will be passed to the GL implementation for it to load the appropriate backend." -Emil On 4 July 2015 at 18:17, Ilia Mirkin <imirkin at alum.mit.edu> wrote:> IMO it'd be nice to keep this compatible with the intel driver, which > has a "DRI" option, which can take the values 1, 2, 3. Obviously for > nouveau, 1 makes no sense as that was dropped quite some time ago. > > See http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/man/intel.man#n68 > > On Mon, Jun 29, 2015 at 11:30 PM, Mario Kleiner > <mario.kleiner.de at gmail.com> wrote: >> X-Server versions older than 1.16.3 have bugs in their >> DRI3/Present implementation which impair nouveau, so >> it is better to stick to good old DRI2 by default on >> such servers. E.g., page flipping doesn't work at all >> under DRI3/Present with older servers, and use of >> extensions like OML_sync_control, SGI_video_sync or >> INTEL_swap_events also causes failure of Present. >> >> nouveau's glamor accel backend currently doesn't work under >> DRI2, so continue to use DRI3 whenever it is supported. >> >> Under the exa accel backend, DRI2 works just fine, so >> disable DRI3 and choose DRI2 by default when nouveau >> is built for X-Server < 1.16.3, and enable DRI3 if >> building on later X-Servers which work reasonably well >> under DRI3/Present. >> >> A new boolean xorg.conf Option "DRI3" allows to enforce or >> prevent use of DRI3/Present under EXA acceleration for >> testing. >> >> Also add a bit more output about status of Present and >> DRI3 to aid debugging. >> >> Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com> >> --- >> man/nouveau.man | 6 ++++++ >> src/nouveau_dri2.c | 11 ++++++++++- >> src/nv_const.h | 2 ++ >> src/nv_driver.c | 17 +++++++++++++++-- >> 4 files changed, 33 insertions(+), 3 deletions(-) >> >> diff --git a/man/nouveau.man b/man/nouveau.man >> index 129bb7f..12cfbc0 100644 >> --- a/man/nouveau.man >> +++ b/man/nouveau.man >> @@ -125,6 +125,12 @@ that relies on correct presentation timing behaviour as defined in that >> specification. >> .br >> Default: 1. >> +.TP >> +.BI "Option \*qDRI3\*q \*q" boolean \*q >> +Enable the DRI3 extension under exa acceleration if supported by server. >> +A setting of "off" will only use DRI2 instead. Under glamor acceleration, >> +DRI3 is always enabled if supported. Default: on for XOrg >= 1.16.3, off for >> +earlier versions. >> .SH "SEE ALSO" >> __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) >> .SH AUTHORS >> diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c >> index f22e319..d818976 100644 >> --- a/src/nouveau_dri2.c >> +++ b/src/nouveau_dri2.c >> @@ -1130,7 +1130,16 @@ nouveau_dri3_screen_init(ScreenPtr screen) >> if (buf && stat(buf, &render) == 0 && >> master.st_mode == render.st_mode) { >> pNv->render_node = buf; >> - return dri3_screen_init(screen, &nouveau_dri3_screen_info); >> + if (dri3_screen_init(screen, &nouveau_dri3_screen_info)) { >> + xf86DrvMsg(pScrn->scrnIndex, X_INFO, >> + "DRI3 on EXA enabled\n"); >> + return TRUE; >> + } >> + else { >> + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, >> + "DRI3 on EXA initialization failed\n"); >> + return FALSE; >> + } >> } else >> free(buf); >> #endif >> diff --git a/src/nv_const.h b/src/nv_const.h >> index f1b4e9b..df1e398 100644 >> --- a/src/nv_const.h >> +++ b/src/nv_const.h >> @@ -18,6 +18,7 @@ typedef enum { >> OPTION_SWAP_LIMIT, >> OPTION_ASYNC_COPY, >> OPTION_ACCELMETHOD, >> + OPTION_DRI3, >> } NVOpts; >> >> >> @@ -34,6 +35,7 @@ static const OptionInfoRec NVOptions[] = { >> { OPTION_SWAP_LIMIT, "SwapLimit", OPTV_INTEGER, {0}, FALSE }, >> { OPTION_ASYNC_COPY, "AsyncUTSDFS", OPTV_BOOLEAN, {0}, FALSE }, >> { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, >> + { OPTION_DRI3, "DRI3", OPTV_BOOLEAN, {0}, FALSE }, >> { -1, NULL, OPTV_NONE, {0}, FALSE } >> }; >> >> diff --git a/src/nv_driver.c b/src/nv_driver.c >> index 8e2ae03..32f04d8 100644 >> --- a/src/nv_driver.c >> +++ b/src/nv_driver.c >> @@ -1470,7 +1470,13 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) >> >> xf86SetBlackWhitePixels(pScreen); >> >> - nouveau_present_init(pScreen); >> + if (nouveau_present_init(pScreen) <= 0) >> + xf86DrvMsg(pScrn->scrnIndex, X_INFO, >> + "Hardware support for Present disabled\n"); >> + else >> + xf86DrvMsg(pScrn->scrnIndex, X_INFO, >> + "Hardware support for Present enabled\n"); >> + >> nouveau_sync_init(pScreen); >> nouveau_dri2_init(pScreen); >> if (pNv->AccelMethod == GLAMOR) { >> @@ -1478,7 +1484,14 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) >> return FALSE; >> } else >> if (pNv->AccelMethod == EXA) { >> - if (!nouveau_dri3_screen_init(pScreen)) >> + /* Default to DRI3/Present on XOrg >= 1.16.3, DRI2 on older >> + * servers, as older servers have DRI3/Present bugs affecting >> + * nouveau. >> + */ >> + ret = xf86ReturnOptValBool(pNv->Options, OPTION_DRI3, >> + XORG_VERSION_CURRENT >>> + XORG_VERSION_NUMERIC(1,16,3,0,0)); >> + if (ret && !nouveau_dri3_screen_init(pScreen)) >> return FALSE; >> >> if (!nouveau_exa_init(pScreen)) >> -- >> 1.9.1 >> >> _______________________________________________ >> Nouveau mailing list >> Nouveau at lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/nouveau > _______________________________________________ > Nouveau mailing list > Nouveau at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/nouveau
Possibly Parallel Threads
- [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
- [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
- [PATCH 1/2] present: Fixup return type of nouveau_present_init()
- [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
- [Patches][nouveau/ddx]: Improvements to bufferswap implementation and timestamping