! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
Garbled display - use_compositing
Status:
RESOLVED: WONTFIX

Comments

Description poma 2015-06-05 12:43:44 CEST
Garbled display
~~~~~~~~~~~~~~~


Chipset: NV34 (NV34)
Family : NV30

NVIDIA Corporation NV34 [GeForce FX 5200]
Kernel driver in use: nouveau
Kernel modules: nouveau
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fedora 22 i686


1. Starting from - Xpresent support: no

commit fee08eafa751a153ff93b04152ea66334141cac5
Author: Olivier Fourdan <fourdan@xfce.org>
Date:   Thu Apr 9 23:06:38 2015 +0200

    compositor: Add support for GLX
    
    Bug: 10439
    
    Using texture-from-pixmap extension.
    
    Signed-off-by: Olivier Fourdan <fourdan@xfce.org>


Build Configuration for xfwm4 version 4.12.0git.fee08ea revision fee08ea:
  Startup notification support: yes
  XSync support:                yes
  Render support:               yes
  Xrandr support:               yes
  Xpresent support:             no
  Embedded compositor:          yes
  Epoxy support:                yes
  KDE systray protocol proxy:   no


~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~ ~~~~~ ~~~~ ~~~ ~~ ~


2. Starting from - Xpresent support: yes

commit aee242cec4c3d8e8232d67875ec9fbfbeb504a9d
Author: Olivier Fourdan <fourdan@xfce.org>
Date:   Mon Apr 27 21:40:27 2015 +0200

    compositor: Prefer GL over Present
    
    If both are available, try to use GL first and next Present.
    
    Signed-off-by: Olivier Fourdan <fourdan@xfce.org>


Build Configuration for xfwm4 version 4.12.0git.aee242c revision aee242c:
  Startup notification support: yes
  XSync support:                yes
  Render support:               yes
  Xrandr support:               yes
  Xpresent support:             yes
  Embedded compositor:          yes
  Epoxy support:                yes
  KDE systray protocol proxy:   no
Comment 1 poma 2015-06-05 12:45:41 CEST
Created attachment 6301 
Xfwm4 GLX NV34 nouveau - garbled display
Comment 2 poma 2015-06-05 12:49:11 CEST
Created attachment 6302 
glxinfo NV34 nouveau
Comment 4 poma 2015-06-09 20:40:29 CEST
I recompiled Fedora 21 versions:

libdrm-2.4.60-1.fc22.i686
xorg-x11-server-common-1.16.3-2.fc22.i686
xorg-x11-server-Xorg-1.16.3-2.fc22.i686
xorg-x11-drv-modesetting-0.9.0-2.fc22.i686
xorg-x11-drv-nouveau-1.0.11-1.fc22.i686
mesa-dri-drivers-10.4.7-1.20150323.fc22.i686
mesa-filesystem-10.4.7-1.20150323.fc22.i686
mesa-libEGL-10.4.7-1.20150323.fc22.i686
mesa-libgbm-10.4.7-1.20150323.fc22.i686
mesa-libGL-10.4.7-1.20150323.fc22.i686
mesa-libglapi-10.4.7-1.20150323.fc22.i686
mesa-libGLES-10.4.7-1.20150323.fc22.i686

and tried once more,
but the result is the same - "analytical cubism" - with Xfwm4 GLX build
$ xfconf-query -c xfwm4 -p /general/use_compositing
true


Interestingly, in contrast to Xorg-1.17.1,
on Xorg-1.16.3 NV30 can work with 'modesetting':

[ 8.911] 
X.Org X Server 1.16.3
Release Date: 2014-12-20
[ 8.911] X Protocol Version 11, Revision 0
[ 8.911] Build Operating System: lnx 4.0.4-303.fc22.i686 
[ 8.914] Build Date: 09 June 2015  04:53:40PM
[ 8.914] Build ID: xorg-x11-server 1.16.3-2.fc22 
[ 8.914] Current version of pixman: 0.32.6
[ 8.914] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jun  9 19:36:31 2015
[ 8.915] (==) Using config directory: "/etc/X11/xorg.conf.d"
[ 8.915] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 8.915] (==) No Layout section.  Using the first Screen section.

[ 8.915] (==) No screen section available. Using defaults.
[ 8.915] (**) |-->Screen "Default Screen Section" (0)
[ 8.915] (**) |   |-->Monitor "<default monitor>"
[ 8.916] (==) No device specified for screen "Default Screen Section".
	Using the first device section listed.
