All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
@ 2015-06-30  3:30 Mario Kleiner
       [not found] ` <1435635043-3738-1-git-send-email-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Mario Kleiner @ 2015-06-30  3:30 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w,
	bskeggs-H+wXaHxf7aLQT0dZR+AlfA

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@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@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found] ` <1435635043-3738-1-git-send-email-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-06-30  7:00   ` Martin Peres
  2015-07-04 17:17   ` Ilia Mirkin
  1 sibling, 0 replies; 17+ messages in thread
From: Martin Peres @ 2015-06-30  7:00 UTC (permalink / raw)
  To: Mario Kleiner, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: bskeggs-H+wXaHxf7aLQT0dZR+AlfA

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@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@free.fr>
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found] ` <1435635043-3738-1-git-send-email-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2015-06-30  7:00   ` Martin Peres
@ 2015-07-04 17:17   ` Ilia Mirkin
       [not found]     ` <CAKb7UvhOcQ1-y2q3_8RZzvLewhsZ3A1OHC=vo3uBSwX3XTR0Eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  1 sibling, 1 reply; 17+ messages in thread
From: Ilia Mirkin @ 2015-07-04 17:17 UTC (permalink / raw)
  To: Mario Kleiner
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Ben Skeggs

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@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@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@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]     ` <CAKb7UvhOcQ1-y2q3_8RZzvLewhsZ3A1OHC=vo3uBSwX3XTR0Eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-04 18:23       ` Emil Velikov
       [not found]         ` <CACvgo53NaCJ6r+1LdJEG78Zyi+SBfMu2y1Mkm2HCKUo7Co5zQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Emil Velikov @ 2015-07-04 18:23 UTC (permalink / raw)
  To: Ilia Mirkin
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Mario Kleiner, Ben Skeggs

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@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@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@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@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/nouveau
> _______________________________________________
> Nouveau mailing list
> Nouveau@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]         ` <CACvgo53NaCJ6r+1LdJEG78Zyi+SBfMu2y1Mkm2HCKUo7Co5zQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-04 18:28           ` Ilia Mirkin
       [not found]             ` <CAKb7Uvj-7AeG8EQ58cZZhF1O7HU=E_VkKO8wi7LpitoNBmCjGg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Ilia Mirkin @ 2015-07-04 18:28 UTC (permalink / raw)
  To: Emil Velikov
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Mario Kleiner, Ben Skeggs

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 <emil.l.velikov@gmail.com> 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 <imirkin@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@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@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@lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
>> _______________________________________________
>> Nouveau mailing list
>> Nouveau@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]             ` <CAKb7Uvj-7AeG8EQ58cZZhF1O7HU=E_VkKO8wi7LpitoNBmCjGg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-04 19:03               ` Emil Velikov
       [not found]                 ` <CACvgo50R5kPGVAwDYTUSCkY-Cfh=HENFDT8OdT=nNKLG85=S9Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Emil Velikov @ 2015-07-04 19:03 UTC (permalink / raw)
  To: Ilia Mirkin
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Mario Kleiner, Ben Skeggs

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 <imirkin@alum.mit.edu> 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 <emil.l.velikov@gmail.com> 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 <imirkin@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@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@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@lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
>>> _______________________________________________
>>> Nouveau mailing list
>>> Nouveau@lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                 ` <CACvgo50R5kPGVAwDYTUSCkY-Cfh=HENFDT8OdT=nNKLG85=S9Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-07 19:51                   ` Ilia Mirkin
       [not found]                     ` <CAKb7UvhuYJxLk1zPQbdTgG_HQcbo0Zt_TnpHf7gD2apk+RYCdA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Ilia Mirkin @ 2015-07-07 19:51 UTC (permalink / raw)
  To: Emil Velikov
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Mario Kleiner, Ben Skeggs

Lastly, from some discussions with ajax on IRC, it appears that DRI3
is half-baked at best wrt sync between server and client. I think we
should just disable it by default for now, until issues are ironed
out. (Rather than what this patch has, which is default-on for Xorg >
some version.)

