The DRI option with the intel ddx can be used to indicate the following - whether dri is disabled - the dri "version" - dri1, dri2, dri3 - the dri module name - doo_dri.so bar_dri.so
I'm not sure how exactly it's supposed to work/works, and I believe most of that is due to legacy reasons. I'm just saying let's not do the whole thing - just the dri "version" would be great (as you suggested). -Emil On 4 July 2015 at 19:28, Ilia Mirkin <[email protected]> wrote: > Erm, that's nuts. I also don't really understand what they're talking > about there... i915g vs i915? Anyways, I just meant the version > numbers :) > > On Sat, Jul 4, 2015 at 2:23 PM, Emil Velikov <[email protected]> wrote: >> 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 <[email protected]> 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 >>> <[email protected]> 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 <[email protected]> >>>> --- >>>> 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 >>>> [email protected] >>>> http://lists.freedesktop.org/mailman/listinfo/nouveau >>> _______________________________________________ >>> Nouveau mailing list >>> [email protected] >>> http://lists.freedesktop.org/mailman/listinfo/nouveau _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
