Bug 31682 - compiz не запускается из-за принудительного indirectRendering = TRUE
Summary: compiz не запускается из-за принудительного indirectRendering = TRUE
Status: NEW
Alias: None
Product: Branch p7
Classification: Distributions
Component: compiz (show other bugs)
Version: не указана
Hardware: all Linux
: P3 normal
Assignee: Andrey Cherepanov
QA Contact:
URL:
Keywords:
Depends on:
Blocks: 30940
  Show dependency tree
 
Reported: 2016-01-04 15:16 MSK by vx8400
Modified: 2016-09-03 11:49 MSK (History)
2 users (show)

See Also:


Attachments
откат патча (530 bytes, patch)
2016-01-04 15:17 MSK, vx8400
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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).
Исправляется патчем выше.