On Sat, Jul 4, 2015 at 3:03 PM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> 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 <imirkin@alum.mit.edu> 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 <emil.l.velikov@gmail.com> 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 <imirkin@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@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@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@lists.freedesktop.org
>>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
>>>> _______________________________________________
>>>> Nouveau mailing list
>>>> Nouveau@lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                     ` <CAKb7UvhuYJxLk1zPQbdTgG_HQcbo0Zt_TnpHf7gD2apk+RYCdA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-14  3:43                       ` Mario Kleiner
       [not found]                         ` <55A48575.5060100-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Mario Kleiner @ 2015-07-14  3:43 UTC (permalink / raw)
  To: Ilia Mirkin, Emil Velikov
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Ben Skeggs

On 07/07/2015 09:51 PM, Ilia Mirkin wrote:
> Lastly, from some discussions with ajax on IRC, it appears that DRI3
> is half-baked at best wrt sync between server and client. I think we
> should just disable it by default for now, until issues are ironed
> out. (Rather than what this patch has, which is default-on for Xorg >
> some version.)

What are the remaining known trouble spots wrt. sync? It seems to work 
pretty well at least for single gpu + unredirected fullscreen windows 
(== kms page flipping can be used for Presents. That's the use case i 
usually test very obsessively, as it matters very much for my type of 
applications, but other than that i only lightly "test" it via regular 
desktop use, so maybe that's were problems remain?

We can disable it by default on exa - intel and amd/radeon drivers also 
disable by default. However, on gpus >= maxwell only glamor accel is 
supported and glamor on nouveau is either dri3/present or no hw accel at 
all afaics.

Btw. there are also a few patches made by Chris Wilson floating on the 
mailing list since around january, some are reviewed and tested by 
myself, but not included in xorg master. Might be good for people to 
have a look at them and maybe get them into xorg 1.18?

>
> On Sat, Jul 4, 2015 at 3:03 PM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>> 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).

I can change that to allow selection between "2" and "3" - at least for 
exa, on glamor the parameter "2" would either need to get ignored or it 
would completely disable hw acceleration. I went for consistency with 
the ati ddx because i found the intel variant too confusing. I think it 
changed multiple times during the last year.

thanks,
-mario

>>
>> -Emil
>>
>>
>> On 4 July 2015 at 19:28, Ilia Mirkin <imirkin@alum.mit.edu> 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 <emil.l.velikov@gmail.com> 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 <imirkin@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@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@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@lists.freedesktop.org
>>>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
>>>>> _______________________________________________
>>>>> Nouveau mailing list
>>>>> Nouveau@lists.freedesktop.org
>>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                         ` <55A48575.5060100-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-07-14 15:26                           ` Ilia Mirkin
       [not found]                             ` <CAKb7Uvi7pCT-rkFxfpsmw-P0UhF86ZrEdtmJDc3kU+REz7oZ3Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2015-07-24 15:40                           ` Ilia Mirkin
  1 sibling, 1 reply; 17+ messages in thread
From: Ilia Mirkin @ 2015-07-14 15:26 UTC (permalink / raw)
  To: Mario Kleiner
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

On Mon, Jul 13, 2015 at 11:43 PM, Mario Kleiner
<mario.kleiner.de@gmail.com> wrote:
> On 07/07/2015 09:51 PM, Ilia Mirkin wrote:
>>
>> Lastly, from some discussions with ajax on IRC, it appears that DRI3
>> is half-baked at best wrt sync between server and client. I think we
>> should just disable it by default for now, until issues are ironed
>> out. (Rather than what this patch has, which is default-on for Xorg >
>> some version.)
>
>
> What are the remaining known trouble spots wrt. sync? It seems to work
> pretty well at least for single gpu + unredirected fullscreen windows (==
> kms page flipping can be used for Presents. That's the use case i usually
> test very obsessively, as it matters very much for my type of applications,
> but other than that i only lightly "test" it via regular desktop use, so
> maybe that's were problems remain?

Adam is the one who actually understands it... I was just asking
questions and the answer was "that's broken". A user was using DRI3
with EXA (nouveau DDX), and was seeing render fail in the form of
stale things on the screen. The nouveau DDX does a lot of "implicit"
sync stuff... it just emits commands into a pushbuf without kicking
it. However the libdrm code has cleverness to kick out any pushbufs if
you do a nouveau_bo_wait and that bo has been referenced.

HOWEVER if you have a pixmap and you share it using the fd thing, and
another process makes a (shared) bo out of it, and then does a
nouveau_bo_wait, that in no way will cause the DDX to kick its
pushbuf. Apparently there's some sort of sync thing that's supposed to
happen, but that's entirely unimplemented for DRI3. Unfortunately I
can't provide more details than that, as my knowledge of X internals
is quite limited. Some sort of DRI drawable or GLX drawable or ...
something.

I have no proof that this is the cause of the issue the user was
seeing, in fact it's just as likely to be something else. However this
seems like a pretty significant issue to me.

>
> We can disable it by default on exa - intel and amd/radeon drivers also
> disable by default. However, on gpus >= maxwell only glamor accel is
> supported and glamor on nouveau is either dri3/present or no hw accel at all
> afaics.

You probably saw my patches to just remove glamor from nouveau :) That
integration doesn't support DRI2, which in turn means no core contexts
(due to lack of GLX_ARB_create_context_profile), and a slew of other
issues. Seemed easier to just tell people to go use modesetting, which
gets all of these things right(er).

>
> Btw. there are also a few patches made by Chris Wilson floating on the
> mailing list since around january, some are reviewed and tested by myself,
> but not included in xorg master. Might be good for people to have a look at
> them and maybe get them into xorg 1.18?

I would not oppose the reviewing of Chris's patches ;) However I'm in
no position to evaluate them myself.

>
>>
>> On Sat, Jul 4, 2015 at 3:03 PM, Emil Velikov <emil.l.velikov@gmail.com>
>> wrote:
>>>
>>> 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).
>
>
> I can change that to allow selection between "2" and "3" - at least for exa,
> on glamor the parameter "2" would either need to get ignored or it would
> completely disable hw acceleration. I went for consistency with the ati ddx
> because i found the intel variant too confusing. I think it changed multiple
> times during the last year.

Bleargh. The ati ddx option name is much newer. Has it seen a release
yet? It'd be really nice to get all the DDX's to just agree on
something, instead of having different-but-similar options which
confuse everyone.

  -ilia
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                             ` <CAKb7Uvi7pCT-rkFxfpsmw-P0UhF86ZrEdtmJDc3kU+REz7oZ3Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-14 19:00                               ` Mario Kleiner
       [not found]                                 ` <55A55C40.4000207-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Mario Kleiner @ 2015-07-14 19:00 UTC (permalink / raw)
  To: Ilia Mirkin
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

