Bug 31682

Summary: compiz не запускается из-за принудительного indirectRendering = TRUE
Product: Branch p7 Reporter: vx8400 <vx8400>
Component: compizAssignee: Andrey Cherepanov <cas>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3 CC: lakostis, mike
Version: не указана   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 30940    
Attachments:
Description Flags
откат патча none

Description vx8400 2016-01-04 15:16:30 MSK
compiz 0.8.8 не запускается из-за принудительной установки indirectRendering = TRUE во входящем в пакет патче compiz-0.8.8-alt12.patch:

--- a/src/screen.c
+++ b/src/screen.c
....

@@ -1977,6 +1983,20 @@ addScreen (CompDisplay *display,
        return FALSE;
     }
 
+    /* NVIDIA */
+    indirectRendering = TRUE;
+    int n = 0;
+    char **extlist = XListExtensions (dpy, &n);
+    if (extlist) {
+        for (i = 0; i < n; i++) {
+            if (strcmp (extlist[i], "NV-GLX") == 0) {
+                indirectRendering = FALSE;
+                continue;
+            }
+        }
+        XFreeExtensionList (extlist);
+    }
+

C отсутствующим NV-GLX (radeon, i9XX) glXCreateContext() на строке screen.c:2000 вызывается с direct=false и проходит с ошибкой:

Error of failed request: BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  155
  Minor opcode of failed request:  3
  Resource id in failed request:  0x0

В сборке из сизифа эта ошибка молча перехватывается errorHandler() и
игнорируется, что приводит к ошибке в glXMakeCurrent() (screen.c:2090) из-за ошибочного контекста.
Это тоже молча игнорируется, возвращаемое значение glXMakeCurrent() не проверяется.
Вызов glGetString (GL_EXTENSIONS) (screen.c:2093) проходит без текущего контекста и возвращает пустую строку, это уже проверяется и программа выходит.

Исключение патча ошибку исправляет, compiz работает без видимых ошибок. Патч на патч прилагается.

Ошибка воспроизводится на текущем сизифе с xorg-server-1.18.0-alt1, libGL-11.0.6-alt1, с драйверами radeon и i915. Другие использующие GL программы (tuxracer, например) работают с direct rendering без ошибок.

Более подробно в рассылке: https://lists.altlinux.org/pipermail/sisyphus/2016-January/364660.html и дальше по треду.

Спасибо.
Comment 1 vx8400 2016-01-04 15:17:19 MSK
Created attachment 6465 [details]
откат патча
Comment 2 vx8400 2016-09-03 11:49:24 MSK
В compiz-0.9.X (p8, sisyphus) этой ошибки нет. 
Относится только к compiz-0.8.*-* (p5,p6,p7).
Исправляется патчем выше.