[ 8.916] (**) |   |-->Device "NVIDIA NV34"
[ 8.916] (==) No monitor specified for screen "Default Screen Section".
	Using a default monitor configuration.
[ 8.916] (==) Automatically adding devices
[ 8.916] (==) Automatically enabling devices
[ 8.916] (==) Automatically adding GPU devices
[ 8.916] (==) ModulePath set to "/usr/lib/xorg/modules"
[ 8.916] (II) Loader magic: 0x8282740
[ 8.916] (II) Module ABI versions:
[ 8.916] 	X.Org ANSI C Emulation: 0.4
[ 8.916] 	X.Org Video Driver: 18.0
[ 8.916] 	X.Org Server Extension : 8.0
[ 8.924] (II) xfree86: Adding drm device (/dev/dri/card0)
[ 8.929] (II) LoadModule: "glx"
[ 8.929] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 8.948] (II) Module glx: vendor="X.Org Foundation"
[ 8.948] 	compiled for 1.16.3, module version = 1.0.0
[ 8.948] 	ABI class: X.Org Server Extension, version 8.0
[ 8.948] (==) AIGLX enabled
[ 8.948] (II) LoadModule: "modesetting"
[ 8.948] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 8.948] (II) Module modesetting: vendor="X.Org Foundation"
[ 8.948] 	compiled for 1.16.3, module version = 0.9.0
[ 8.948] 	Module class: X.Org Video Driver
[ 8.948] 	ABI class: X.Org Video Driver, version 18.0
[ 8.948] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 8.948] (++) using VT number 1