On 07/14/2015 05:26 PM, Ilia Mirkin wrote:
> On Mon, Jul 13, 2015 at 11:43 PM, Mario Kleiner
> <mario.kleiner.de@gmail.com> wrote:
>> On 07/07/2015 09:51 PM, Ilia Mirkin wrote:
>>>
>>> Lastly, from some discussions with ajax on IRC, it appears that DRI3
>>> is half-baked at best wrt sync between server and client. I think we
>>> should just disable it by default for now, until issues are ironed
>>> out. (Rather than what this patch has, which is default-on for Xorg >
>>> some version.)
>>
>>
>> What are the remaining known trouble spots wrt. sync? It seems to work
>> pretty well at least for single gpu + unredirected fullscreen windows (==
>> kms page flipping can be used for Presents. That's the use case i usually
>> test very obsessively, as it matters very much for my type of applications,
>> but other than that i only lightly "test" it via regular desktop use, so
>> maybe that's were problems remain?
>
> Adam is the one who actually understands it... I was just asking
> questions and the answer was "that's broken". A user was using DRI3
> with EXA (nouveau DDX), and was seeing render fail in the form of
> stale things on the screen. The nouveau DDX does a lot of "implicit"
> sync stuff... it just emits commands into a pushbuf without kicking
> it. However the libdrm code has cleverness to kick out any pushbufs if
> you do a nouveau_bo_wait and that bo has been referenced.
>
> HOWEVER if you have a pixmap and you share it using the fd thing, and
> another process makes a (shared) bo out of it, and then does a
> nouveau_bo_wait, that in no way will cause the DDX to kick its
> pushbuf. Apparently there's some sort of sync thing that's supposed to

Although then i'd expect the other process to hang in nouveau_bo_wait? 
There probably isn't a specific fdo bug for this?

> happen, but that's entirely unimplemented for DRI3. Unfortunately I
> can't provide more details than that, as my knowledge of X internals
> is quite limited. Some sort of DRI drawable or GLX drawable or ...
> something.
>
> I have no proof that this is the cause of the issue the user was
> seeing, in fact it's just as likely to be something else. However this
> seems like a pretty significant issue to me.
>

Ok, thanks for the explanation. But would this problem then be limited 
to exa + nouveau? glamor uses opengl and thereby mesa's and i think mesa 
gets sync right afaik, at least in the glx/dri3 backend. Didn't look at 
egl backend though. At least i didn't see any such corruption?

I'll change the patch to default to DRI 2 then for exa, and glamor will 
ignore the DRI parameter anyway and stick to DRI3.

>>
>> We can disable it by default on exa - intel and amd/radeon drivers also
>> disable by default. However, on gpus >= maxwell only glamor accel is
>> supported and glamor on nouveau is either dri3/present or no hw accel at all
>> afaics.
>
> You probably saw my patches to just remove glamor from nouveau :) That
> integration doesn't support DRI2, which in turn means no core contexts
> (due to lack of GLX_ARB_create_context_profile), and a slew of other
> issues. Seemed easier to just tell people to go use modesetting, which
> gets all of these things right(er).
>

Hm, a total removal would at least make me and my users rather unhappy 
atm., as without glamor no hw accel at all on >= maxwell. modesetting 
and nouveau are not on par feature-wise atm. E.g., modesetting as of the 
next xorg 1.18 server only provides pageflipping via dri3/present and 
without pageflipping it is game over for many of my use cases on 
nouveau-kms. Also modesetting currently completely lacks ZaphodHeads 
support. Without ZaphodHeads i can't have a page-flipped fullscreen 
window on one subset of outputs and a regular desktop on another subset, 
something that is needed for neuroscience/medical/vr applications.

So i'd rather like to preserve the choice of glamor.

What makes glamor + dri2 difficult to support in nouveau vs. other drivers?

>>
>> Btw. there are also a few patches made by Chris Wilson floating on the
>> mailing list since around january, some are reviewed and tested by myself,
>> but not included in xorg master. Might be good for people to have a look at
>> them and maybe get them into xorg 1.18?
>
> I would not oppose the reviewing of Chris's patches ;) However I'm in
> no position to evaluate them myself.
>
>>
>>>
>>> On Sat, Jul 4, 2015 at 3:03 PM, Emil Velikov <emil.l.velikov@gmail.com>
>>> wrote:
>>>>
>>>> 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).
>>
>>
>> I can change that to allow selection between "2" and "3" - at least for exa,
>> on glamor the parameter "2" would either need to get ignored or it would
>> completely disable hw acceleration. I went for consistency with the ati ddx
>> because i found the intel variant too confusing. I think it changed multiple
>> times during the last year.
>
> Bleargh. The ati ddx option name is much newer. Has it seen a release
> yet? It'd be really nice to get all the DDX's to just agree on
> something, instead of having different-but-similar options which
> confuse everyone.
>

No release tagged yet, so one could still change it.

-mario

