[sisyphus] compiz + radeon: no valid GL extensions string found [2]
vx8400
vx8400 на gmail.com
Сб Янв 2 04:17:55 MSK 2016
29 декабря 2015 г., 10:32 пользователь vx8400 <vx8400 на gmail.com> написал:
>
> Compiz не может прочесть список GL_EXTENSIONS
> compiz-0.8.8/src/screen.c: 2093:
> glExtensions = (const char *) glGetString (GL_EXTENSIONS); //<-- glGetString возвращает 0
Вот что нарылось методом тыка:
В src/screen.c:1987 наложен патч, который принудительно устанавливает
indirectRendering = TRUE и сбрасывает его в FALSE, только если есть
расширение NV-GLX.
С radeon его нет, поэтому glXCreateContext (src/screen.c:2000)
вызывается с direct = FALSE, что видимых ошибок не вызывает до
glXMakeCurrent (src/screen.c:2090), ___который молча вылетает с
ошибкой___.
Возвращаемое значение не проверяется, поэтому
glGetString(GL_EXTENSIONS) (src/screen.c:2093) вызывается без
контекста и возвращает 0 вместо строки со списком расширений. Это уже
проверяется и программа выходит с ошибкой "No valid GL extensions
string found."
Если патч убрать и вызывать glXCreateContext (src/screen.c:2000) с
direct = TRUE, то контекст создается без видимых ошибок,
glXMakeCurrent() проходит без ошибок, glGetString(GL_EXTENSIONS)
возвращает ожидаемый список расширений, следующие glGet* срабатывают.
Программа не вылетает, но не работает: только переключает окна по
клику мышью, остальные фичи compiz не работают.
glxinfo -i (принудительный indirect rendering) вылетает уже на
glXCreateContext(...., direct = false),
( export LIBGL_ALWAYS_INDIRECT=1 ; glxgears тоже и на том же).
По умолчанию glxinfo, glxgears работают:
http://hermes.ihep.su:8001/pool/compiz/glxinfo.txt
(direct rendering: Yes ... server/client glx extensions: ...
GLX_EXT_texture_from_pixmap .... , etc.)
От перебора параметров radeon в xorg.conf это не зависит.
На p7/Xorg 1.14 compiz работал, diff Xorg.0.log между p7 и sisyphus
есть: http://hermes.ihep.su:8001/pool/compiz/Xorg.0.log.-sisyphus.+p7.diff
Куда копать?
Спасибо, с наступившим,
Олег.
Подробная информация о списке рассылки Sisyphus