[ 8.949] (II) modesetting(0): using drv /dev/dri/card0
[ 8.949] (II) modesetting(0): Creating default Display subsection in Screen section
[ 9.039] (II) modesetting(0): Output DVI-0 has no monitor section
[ 9.186] (II) modesetting(0): EDID for output DVI-0
[ 9.215] (II) modesetting(0): Output DVI-0 connected
[ 9.217] (==) modesetting(0): Backing store enabled
[ 9.217] (II) modesetting(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[ 9.238] (==) modesetting(0): DPMS enabled
[ 9.260] (--) RandR disabled
[ 9.277] (II) AIGLX: Screen 0 is not DRI2 capable
[ 9.277] (EE) AIGLX: reverting to software rendering
[ 9.295] (II) AIGLX: Loaded and initialized swrast
[ 9.295] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[ 9.297] (II) modesetting(0): Damage tracking initialized
[ 9.297] (II) modesetting(0): Setting screen physical size to 370 x 277
...
Comment 5 poma 2015-06-09 21:22:20 CEST
Let's leave this for upstream - Nouveau/Mesa.
Comment 6 Olivier Fourdan editbugs 2015-06-15 21:56:54 CEST
Can you retry with current git code?
Comment 7 poma 2015-06-16 18:54:06 CEST
(In reply to Olivier Fourdan from comment #6)
> Can you retry with current git code?

Déjà vu. :)
Comment 8 Olivier Fourdan editbugs 2015-06-16 20:12:55 CEST
(In reply to poma from comment #7)
> (In reply to Olivier Fourdan from comment #6)
> > Can you retry with current git code?
> 
> Déjà vu. :)

Please try to be more specific and helpful with your comments, what is that supposed to mean? Trying to guess what you mean in a bugzilla comment is not fun and counter productive for me.

The reason I posted my question yesterday is because I have pushed several fixes in git master to help with the proprietary driver, and that means that the implementation is now more in line with the specs.

Beside, the previous code was not checking for GL errors at any point whereas now it does and log messages (even more when debug is enabled) when things go wrong.

So, what does comment 7 mean, does it mean that you did try after git commit 8a67212 [1] was pushed and it's still the same?... in which case I would ask to try with xfwm4 debug enabled and capture the log.

[1] http://git.xfce.org/xfce/xfwm4/commit/?id=8a67212
Comment 9 Olivier Fourdan editbugs 2015-06-16 20:59:40 CEST
Note, if that does not work with current, git I'll provide you wit ha much simpler test program to try that we can use for https://bugs.freedesktop.org/show_bug.cgi?id=90871
Comment 10 poma 2015-06-16 21:01:34 CEST
(In reply to Olivier Fourdan from comment #8)
> (In reply to poma from comment #7)
> > (In reply to Olivier Fourdan from comment #6)
> > > Can you retry with current git code?
> > 
> > Déjà vu. :)
> 
> Please try to be more specific and helpful with your comments, what is that
> supposed to mean? Trying to guess what you mean in a bugzilla comment is not
> fun and counter productive for me.
> 
> The reason I posted my question yesterday is because I have pushed several
> fixes in git master to help with the proprietary driver, and that means that
> the implementation is now more in line with the specs.
> 
> Beside, the previous code was not checking for GL errors at any point
> whereas now it does and log messages (even more when debug is enabled) when
> things go wrong.
> 
> So, what does comment 7 mean, does it mean that you did try after git commit
> 8a67212 [1] was pushed and it's still the same?... in which case I would ask
> to try with xfwm4 debug enabled and capture the log.
> 
> [1] http://git.xfce.org/xfce/xfwm4/commit/?id=8a67212


Déjà vu - from French, literally "already seen".
"already seen" == https://bugzilla.xfce.org/attachment.cgi?id=6301

BTW is it not that particular commit is related to a completely different bug report, completely different module - "NVidia proprietary driver"

Here the Nouveau is in use.

Tested:

--disable-epoxy --disable-xpresent:
xfwm4-4.12.3-11.0.git20150615.fc22.i686.rpm  --  OK

--disable-epoxy:
xfwm4-4.12.3-11.1.xpresent.git20150615.fc22.i686.rpm  --  OK

--:
xfwm4-4.12.3-11.2.glx.git20150615.fc22.i686.rpm  --  "already seen"


Satisfied?

-_-
Comment 11 poma 2015-10-21 12:58:39 CEST
What is going on?
Comment 12 Olivier Fourdan editbugs 2015-10-21 13:01:49 CEST
(In reply to poma from comment #11)
> What is going on?

Busy with work and life, thanks for asking.
Comment 13 poma 2015-10-21 17:32:47 CEST
Yeah, I've had a team working on this over the past few weeks, and what we've come up with can be reduced to two fundamental concepts. One: People aren't wearing enough hats.
Comment 14 poma 2015-10-22 04:54:33 CEST
It works started by red rectangle, then gray, but that's all, no discothèque!

diff -u a/tfp-test.c b/tfp-test.c
--- a/tfp-test.c
+++ b/tfp-test.c
@@ -101,9 +101,15 @@
     XGetWindowAttributes (dpy, win, &gwa);
     glViewport (0, 0, gwa.width, gwa.height);
 
+    glMatrixMode(GL_TEXTURE);
+    if (texture_type == GL_TEXTURE_RECTANGLE_ARB)
+        glScaled (pixmap_width, pixmap_height, 1.0);
+    else
+        glScaled (1.0, 1.0, 1.0);
+
     glPushMatrix ();
 
-    glScaled (1.0, 1.0, 1.0);
+
     glTranslated (0.0, 0.0, 0.0);
 
     glBegin (GL_QUADS);
@@ -147,8 +153,8 @@
     int fb_match;
     VisualID xvisual_id;
 
-    has_texture_rectangle =
-        epoxy_has_glx_extension (dpy, screen, "GL_ARB_texture_rectangle");
+    has_texture_rectangle = 1; /*
+        epoxy_has_gl_extension ("GL_ARB_texture_rectangle");*/
     if (has_texture_rectangle)
     {
         printf ("Using texture type GL_TEXTURE_RECTANGLE_ARB\n");
Comment 15 poma 2015-10-22 04:55:56 CEST
When turned on, remains only background (color) and the mouse cursor.

diff --git a/src/compositor.c b/src/compositor.c
index 8694956..961245b 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1108,15 +1108,11 @@ init_glx_extensions (ScreenInfo *screen_info)
                                  screen_info->screen,
                                  "GLX_EXT_texture_from_pixmap");
 
-    screen_info->has_texture_rectangle =
-        epoxy_has_glx_extension (myScreenGetXDisplay (screen_info),
-                                 screen_info->screen,
-                                 "GL_ARB_texture_rectangle");
+    screen_info->has_texture_rectangle = 1; /*
+        epoxy_has_gl_extension ("GL_ARB_texture_rectangle");*/
 
-    screen_info->has_texture_non_power_of_two =
-        epoxy_has_glx_extension (myScreenGetXDisplay (screen_info),
-                                 screen_info->screen,
-                                 "GL_ARB_texture_non_power_of_two");
+    screen_info->has_texture_non_power_of_two = 1; /*
+        epoxy_has_gl_extension ("GL_ARB_texture_non_power_of_two");*/
 }
 
 static gboolean
@@ -1532,7 +1528,6 @@ redraw_glx_texture (ScreenInfo *screen_info)
     TRACE ("entering redraw_glx_texture");
     TRACE ("(Re)Drawing GLX pixmap 0x%lx/texture 0x%x",
            screen_info->glx_drawable, screen_info->rootTexture);
-    glPushMatrix();
 
     if (screen_info->zoomed)
     {
@@ -1545,15 +1540,33 @@ redraw_glx_texture (ScreenInfo *screen_info)
         double x = (2.0 * XFixedToDouble (xp)) / screen_info->width - (1.0 - zoom);
         double y = (2.0 * XFixedToDouble (yp)) / screen_info->height -  (1.0 - zoom);
 
-        glScaled(1.0 / zoom, 1.0 / zoom, 1.0);
+        gint texture_type;
+        gint pixmap_width;
+        gint pixmap_height;
+
+        glMatrixMode(GL_TEXTURE);
+        if (texture_type == GL_TEXTURE_RECTANGLE_ARB)
+            glScaled (pixmap_width, pixmap_height, 1.0);
+        else
+            glScaled (1.0 / zoom, 1.0 / zoom, 1.0);
         glTranslated (-x, y, 0.0);
     }
     else
     {
-        glScaled(1.0, 1.0, 1.0);
-        glTranslated (0.0, 0.0, 0.0);
+        gint texture_type;
+        gint pixmap_width;
+        gint pixmap_height;
+
+        glMatrixMode(GL_TEXTURE);
+        if (texture_type == GL_TEXTURE_RECTANGLE_ARB)
+            glScaled (pixmap_width, pixmap_height, 1.0);
+        else
+            glScaled (1.0, 1.0, 1.0);
+            glTranslated (0.0, 0.0, 0.0);
     }
 
+    glPushMatrix();
+
     glViewport(0, 0, screen_info->width, screen_info->height);
 
     glBegin(GL_QUADS);
Comment 16 poma 2015-10-22 04:56:46 CEST
Bonjour!
Comment 17 Olivier Fourdan editbugs 2015-10-22 08:53:55 CEST
(In reply to poma from comment #13)
> Yeah, I've had a team working on this over the past few weeks, and what
> we've come up with can be reduced to two fundamental concepts. One: People
> aren't wearing enough hats.

-ENOSENSE

(In reply to poma from comment #14)
> It works started by red rectangle, then gray, but that's all, no discothèque!

So that one doesn't work.

(In reply to poma from comment #16)
> Bonjour!

Hi.

(In reply to poma from comment #15)
> When turned on, remains only background (color) and the mouse cursor.

Again, please try to be explicit in your posts, what are you trying to say here, that you copy/paste a patch that doesn't actually work? How does this help?

As stated in comment 12 I don't have much time to work on this at the moment, this will have to wait.
Comment 18 poma 2015-10-22 12:57:07 CEST

Removed OpenGL ARB - Extensions officially approved by the OpenGL Architecture Review Board
Interesting name for the extension.

After this comps started to work.

diff --git a/src/compositor.c b/src/compositor.c
index 8694956..f493bab 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1107,16 +1107,6 @@ init_glx_extensions (ScreenInfo *screen_info)
         epoxy_has_glx_extension (myScreenGetXDisplay (screen_info),
                                  screen_info->screen,
                                  "GLX_EXT_texture_from_pixmap");
-
-    screen_info->has_texture_rectangle =
-        epoxy_has_glx_extension (myScreenGetXDisplay (screen_info),
-                                 screen_info->screen,
-                                 "GL_ARB_texture_rectangle");
-
-    screen_info->has_texture_non_power_of_two =
-        epoxy_has_glx_extension (myScreenGetXDisplay (screen_info),
-                                 screen_info->screen,
-                                 "GL_ARB_texture_non_power_of_two");
 }
 
 static gboolean
@@ -1158,11 +1148,6 @@ choose_glx_settings (ScreenInfo *screen_info)
         return FALSE;
     }
 
-    if (screen_info->has_texture_rectangle)
-    {
-        DBG ("Using texture type GL_TEXTURE_RECTANGLE_ARB");
-        screen_info->texture_type = GL_TEXTURE_RECTANGLE_ARB;
-    }
     else
     {
         DBG ("Using texture type GL_TEXTURE_2D");
@@ -1209,32 +1194,6 @@ choose_glx_settings (ScreenInfo *screen_info)
             continue;
         }
 
-        if (screen_info->texture_type == GL_TEXTURE_RECTANGLE_ARB)
-        {
-            if (value & GLX_TEXTURE_RECTANGLE_BIT_EXT)
-            {
-                texture_target = GLX_TEXTURE_RECTANGLE_EXT;
-                DBG ("Using texture target GLX_TEXTURE_RECTANGLE_EXT");
-            }
-            else
-            {
-                DBG ("%i/%i: No GLX_TEXTURE_RECTANGLE_BIT_EXT, skipped", i + 1, n_configs);
-                continue;
-            }
-        }
-        else if (screen_info->texture_type == GL_TEXTURE_2D)
-        {
-            if (value & GLX_TEXTURE_2D_BIT_EXT)
-            {
-                texture_target = GLX_TEXTURE_2D_EXT;
-                DBG ("Using texture target GLX_TEXTURE_2D_EXT");
-            }
-            else
-            {
-                DBG ("%i/%i: No GLX_TEXTURE_2D_BIT_EXT, skipped", i + 1, n_configs);
-                continue;
-            }
-        }
         else
         {
             DBG ("%i/%i: No GLX_TEXTURE_*_BIT_EXT, skipped", i + 1, n_configs);
Comment 19 poma 2015-10-22 15:58:55 CEST
Created attachment 6488 
Fix GLX compositor on NV34


 = NV34 =

- current git
  & 
  patched w/ "Fix GLX compositor on NV34" 
  = the same performance =

~~~~~~~~~~~~~~~~~~~~~~~

$ ./src/xfwm4 --replace
Waiting for current window manager (Xfwm4) on screen :0.0 to exit: Done

(xfwm4:9058): xfwm4-WARNING **: Cannot find a matching visual for the frame buffer config.

(xfwm4:9058): xfwm4-WARNING **: Cannot find a matching GLX config, vsync disabled.
...

~~~~~~~~~~~~~~~~~~~~~~~~

$ vblank_mode=0 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
1388 frames in 5.0 seconds = 277.213 FPS
1388 frames in 5.0 seconds = 277.571 FPS
1453 frames in 5.0 seconds = 290.506 FPS
1480 frames in 5.0 seconds = 295.928 FPS
1468 frames in 5.0 seconds = 293.520 FPS
1478 frames in 5.0 seconds = 294.804 FPS
1464 frames in 5.0 seconds = 292.196 FPS
1494 frames in 5.0 seconds = 298.729 FPS
1465 frames in 5.0 seconds = 292.321 FPS
1474 frames in 5.0 seconds = 294.787 FPS
^C

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 = NV98 (G98) =

- current git:

~~~~~~~~~~~~~~~~~

$ xfwm4 --replace
Waiting for current window manager (Xfwm4) on screen :0.0 to exit: Done

~~~~~~~~~~~~~~~~~~~~~~~~

$ vblank_mode=0 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
4877 frames in 5.0 seconds = 975.395 FPS
4975 frames in 5.0 seconds = 994.891 FPS
4997 frames in 5.0 seconds = 998.709 FPS
4968 frames in 5.0 seconds = 993.405 FPS
4968 frames in 5.0 seconds = 993.482 FPS
5005 frames in 5.0 seconds = 1000.904 FPS
4973 frames in 5.0 seconds = 994.469 FPS
4955 frames in 5.0 seconds = 990.968 FPS
5008 frames in 5.0 seconds = 1001.600 FPS
4980 frames in 5.0 seconds = 995.966 FPS
^C

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- patched w/ "Fix GLX compositor on NV34"
  = more performant =

~~~~~~~~~~~~~~~~~

$ xfwm4 --replace
Waiting for current window manager (Xfwm4) on screen :0.0 to exit: Done

(xfwm4:3477): xfwm4-WARNING **: Cannot find a matching visual for the frame buffer config.

(xfwm4:3477): xfwm4-WARNING **: Cannot find a matching GLX config, vsync disabled.

~~~~~~~~~~~~~~~~~~~~~~~~

$ vblank_mode=0 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
6468 frames in 5.0 seconds = 1293.441 FPS
6521 frames in 5.0 seconds = 1304.194 FPS
6563 frames in 5.0 seconds = 1312.469 FPS
6554 frames in 5.0 seconds = 1310.687 FPS
6501 frames in 5.0 seconds = 1300.166 FPS
6550 frames in 5.0 seconds = 1309.931 FPS
6560 frames in 5.0 seconds = 1311.972 FPS
6523 frames in 5.0 seconds = 1304.467 FPS
6556 frames in 5.0 seconds = 1311.073 FPS
6546 frames in 5.0 seconds = 1309.164 FPS
^C
Comment 20 Olivier Fourdan editbugs 2015-10-22 16:13:42 CEST
(In reply to poma from comment #19)
> $ ./src/xfwm4 --replace
> Waiting for current window manager (Xfwm4) on screen :0.0 to exit: Done
> 
> (xfwm4:9058): xfwm4-WARNING **: Cannot find a matching visual for the frame
> buffer config.
> 
> (xfwm4:9058): xfwm4-WARNING **: Cannot find a matching GLX config, vsync
> disabled.
> ...

Means that it doesn't fix anything, it breaks GL and therefore vsync.
Comment 21 poma 2015-10-22 17:55:30 CEST
(In reply to Olivier Fourdan from comment #20)
> (In reply to poma from comment #19)
> > $ ./src/xfwm4 --replace
> > Waiting for current window manager (Xfwm4) on screen :0.0 to exit: Done
> > 
> > (xfwm4:9058): xfwm4-WARNING **: Cannot find a matching visual for the frame
> > buffer config.
> > 
> > (xfwm4:9058): xfwm4-WARNING **: Cannot find a matching GLX config, vsync
> > disabled.
> > ...
> 
> Means that it doesn't fix anything, it breaks GL and therefore vsync.


If GL is not used, then what is actually used in this case?
Comment 22 Olivier Fourdan editbugs 2015-10-22 18:04:43 CEST
(In reply to poma from comment #21)
> (In reply to Olivier Fourdan from comment #20)
> > (In reply to poma from comment #19)
> > Means that it doesn't fix anything, it breaks GL and therefore vsync.
> 
> 
> If GL is not used, then what is actually used in this case?

Xrender as before
Comment 23 poma 2015-10-22 19:06:13 CEST
Thank you for your time man.
Comment 24 poma 2015-11-06 17:18:33 CET
Xorg nouveau "v1.0.12" and DRI3/XPresent work OK
https://bugzilla.xfce.org/show_bug.cgi?id=11861#c8
Comment 25 Olivier Fourdan editbugs 2015-11-06 17:32:37 CET
(In reply to poma from comment #24)
> Xorg nouveau "v1.0.12" and DRI3/XPresent work OK
> https://bugzilla.xfce.org/show_bug.cgi?id=11861#c8

This bug 11962 is about nv34 card not supporting ARB_texture_rectangle and xfwm4 not handling this case correctly so this should be fixed in xfwm4 as pointed out in f.d.o bug #90871
Comment 26 Olivier Fourdan editbugs 2015-11-06 18:25:44 CET
A fix for this has been pushed as git commit 2cfac64 in master, but I don't have the hardware to test.

Can you test an up-to-date build with GL enabled on a nv34 card?
Comment 27 poma 2015-11-07 03:52:20 CET
NV34 / 4.3.0-1.fc24.i686
Both, DRI3/XPresent and GLX, use_compositing true:

dmesg:
WARNING: CPU: 0 PID: 1654 at drivers/gpu/drm/drm_irq.c:924 drm_vblank_count_and_time+0x71/0x80 [drm]()
...
Call Trace:
 [<c071d550>] dump_stack+0x41/0x61
 [<c045de97>] warn_slowpath_common+0x87/0xc0
 [<f7e1b811>] ? drm_vblank_count_and_time+0x71/0x80 [drm]
 [<f7e1b811>] ? drm_vblank_count_and_time+0x71/0x80 [drm]
 [<c045dfa2>] warn_slowpath_null+0x22/0x30
 [<f7e1b811>] drm_vblank_count_and_time+0x71/0x80 [drm]
 [<f7e1c05c>] drm_send_vblank_event+0x6c/0x80 [drm]
 [<f85d37d6>] nouveau_finish_page_flip+0x66/0x120 [nouveau]
 [<f85d38b6>] nouveau_flip_complete+0x26/0x220 [nouveau]
 [<f85d2470>] ? nouveau_display_vblstamp+0x70/0x80 [nouveau]
 [<f8536c40>] nvif_notify+0x90/0x160 [nouveau]
 [<c049af8f>] ? __wake_up+0x3f/0x50
 [<c0ac2b8d>] ? _raw_spin_unlock_irqrestore+0xd/0x10
 [<f7e1d170>] ? drm_handle_vblank+0x210/0x360 [drm]
 [<f85c8dd8>] nvkm_client_ntfy+0x78/0x80 [nouveau]
 [<f8536ed8>] nvkm_client_notify+0x28/0x30 [nouveau]
 [<f8539cb5>] nvkm_notify_send+0x75/0x120 [nouveau]
 [<f8537d95>] nvkm_event_send+0xb5/0xe0 [nouveau]
 [<f85c58fe>] nvkm_sw_chan_mthd+0x5e/0x80 [nouveau]
 [<f85c4f91>] nvkm_sw_mthd+0x91/0xb0 [nouveau]
 [<f8596d8f>] nv04_fifo_intr+0x5ff/0x770 [nouveau]
 [<c0ac2b8d>] ? _raw_spin_unlock_irqrestore+0xd/0x10
 [<f8537d7b>] ? nvkm_event_send+0x9b/0xe0 [nouveau]
 [<f85960e1>] nvkm_fifo_intr+0x11/0x20 [nouveau]
 [<f85375f9>] nvkm_engine_intr+0x19/0x20 [nouveau]
 [<f853b623>] nvkm_subdev_intr+0x13/0x20 [nouveau]
 [<f8577871>] nvkm_mc_intr+0x61/0xf0 [nouveau]
 [<c080e2ee>] ? add_interrupt_randomness+0x14e/0x1b0
 [<f857bf42>] nvkm_pci_intr+0x42/0x80 [nouveau]
 [<c04b5006>] handle_irq_event_percpu+0x76/0x190
 [<c04b7d60>] ? handle_simple_irq+0x70/0x70
 [<c04b514a>] handle_irq_event+0x2a/0x50
 [<c04b7dd2>] handle_fasteoi_irq+0x72/0x120
 [<c04060c3>] handle_irq+0xa3/0xd0
 <IRQ>  [<c040589c>] do_IRQ+0x3c/0xc0
 [<c072adad>] ? __copy_to_user_ll+0xd/0x10
 [<c0ac3a73>] common_interrupt+0x33/0x38
 [<c05cf255>] ? __fget_light+0x35/0x50
 [<c05cf282>] __fdget+0x12/0x20
 [<c05c825d>] do_sys_poll+0x2bd/0x570
 [<c072b07c>] ? _copy_from_user+0x3c/0x50
 [<c05b5408>] ? rw_copy_check_uvector+0x58/0x110
 [<c0a69076>] ? unix_stream_recvmsg+0x46/0x60
 [<c0a66f40>] ? unix_set_peek_off+0x50/0x50
 [<c09a476d>] ? sock_recvmsg+0x3d/0x50
 [<c09a5be6>] ? ___sys_recvmsg+0x116/0x150
 [<c048d8a8>] ? check_preempt_wakeup+0xe8/0x220
 [<c05c6ea0>] ? poll_select_copy_remaining+0x130/0x130
 [<c09ae2f8>] ? __alloc_skb+0x78/0x1e0
 [<c05cf282>] ? __fdget+0x12/0x20
 [<c09a6684>] ? __sys_recvmsg+0x44/0x80
 [<c09a70ae>] ? SYSC_socketcall+0x7ae/0x9c0
 [<c0a68718>] ? unix_stream_sendmsg+0x358/0x380
 [<c09a514d>] ? sock_sendmsg+0x2d/0x40
 [<c05b4a60>] ? do_readv_writev+0x140/0x350
 [<c04cb81a>] ? ktime_get+0x4a/0x120
 [<c09a5160>] ? sock_sendmsg+0x40/0x40
 [<c04f857f>] ? __audit_syscall_entry+0xaf/0x110
 [<c04012a4>] ? do_audit_syscall_entry.isra.9+0x44/0x50
 [<c0401607>] ? syscall_trace_enter_phase1+0x107/0x130
 [<c05c8643>] SyS_poll+0xc3/0x100
 [<c0ac32e1>] syscall_call+0x7/0x7
---[ end trace aac837c2925b2e70 ]---
nouveau 0000:01:00.0: Xorg[494]: failed to idle channel 0xcccc0000 [Xorg[494]]
nouveau 0000:01:00.0: Xorg[494]: failed to idle channel 0xcccc0000 [Xorg[494]]
nouveau 0000:01:00.0: DRM: 0xDBBA: Parsing digital output script table
nouveau 0000:01:00.0: DRM: 0xDB7C: Parsing digital output script table
nouveau 0000:01:00.0: DRM: GPU lockup - switching to software fbcon
nouveau 0000:01:00.0: DRM: 0xDBBA: Parsing digital output script table
nouveau 0000:01:00.0: Xorg[1847]: failed to idle channel 0xcccc0000 [Xorg[1847]]
nouveau 0000:01:00.0: Xorg[1847]: failed to idle channel 0xcccc0000 [Xorg[1847]]
nouveau 0000:01:00.0: DRM: 0xDBBA: Parsing digital output script table
nouveau 0000:01:00.0: gr: intr 00100000 [ERROR] nsource 00000100 [DMA_W_PROTECTION] nstatus 04000000 [PROTECTION_FAULT] ch 1 [Xorg[2211]] subc 0 class 0039 mthd 0100 data 00000000
nouveau 0000:01:00.0: Xorg[2211]: failed to idle channel 0xcccc0001 [Xorg[2211]]
nouveau 0000:01:00.0: Xorg[2211]: failed to idle channel 0xcccc0001 [Xorg[2211]]
nouveau 0000:01:00.0: Xorg[2211]: failed to idle channel 0xcccc0000 [Xorg[2211]]
nouveau 0000:01:00.0: timeout at drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c:46/nv20_gr_chan_fini()!
nouveau 0000:01:00.0: Xorg[2211]: failed to idle channel 0xcccc0000 [Xorg[2211]]
nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 0 [DRM] get ff2c4784 put ff2c4784 state df2c4785 (err: MEM_FAULT) push 00000100
nouveau 0000:01:00.0: Xorg[2211]: failed to idle channel 0xcccc0000 [Xorg[2211]]
nouveau 0000:01:00.0: Xorg[2211]: failed to idle channel 0xcccc0000 [Xorg[2211]]
nouveau 0000:01:00.0: DRM: 0xDB7C: Parsing digital output script table
nouveau 0000:01:00.0: timeout at drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c:1223/nv04_gr_idle()!
nouveau 0000:01:00.0: gr: idle timed out with status 00022001
nouveau 0000:01:00.0: timeout at drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c:1223/nv04_gr_idle()!
nouveau 0000:01:00.0: gr: idle timed out with status 00022001
nouveau 0000:01:00.0: DRM: 0xDBBA: Parsing digital output script table

$ dmesg | grep drm_vblank_count_and_time | wc -l
256

WARNING going and going, doesn't spare ring buffer.
Comment 28 poma 2015-11-07 18:22:06 CET
The final results of the testing are coming in a few days ...
Comment 29 poma 2015-11-10 21:03:50 CET
(In reply to Olivier Fourdan from comment #26)
> A fix for this has been pushed as git commit 2cfac64 in master, but I don't
> have the hardware to test.
> 
> Can you test an up-to-date build with GL enabled on a nv34 card?


http://git.xfce.org/xfce/xfwm4/commit/?id=2cfac64
repairs GLX compositorr on NV34:

- configure --disable-xpresent --enable-epoxy
  Build Configuration for xfwm4:
    Xpresent support:             no
    Epoxy support:                yes

However it is slow - has noticeable lag, as if running on e.g. QXL paravirtual graphic card.

Also XPresent compositor - which otherwise has the best performance, ist kaputt
https://bugs.freedesktop.org/show_bug.cgi?id=92893

So I switched on XRender compositor, which ain't tear-free but at least has a decent performance.
Comment 30 poma 2015-12-07 09:35:09 CET
Development of nouveau pre-NV50 and whatnot radeon and intel "oldtimers" is pretty nondeterministic, if not stale.

Therefore, not to waste time and resources with build-time configuration, 
please consider implement run-time switch to disable GL compositing, therefore to switch to XRender for those for which the use of GL is sub-optimal or broken.
Comment 31 poma 2016-11-10 13:01:53 CET
You have to specify a comment when changing the Resolution of a bug from (empty) to WONTFIX.
Comment 32 Olivier Fourdan editbugs 2016-11-10 13:07:27 CET
Why wontfix? A fix for this has been pushed in git master as indicated in comment 26, the kernel issue you see after is something different.

Bug #11962

Reported by:
poma
Reported on: 2015-06-05
Last modified on: 2016-11-10

People

Assignee:
Olivier Fourdan
CC List:
0 users

Version

Version:
unspecified

Attachments

Additional information