>    -ilia
>
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                                 ` <55A55C40.4000207-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-07-14 19:12                                   ` Ilia Mirkin
  2015-07-18 11:09                                   ` Dave Airlie
  1 sibling, 0 replies; 17+ messages in thread
From: Ilia Mirkin @ 2015-07-14 19:12 UTC (permalink / raw)
  To: Mario Kleiner
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

On Tue, Jul 14, 2015 at 3:00 PM, Mario Kleiner
<mario.kleiner.de@gmail.com> wrote:
> On 07/14/2015 05:26 PM, Ilia Mirkin wrote:
>>
>> On Mon, Jul 13, 2015 at 11:43 PM, Mario Kleiner
>> <mario.kleiner.de@gmail.com> wrote:
>>>
>>> On 07/07/2015 09:51 PM, Ilia Mirkin wrote:
>>>>
>>>>
>>>> Lastly, from some discussions with ajax on IRC, it appears that DRI3
>>>> is half-baked at best wrt sync between server and client. I think we
>>>> should just disable it by default for now, until issues are ironed
>>>> out. (Rather than what this patch has, which is default-on for Xorg >
>>>> some version.)
>>>
>>>
>>>
>>> What are the remaining known trouble spots wrt. sync? It seems to work
>>> pretty well at least for single gpu + unredirected fullscreen windows (==
>>> kms page flipping can be used for Presents. That's the use case i usually
>>> test very obsessively, as it matters very much for my type of
>>> applications,
>>> but other than that i only lightly "test" it via regular desktop use, so
>>> maybe that's were problems remain?
>>
>>
>> Adam is the one who actually understands it... I was just asking
>> questions and the answer was "that's broken". A user was using DRI3
>> with EXA (nouveau DDX), and was seeing render fail in the form of
>> stale things on the screen. The nouveau DDX does a lot of "implicit"
>> sync stuff... it just emits commands into a pushbuf without kicking
>> it. However the libdrm code has cleverness to kick out any pushbufs if
>> you do a nouveau_bo_wait and that bo has been referenced.
>>
>> HOWEVER if you have a pixmap and you share it using the fd thing, and
>> another process makes a (shared) bo out of it, and then does a
>> nouveau_bo_wait, that in no way will cause the DDX to kick its
>> pushbuf. Apparently there's some sort of sync thing that's supposed to
>
>
> Although then i'd expect the other process to hang in nouveau_bo_wait? There
> probably isn't a specific fdo bug for this?

No, because it's blissfully unaware of the fact that there's anything
to wait on for the bo (since it hasn't been kicked out by the process
and submitted to the kernel), and thus decides that the bo is ready to
use.

>
>> happen, but that's entirely unimplemented for DRI3. Unfortunately I
>> can't provide more details than that, as my knowledge of X internals
>> is quite limited. Some sort of DRI drawable or GLX drawable or ...
>> something.
>>
>> I have no proof that this is the cause of the issue the user was
>> seeing, in fact it's just as likely to be something else. However this
>> seems like a pretty significant issue to me.
>>
>
> Ok, thanks for the explanation. But would this problem then be limited to
> exa + nouveau? glamor uses opengl and thereby mesa's and i think mesa gets
> sync right afaik, at least in the glx/dri3 backend. Didn't look at egl
> backend though. At least i didn't see any such corruption?
>
> I'll change the patch to default to DRI 2 then for exa, and glamor will
> ignore the DRI parameter anyway and stick to DRI3.

TBH I have no idea how glamor works. Presumably it may have similar
issues, but perhaps it just sync's left and right so the problems
remain unseen. There's a "block handler" or something like that which
tends to flush things (in nouveau as well IIRC). Although that just
flushes out dirty pixmaps, not sure what causes something to get onto
the dirty pixmap list. That might still end up not flushing pending
commands out.

>
>>>
>>> We can disable it by default on exa - intel and amd/radeon drivers also
>>> disable by default. However, on gpus >= maxwell only glamor accel is
>>> supported and glamor on nouveau is either dri3/present or no hw accel at
>>> all
>>> afaics.
>>
>>
>> You probably saw my patches to just remove glamor from nouveau :) That
>> integration doesn't support DRI2, which in turn means no core contexts
>> (due to lack of GLX_ARB_create_context_profile), and a slew of other
>> issues. Seemed easier to just tell people to go use modesetting, which
>> gets all of these things right(er).
>>
>
> Hm, a total removal would at least make me and my users rather unhappy atm.,
> as without glamor no hw accel at all on >= maxwell. modesetting and nouveau
> are not on par feature-wise atm. E.g., modesetting as of the next xorg 1.18
> server only provides pageflipping via dri3/present and without pageflipping
> it is game over for many of my use cases on nouveau-kms. Also modesetting
> currently completely lacks ZaphodHeads support. Without ZaphodHeads i can't
> have a page-flipped fullscreen window on one subset of outputs and a regular
> desktop on another subset, something that is needed for
> neuroscience/medical/vr applications.
>
> So i'd rather like to preserve the choice of glamor.
>
> What makes glamor + dri2 difficult to support in nouveau vs. other drivers?

Lack of having been done, and a lack of desire by all parties involved
to do it. As-is the glamor integration is, unfortunately, quite
broken.

I have an EXA impl for maxwell in the works, although I haven't made
progress on it in months. It's missing some sort of
nouveau_scratch_data() style call to make a temp bo to put coordinates
in so that we can do draws on the 3d engine.

I highly suggest lobbying for these features in modesetting though,
I've heard of plans (that I highly disapprove of, at least for
nouveau, although my say in the matter may be limited) of killing off
DDX support for any glamor-capable hw.

>>> I can change that to allow selection between "2" and "3" - at least for
>>> exa,
>>> on glamor the parameter "2" would either need to get ignored or it would
>>> completely disable hw acceleration. I went for consistency with the ati
>>> ddx
>>> because i found the intel variant too confusing. I think it changed
>>> multiple
>>> times during the last year.
>>
>>
>> Bleargh. The ati ddx option name is much newer. Has it seen a release
>> yet? It'd be really nice to get all the DDX's to just agree on
>> something, instead of having different-but-similar options which
>> confuse everyone.
>>
>
> No release tagged yet, so one could still change it.

I'd *really* like at least some attempt to reconcile these things
among the DDX's.

  -ilia
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                                 ` <55A55C40.4000207-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2015-07-14 19:12                                   ` Ilia Mirkin
@ 2015-07-18 11:09                                   ` Dave Airlie
       [not found]                                     ` <CAPM=9ty34G39nceFnarvs0qOoJiyqjcsgXD0FdB4Ye_O1D+EhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  1 sibling, 1 reply; 17+ messages in thread
From: Dave Airlie @ 2015-07-18 11:09 UTC (permalink / raw)
  To: Mario Kleiner
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

>>>
>>> We can disable it by default on exa - intel and amd/radeon drivers also
>>> disable by default. However, on gpus >= maxwell only glamor accel is
>>> supported and glamor on nouveau is either dri3/present or no hw accel at
>>> all
>>> afaics.
>>
>>
>> You probably saw my patches to just remove glamor from nouveau :) That
>> integration doesn't support DRI2, which in turn means no core contexts
>> (due to lack of GLX_ARB_create_context_profile), and a slew of other
>> issues. Seemed easier to just tell people to go use modesetting, which
>> gets all of these things right(er).
>>
>
> Hm, a total removal would at least make me and my users rather unhappy atm.,
> as without glamor no hw accel at all on >= maxwell. modesetting and nouveau
> are not on par feature-wise atm. E.g., modesetting as of the next xorg 1.18
> server only provides pageflipping via dri3/present and without pageflipping
> it is game over for many of my use cases on nouveau-kms. Also modesetting
> currently completely lacks ZaphodHeads support. Without ZaphodHeads i can't
> have a page-flipped fullscreen window on one subset of outputs and a regular
> desktop on another subset, something that is needed for
> neuroscience/medical/vr applications.

So what would you want in modesetting to be on par?

DRI2 pageflipping?
zaphod heads?

anything else? I would like for F23 to ship a modesetting which I can
replace intel/nouveau/ati with.

Dave.
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                                     ` <CAPM=9ty34G39nceFnarvs0qOoJiyqjcsgXD0FdB4Ye_O1D+EhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-19  8:34                                       ` Mario Kleiner
       [not found]                                         ` <55AB6116.4000004-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2015-07-26 13:11                                       ` Pekka Paalanen
  1 sibling, 1 reply; 17+ messages in thread
From: Mario Kleiner @ 2015-07-19  8:34 UTC (permalink / raw)
  To: Dave Airlie
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

On 07/18/2015 01:09 PM, Dave Airlie wrote:
>>>>
>>>> We can disable it by default on exa - intel and amd/radeon drivers also
>>>> disable by default. However, on gpus >= maxwell only glamor accel is
>>>> supported and glamor on nouveau is either dri3/present or no hw accel at
>>>> all
>>>> afaics.
>>>
>>>
>>> You probably saw my patches to just remove glamor from nouveau :) That
>>> integration doesn't support DRI2, which in turn means no core contexts
>>> (due to lack of GLX_ARB_create_context_profile), and a slew of other
>>> issues. Seemed easier to just tell people to go use modesetting, which
>>> gets all of these things right(er).
>>>
>>
>> Hm, a total removal would at least make me and my users rather unhappy atm.,
>> as without glamor no hw accel at all on >= maxwell. modesetting and nouveau
>> are not on par feature-wise atm. E.g., modesetting as of the next xorg 1.18
>> server only provides pageflipping via dri3/present and without pageflipping
>> it is game over for many of my use cases on nouveau-kms. Also modesetting
>> currently completely lacks ZaphodHeads support. Without ZaphodHeads i can't
>> have a page-flipped fullscreen window on one subset of outputs and a regular
>> desktop on another subset, something that is needed for
>> neuroscience/medical/vr applications.
>
> So what would you want in modesetting to be on par?
>
> DRI2 pageflipping?

Probably not needed? I debugged and tested the DRI3/Present page 
flipping with modesetting a few months ago. Haven't retested the most 
recent version of the patches in x-server master, but at that time they 
seemed to work pretty ok. I'll give this some more testing soon. I also 
ran it as my desktop for 2-3 days, afair without serious issues, but 
that wasn't the kind of obsessive stress testing i do for the OpenGL 
fullscreen pageflipping stuff.

I do remember dpms activity was a crasher last time i tested. Maybe 
resolved now?

> zaphod heads?
>

Mostly Zaphodheads would be the really important one for me. Lack of it 
= show stopper for many of my users applications. Users often want to 
split their gpu into at least 2 x-screens: One for the "operator" to 
control experimental work sessions via a regular desktop GUI, the other 
for one unredirected kms-pageflipped fullscreen window on one or 
multiple attached Zaphodheads outputs for the actual presentation on the 
2nd x-screen, e.g., single display, or dual display for stereoscopic 
stuff - stereo goggles and such, or > 2 displays for more advanced VR 
stuff. The page flipping is important in my case because precise timing 
and precise timestamping is important which we only get with page flips, 
also to get out pixels as bit-exact as possible without interference 
from compositors, e.g. texture mapping artifacts etc. On DRI3/Present, 
page flips are also the only way atm. to get tear-free Presents, the way 
it is implemented.

More regular users seem to like to have a separate x-screen for TV sets 
and use ZaphodHeads for that.

The current nouveau or radeon implementation would be a good reference 
for one that seems to work well with multiple ZaphodHeads per x-screen + 
1 extra patch of mine against nouveau floating on nouveau-devel "[PATCH] 
Take shift in crtc positions for ZaphodHeads configs into account." That 
patch is needed for nouveau-ddx, or any generic driver that deals with 
nouveau-kms. Afaics the other kms drivers return a 
kencoder->possible_crtcs mask which allows any crtc to go with any 
encoder, but nouveau-kms gets that info from the VBIOS DCB and sometimes 
the mask is a bit more special and needs the extra treatment from that 
patch, or bad things will happen, e.g., on some nv-50 cards.

> anything else? I would like for F23 to ship a modesetting which I can
> replace intel/nouveau/ati with.

Not at the moment. I'll think about it some more and give the current 
modesetting driver a bit more testing to see if something shows up.

thanks,
-mario

>
> Dave.
>
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                                         ` <55AB6116.4000004-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-07-22  4:39                                           ` Dave Airlie
       [not found]                                             ` <CAPM=9twESbxOf+r4cy=-B+FNpKQwm8dvgbA9b-6XNbo275KLKw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Dave Airlie @ 2015-07-22  4:39 UTC (permalink / raw)
  To: Mario Kleiner
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

