Вот кое-какое решение подзалюбившего tearing — горизонтальных полос в видео и анимации при использовании compiz c карточками nvidia и проприетарными драйверами.
Сам костыль:
--- src/display.c 2009-02-28 23:32:55.000000000 +0500
+++ src/display.c 2009-02-28 23:35:25.000000000 +0500
@@ -1644,6 +1644,7 @@
}
}
+ s->damageMask |= COMP_SCREEN_DAMAGE_ALL_MASK;
if (s->damageMask & COMP_SCREEN_DAMAGE_REGION_MASK)
{
XIntersectRegion (s->damage, &s->region,
@@ -1684,6 +1685,7 @@
if (mask & COMP_SCREEN_DAMAGE_ALL_MASK)
{
+ glFlush ();
glXSwapBuffers (d->display, s->output);
}
else
--- src/screen.c 2009-02-28 23:33:05.000000000 +0500
+++ src/screen.c 2009-02-28 23:37:18.000000000 +0500
@@ -3845,7 +3845,7 @@
if (s->pendingCommands)
{
makeScreenCurrent (s);
- glFinish ();
+ glFlush();
s->pendingCommands = FALSE;
}
д'Ебилд:
Готовые пакеты для intrepid amd64:
compiz-core_0.7.8-0ubuntu5_amd64.deb
compiz-gnome_0.7.8-0ubuntu5_amd64.deb
compiz-plugins_0.7.8-0ubuntu5_amd64.deb
Было бы здорово, наверное, если бы кто-нибудь собрал i386.
Howto:
1) установить патченый compiz
2) ВЫКЛЮЧИТЬ sync to vblank в compiz: gconftool-2 -s /apps/compiz/general/screen0/options/sync_to_vblank false -t bool
3) включить в nvidia-settings sync to vblank для XV и OpenGL — SyncToVBlank, XVideoTextureSyncToVBlank
4) настроить запуск 'nvidia-settings -l' перед compiz, например создав файл вида /etc/X11/Xsession.d/85nvidia: nvidia-settings -l
Вроде бы работает, даже с VDPAU. Enjoy!
ЗЫ: лоркод — леденящий душу писец, читаемо отформатировать текст в здравом уме довольно сложно.