Bug 93373 - GLAMOR triggers visual artifacts with nouveau GL backend
Summary: GLAMOR triggers visual artifacts with nouveau GL backend
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium minor
Assignee: Nouveau Project
QA Contact: Xorg Project Team
Depends on:
Reported: 2015-12-14 16:45 UTC by Eduard Bloch
Modified: 2019-12-04 09:08 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

Screenshot right after the hickup (134.43 KB, image/png)
2015-12-14 16:45 UTC, Eduard Bloch
no flags Details
dmesg (442.81 KB, text/plain)
2015-12-14 17:03 UTC, Eduard Bloch
no flags Details
Xorg log (38.66 KB, text/x-log)
2015-12-14 17:03 UTC, Eduard Bloch
no flags Details

Description Eduard Bloch 2015-12-14 16:45:34 UTC
Created attachment 120498 [details]
Screenshot right after the hickup


ii  xserver-xorg-v 1:1.0.12-1   amd64        X.Org X server -- Nouveau display

See attached screenshot. How it happens? Everything works normal (except for some minor glitches like the substring "www." displayed in black-on-black Terminator resp. Gnome Terminal).

But sometimes (once a week to every couple of days) and usually when Firefox is in front, the screen suddenly displays lots of garbage. There are no errors in Xorg.0.log. Usually the fonts in the main HTML area get weird or dots on them and this stays even when the window is scrolled. Some page areas with other fonts are sometimes also affected and they look even worse (covered in stripes). The same applies to the GTK controls. (Note: I use thinice Gtk theme, this fact might be related).

Anyhow, making Gtk redraw the controls (hover or click blindly) makes them appear normal but not so with the fonts. Even when I restart Firefox, some tabs still have areas (randomly!) with garbled letters.

Note: I had a similar issue with the previous version too but it was worse, it also affected Terminator (Gnome Terminal renderer). Now Terminator seems to stay unaffected, at least for now.
Comment 1 Ilia Mirkin 2015-12-14 16:48:46 UTC
Please include dmesg and xorg log. Even if they don't contain errors, they will contain information about your setup.
Comment 2 Eduard Bloch 2015-12-14 17:03:20 UTC
Created attachment 120499 [details]
Comment 3 Eduard Bloch 2015-12-14 17:03:52 UTC
Created attachment 120500 [details]
Xorg log
Comment 4 Ilia Mirkin 2015-12-14 17:08:40 UTC
OK, you're using a GM107, which means that you're *not* using xf86-video-nouveau 1.0.12 since we dropped our GLAMOR integration (since it was buggy). You're now using xf86-video-modesetting, which has a functioning GLAMOR integration.

Unfortunately GLAMOR does something which makes nouveau very sad. I've found a solution, but it's roughly equivalent to pouring cement into the piping. If you'd like, you can patch your mesa build with

diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
index c464904..b3b6627 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
@@ -976,6 +976,7 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
    nvc0_update_prim_restart(nvc0, info->primitive_restart, info->restart_index);
    if (nvc0->base.vbo_dirty) {
+      IMMED_NVC0(push, SUBC_3D(NV10_SUBCHAN_REF_CNT), 0);
       if (nvc0->screen->eng3d->oclass < GM107_3D_CLASS)
          IMMED_NVC0(push, NVC0_3D(VERTEX_ARRAY_FLUSH), 0);
       nvc0->base.vbo_dirty = false;

But I haven't the faintest clue why this helps. (I actually haven't tested on Maxwell, but it helped on Kepler.)
Comment 5 Martin Peres 2019-12-04 09:08:24 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/245.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.