On 19 July 2015 at 18:34, Mario Kleiner <mario.kleiner.de@gmail.com> wrote:
> On 07/18/2015 01:09 PM, Dave Airlie wrote:
>>>>>
>>>>>
>>>>> We can disable it by default on exa - intel and amd/radeon drivers also
>>>>> disable by default. However, on gpus >= maxwell only glamor accel is
>>>>> supported and glamor on nouveau is either dri3/present or no hw accel
>>>>> at
>>>>> all
>>>>> afaics.
>>>>
>>>>
>>>>
>>>> You probably saw my patches to just remove glamor from nouveau :) That
>>>> integration doesn't support DRI2, which in turn means no core contexts
>>>> (due to lack of GLX_ARB_create_context_profile), and a slew of other
>>>> issues. Seemed easier to just tell people to go use modesetting, which
>>>> gets all of these things right(er).
>>>>
>>>
>>> Hm, a total removal would at least make me and my users rather unhappy
>>> atm.,
>>> as without glamor no hw accel at all on >= maxwell. modesetting and
>>> nouveau
>>> are not on par feature-wise atm. E.g., modesetting as of the next xorg
>>> 1.18
>>> server only provides pageflipping via dri3/present and without
>>> pageflipping
>>> it is game over for many of my use cases on nouveau-kms. Also modesetting
>>> currently completely lacks ZaphodHeads support. Without ZaphodHeads i
>>> can't
>>> have a page-flipped fullscreen window on one subset of outputs and a
>>> regular
>>> desktop on another subset, something that is needed for
>>> neuroscience/medical/vr applications.
>>
>>
>> So what would you want in modesetting to be on par?
>>
>> DRI2 pageflipping?
>
>
> Probably not needed? I debugged and tested the DRI3/Present page flipping
> with modesetting a few months ago. Haven't retested the most recent version
> of the patches in x-server master, but at that time they seemed to work
> pretty ok. I'll give this some more testing soon. I also ran it as my
> desktop for 2-3 days, afair without serious issues, but that wasn't the kind
> of obsessive stress testing i do for the OpenGL fullscreen pageflipping
> stuff.
>
> I do remember dpms activity was a crasher last time i tested. Maybe resolved
> now?
>
>> zaphod heads?
>>
>
> Mostly Zaphodheads would be the really important one for me. Lack of it =
> show stopper for many of my users applications. Users often want to split
> their gpu into at least 2 x-screens: One for the "operator" to control
> experimental work sessions via a regular desktop GUI, the other for one
> unredirected kms-pageflipped fullscreen window on one or multiple attached
> Zaphodheads outputs for the actual presentation on the 2nd x-screen, e.g.,
> single display, or dual display for stereoscopic stuff - stereo goggles and
> such, or > 2 displays for more advanced VR stuff. The page flipping is
> important in my case because precise timing and precise timestamping is
> important which we only get with page flips, also to get out pixels as
> bit-exact as possible without interference from compositors, e.g. texture
> mapping artifacts etc. On DRI3/Present, page flips are also the only way
> atm. to get tear-free Presents, the way it is implemented.
>
> More regular users seem to like to have a separate x-screen for TV sets and
> use ZaphodHeads for that.
>
> The current nouveau or radeon implementation would be a good reference for
> one that seems to work well with multiple ZaphodHeads per x-screen + 1 extra
> patch of mine against nouveau floating on nouveau-devel "[PATCH] Take shift
> in crtc positions for ZaphodHeads configs into account." That patch is
> needed for nouveau-ddx, or any generic driver that deals with nouveau-kms.
> Afaics the other kms drivers return a kencoder->possible_crtcs mask which
> allows any crtc to go with any encoder, but nouveau-kms gets that info from
> the VBIOS DCB and sometimes the mask is a bit more special and needs the
> extra treatment from that patch, or bad things will happen, e.g., on some
> nv-50 cards.
>
>> anything else? I would like for F23 to ship a modesetting which I can
>> replace intel/nouveau/ati with.
>
>
> Not at the moment. I'll think about it some more and give the current
> modesetting driver a bit more testing to see if something shows up.

