[regression] Vsync is lost (constant graphics tearing) after plugins render effects
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Compiz Core |
Fix Released
|
Critical
|
Daniel van Vugt |
Bug Description
When I start compiz it's nice and smooth and there is no video tearing at all. However after certain plugins have rendered their effects, compiz suddenly loses all vsync and the display tears constantly. Compiz doesn't seem to recover either, like it's stuck in indirect rendering mode (or something like that).
TESTCASE 1:
1. Start: compiz --replace composite opengl move resize decor water
2. Verify: No graphics tearing by dragging windows around and playing video.
3. Trigger the water plugin using Ctrl+Super.
4. Observed: As soon as the ripples dissipate, the display tears constantly when dragging windows or playing video. And never recovers.
4. Expected: No graphics tearing when dragging windows around and playing video.
TESTCASE 2:
1. Start: compiz --replace composite opengl move resize decor compiztoolbox switcher
2. Verify: No graphics tearing by dragging windows around and playing video.
3. Trigger the switcher using Alt+Tab
4. Observed: As soon as the switcher goes away and returns the desktop, the display tears constantly when dragging windows or playing video. And never recovers.
4. Expected: No graphics tearing when dragging windows around and playing video.
TESTCASE 3:
1. Start: compiz --replace composite opengl move resize decor wobbly
2. Move a window around triggering the wobbly-ness.
3. Observed: The display tears constantly when dragging windows or playing video
3. Expected: No graphics tearing when dragging windows around and playing video.
I noticed this a while ago but only just confirmed it with lp:compiz-core r2984. It will take me a while to bisect/diagnose further...
Related branches
- Sam Spilsbury: Approve
- Tim Penhey (community): Approve
-
Diff: 1857 lines (+264/-1299)16 files modifiedplugins/composite/CMakeLists.txt (+0/-3)
plugins/composite/composite.xml.in (+10/-5)
plugins/composite/include/composite/composite.h (+8/-5)
plugins/composite/include/composite/fpslimiter.h (+0/-38)
plugins/composite/src/composite.cpp (+29/-0)
plugins/composite/src/paintscheduler.cpp (+0/-189)
plugins/composite/src/paintscheduler.h (+0/-96)
plugins/composite/src/privates.h (+13/-19)
plugins/composite/src/screen.cpp (+194/-120)
plugins/composite/tests/CMakeLists.txt (+0/-1)
plugins/composite/tests/paintscheduler/CMakeLists.txt (+0/-36)
plugins/composite/tests/paintscheduler/test-paintscheduler-set-drmvblanktype.c (+0/-6)
plugins/composite/tests/paintscheduler/test-paintscheduler-set-drmvblanktype.h (+0/-4)
plugins/composite/tests/paintscheduler/test-paintscheduler.cpp (+0/-753)
plugins/opengl/src/privates.h (+0/-4)
plugins/opengl/src/screen.cpp (+10/-20)
Changed in compiz-core: | |
importance: | High → Critical |
Changed in compiz-core: | |
status: | Fix Committed → Fix Released |
Bisection complete:
2916 - untestable
2937 - good
2938 - bad
2963 - bad
2984 - bad
The cause of this regression is:
revno: 2938 [merge]
committer: smspillaz <email address hidden>
branch nick: compiz-core
timestamp: Tue 2012-01-24 00:46:40 +0800
message:
Separated out the composite plugin's paint scheduler into a separate class. Created a testcase using libdrm.
Merge lp:~smspillaz/compiz-core/compiz-core.fix-880707-test-v3
I hate to say I told you so. But that's the branch I repeatedly said should not be committed. :(