Hi Mario,

just to follow up, I posted a patch to xorg-devel to add Zaphod support
to modesetting, it at least starts here!

Can you take a look at it and let me know what else it might need doing,
since I see you've been active in the other drivers.

Dave.
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                         ` <55A48575.5060100-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2015-07-14 15:26                           ` Ilia Mirkin
@ 2015-07-24 15:40                           ` Ilia Mirkin
  1 sibling, 0 replies; 17+ messages in thread
From: Ilia Mirkin @ 2015-07-24 15:40 UTC (permalink / raw)
  To: Mario Kleiner
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

Here's an example of what happens with DRI3:
https://bugs.freedesktop.org/show_bug.cgi?id=91445

I'm not equipped to figure out why.

On Mon, Jul 13, 2015 at 11:43 PM, Mario Kleiner
<mario.kleiner.de@gmail.com> wrote:
> On 07/07/2015 09:51 PM, Ilia Mirkin wrote:
>>
>> Lastly, from some discussions with ajax on IRC, it appears that DRI3
>> is half-baked at best wrt sync between server and client. I think we
>> should just disable it by default for now, until issues are ironed
>> out. (Rather than what this patch has, which is default-on for Xorg >
>> some version.)
>
>
> What are the remaining known trouble spots wrt. sync? It seems to work
> pretty well at least for single gpu + unredirected fullscreen windows (==
> kms page flipping can be used for Presents. That's the use case i usually
> test very obsessively, as it matters very much for my type of applications,
> but other than that i only lightly "test" it via regular desktop use, so
> maybe that's were problems remain?
>
> We can disable it by default on exa - intel and amd/radeon drivers also
> disable by default. However, on gpus >= maxwell only glamor accel is
> supported and glamor on nouveau is either dri3/present or no hw accel at all
> afaics.
>
> Btw. there are also a few patches made by Chris Wilson floating on the
> mailing list since around january, some are reviewed and tested by myself,
> but not included in xorg master. Might be good for people to have a look at
> them and maybe get them into xorg 1.18?
>
>>
>> On Sat, Jul 4, 2015 at 3:03 PM, Emil Velikov <emil.l.velikov@gmail.com>
>> wrote:
>>>
>>> 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).
>
>
> I can change that to allow selection between "2" and "3" - at least for exa,
> on glamor the parameter "2" would either need to get ignored or it would
> completely disable hw acceleration. I went for consistency with the ati ddx
> because i found the intel variant too confusing. I think it changed multiple
> times during the last year.
>
> thanks,
> -mario
>
>>>
>>> -Emil
>>>
>>>
>>> On 4 July 2015 at 19:28, Ilia Mirkin <imirkin@alum.mit.edu> 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 <emil.l.velikov@gmail.com>
>>>> 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 <imirkin@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@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@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@lists.freedesktop.org
>>>>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
>>>>>>
>>>>>> _______________________________________________
>>>>>> Nouveau mailing list
>>>>>> Nouveau@lists.freedesktop.org
>>>>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                                             ` <CAPM=9twESbxOf+r4cy=-B+FNpKQwm8dvgbA9b-6XNbo275KLKw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2015-07-26  8:12                                               ` Mario Kleiner
  0 siblings, 0 replies; 17+ messages in thread
From: Mario Kleiner @ 2015-07-26  8:12 UTC (permalink / raw)
  To: Dave Airlie
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Emil Velikov, Ben Skeggs

On 07/22/2015 06:39 AM, Dave Airlie wrote:
> On 19 July 2015 at 18:34, Mario Kleiner <mario.kleiner.de@gmail.com> wrote:
>> On 07/18/2015 01:09 PM, Dave Airlie wrote:
>>>>>>
>>>>>>
>>>>>> We can disable it by default on exa - intel and amd/radeon drivers also
>>>>>> disable by default. However, on gpus >= maxwell only glamor accel is
>>>>>> supported and glamor on nouveau is either dri3/present or no hw accel
>>>>>> at
>>>>>> all
>>>>>> afaics.
>>>>>
>>>>>
>>>>>
>>>>> You probably saw my patches to just remove glamor from nouveau :) That
>>>>> integration doesn't support DRI2, which in turn means no core contexts
>>>>> (due to lack of GLX_ARB_create_context_profile), and a slew of other
>>>>> issues. Seemed easier to just tell people to go use modesetting, which
>>>>> gets all of these things right(er).
>>>>>
>>>>
>>>> Hm, a total removal would at least make me and my users rather unhappy
>>>> atm.,
>>>> as without glamor no hw accel at all on >= maxwell. modesetting and
>>>> nouveau
>>>> are not on par feature-wise atm. E.g., modesetting as of the next xorg
>>>> 1.18
>>>> server only provides pageflipping via dri3/present and without
>>>> pageflipping
>>>> it is game over for many of my use cases on nouveau-kms. Also modesetting
>>>> currently completely lacks ZaphodHeads support. Without ZaphodHeads i
>>>> can't
>>>> have a page-flipped fullscreen window on one subset of outputs and a
>>>> regular
>>>> desktop on another subset, something that is needed for
>>>> neuroscience/medical/vr applications.
>>>
>>>
>>> So what would you want in modesetting to be on par?
>>>
>>> DRI2 pageflipping?
>>
>>
>> Probably not needed? I debugged and tested the DRI3/Present page flipping
>> with modesetting a few months ago. Haven't retested the most recent version
>> of the patches in x-server master, but at that time they seemed to work
>> pretty ok. I'll give this some more testing soon. I also ran it as my
>> desktop for 2-3 days, afair without serious issues, but that wasn't the kind
>> of obsessive stress testing i do for the OpenGL fullscreen pageflipping
>> stuff.
>>
>> I do remember dpms activity was a crasher last time i tested. Maybe resolved
>> now?
>>
>>> zaphod heads?
>>>
>>
>> Mostly Zaphodheads would be the really important one for me. Lack of it =
>> show stopper for many of my users applications. Users often want to split
>> their gpu into at least 2 x-screens: One for the "operator" to control
>> experimental work sessions via a regular desktop GUI, the other for one
>> unredirected kms-pageflipped fullscreen window on one or multiple attached
>> Zaphodheads outputs for the actual presentation on the 2nd x-screen, e.g.,
>> single display, or dual display for stereoscopic stuff - stereo goggles and
>> such, or > 2 displays for more advanced VR stuff. The page flipping is
>> important in my case because precise timing and precise timestamping is
>> important which we only get with page flips, also to get out pixels as
>> bit-exact as possible without interference from compositors, e.g. texture
>> mapping artifacts etc. On DRI3/Present, page flips are also the only way
>> atm. to get tear-free Presents, the way it is implemented.
>>
>> More regular users seem to like to have a separate x-screen for TV sets and
>> use ZaphodHeads for that.
>>
>> The current nouveau or radeon implementation would be a good reference for
>> one that seems to work well with multiple ZaphodHeads per x-screen + 1 extra
>> patch of mine against nouveau floating on nouveau-devel "[PATCH] Take shift
>> in crtc positions for ZaphodHeads configs into account." That patch is
>> needed for nouveau-ddx, or any generic driver that deals with nouveau-kms.
>> Afaics the other kms drivers return a kencoder->possible_crtcs mask which
>> allows any crtc to go with any encoder, but nouveau-kms gets that info from
>> the VBIOS DCB and sometimes the mask is a bit more special and needs the
>> extra treatment from that patch, or bad things will happen, e.g., on some
>> nv-50 cards.
>>
>>> anything else? I would like for F23 to ship a modesetting which I can
>>> replace intel/nouveau/ati with.
>>
>>
>> Not at the moment. I'll think about it some more and give the current
>> modesetting driver a bit more testing to see if something shows up.
>
> Hi Mario,
>
> just to follow up, I posted a patch to xorg-devel to add Zaphod support
> to modesetting, it at least starts here!
>
> Can you take a look at it and let me know what else it might need doing,
> since I see you've been active in the other drivers.
>
> Dave.
>

Very cool, thanks for doing this Dave! I will try to review and test it 
early next week.

-mario
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA.
       [not found]                                     ` <CAPM=9ty34G39nceFnarvs0qOoJiyqjcsgXD0FdB4Ye_O1D+EhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2015-07-19  8:34                                       ` Mario Kleiner
@ 2015-07-26 13:11                                       ` Pekka Paalanen
  1 sibling, 0 replies; 17+ messages in thread
From: Pekka Paalanen @ 2015-07-26 13:11 UTC (permalink / raw)
  To: Dave Airlie
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Mario Kleiner, Emil Velikov, Ben Skeggs

On Sat, 18 Jul 2015 21:09:46 +1000
Dave Airlie <airlied@gmail.com> wrote:

> > Hm, a total removal would at least make me and my users rather unhappy atm.,
> > as without glamor no hw accel at all on >= maxwell. modesetting and nouveau
> > are not on par feature-wise atm. E.g., modesetting as of the next xorg 1.18
> > server only provides pageflipping via dri3/present and without pageflipping
> > it is game over for many of my use cases on nouveau-kms. Also modesetting
> > currently completely lacks ZaphodHeads support. Without ZaphodHeads i can't
> > have a page-flipped fullscreen window on one subset of outputs and a regular
> > desktop on another subset, something that is needed for
> > neuroscience/medical/vr applications.
> 
> So what would you want in modesetting to be on par?
> 
> DRI2 pageflipping?
> zaphod heads?
> 
> anything else? I would like for F23 to ship a modesetting which I can
> replace intel/nouveau/ati with.

Hi,

FYI, it seems the Oculus Rift also prefers a ZaphodHeads setup.
http://blog.emarcs.org/blog/oculus-rift-direct-mode-on-linux/


Thanks,
pq
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2015-07-26 13:11 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-30  3:30 [PATCH] Add Option "DRI3" to allow to disable DRI3 under EXA Mario Kleiner
     [not found] ` <1435635043-3738-1-git-send-email-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-06-30  7:00   ` Martin Peres
2015-07-04 17:17   ` Ilia Mirkin
     [not found]     ` <CAKb7UvhOcQ1-y2q3_8RZzvLewhsZ3A1OHC=vo3uBSwX3XTR0Eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-04 18:23       ` Emil Velikov
     [not found]         ` <CACvgo53NaCJ6r+1LdJEG78Zyi+SBfMu2y1Mkm2HCKUo7Co5zQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-04 18:28           ` Ilia Mirkin
     [not found]             ` <CAKb7Uvj-7AeG8EQ58cZZhF1O7HU=E_VkKO8wi7LpitoNBmCjGg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-04 19:03               ` Emil Velikov
     [not found]                 ` <CACvgo50R5kPGVAwDYTUSCkY-Cfh=HENFDT8OdT=nNKLG85=S9Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-07 19:51                   ` Ilia Mirkin
     [not found]                     ` <CAKb7UvhuYJxLk1zPQbdTgG_HQcbo0Zt_TnpHf7gD2apk+RYCdA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-14  3:43                       ` Mario Kleiner
     [not found]                         ` <55A48575.5060100-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-07-14 15:26                           ` Ilia Mirkin
     [not found]                             ` <CAKb7Uvi7pCT-rkFxfpsmw-P0UhF86ZrEdtmJDc3kU+REz7oZ3Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-14 19:00                               ` Mario Kleiner
     [not found]                                 ` <55A55C40.4000207-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-07-14 19:12                                   ` Ilia Mirkin
2015-07-18 11:09                                   ` Dave Airlie
     [not found]                                     ` <CAPM=9ty34G39nceFnarvs0qOoJiyqjcsgXD0FdB4Ye_O1D+EhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-19  8:34                                       ` Mario Kleiner
     [not found]                                         ` <55AB6116.4000004-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-07-22  4:39                                           ` Dave Airlie
     [not found]                                             ` <CAPM=9twESbxOf+r4cy=-B+FNpKQwm8dvgbA9b-6XNbo275KLKw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-26  8:12                                               ` Mario Kleiner
2015-07-26 13:11                                       ` Pekka Paalanen
2015-07-24 15:40                           ` Ilia Mirkin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.