Thanks for the olds.
Add to your /etc/drirc this :
It doubled performance for me everywhere.Code:<driconf> <device screen="0" driver="dri2"> <application name="all"> <!-- Always synchronize with vertical refresh to avoid tearing --> <option name="vblank_mode" value="0"/> </application> </device> </driconf>
VBLank option not set:
VBlank option set:
A similar thing happened with everything else (with different degrees of effectiveness) . For example with Kwin compisiting now I have 60 fps at the lower power state while before I was hovering a little over 30 fps.
I have a Radeon 5850 and I also use in conjunction the "SwapBuffersWait false" and "ColorTiling true" in my xorg.conf (don't know if that matters).
Now a my glxinfo
Try it out and report thanks.Code:[hades@artemis pc-linux64]$ glxinfo name of display: :0 display: :0 screen: 0 direct rendering: Yes server glx vendor string: SGI server glx version string: 1.4 server glx extensions: GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_INTEL_swap_event client glx vendor string: Mesa Project and SGI client glx version string: 1.4 client glx extensions: GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_framebuffer_sRGB, GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap, GLX_INTEL_swap_event GLX version: 1.4 GLX extensions: GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap, GLX_INTEL_swap_event OpenGL vendor string: X.Org OpenGL renderer string: Gallium 0.4 on AMD CYPRESS OpenGL version string: 2.1 Mesa 7.12-devel (git-09b5f1f) OpenGL shading language version string: 1.20 ...
Thanks for the olds.
You've disable sync to vblank which means you will get better performance at the expense of tearing since buffer flips are no longer synced to vblank. You can also enable it via env var: vblank_mode=0
There are two factors at play for buffer swaps:
The driver can use either depending on the situation. If vblank is enabled and pageflipping is enabled and the front and back buffer sizes are identical (e.g., fullscreen apps), the driver will use pageflipping. As currently implemented in DRI2, pageflips are always synced to vblank. If those conditions are not met, the driver uses blits. The SwapBuffersWait option controls whether the blit swaps tear or not by stalling the blit until scanout has passed the area of the blit. If you are running a fullscreen app, the blit is effectively synced to vblank as well. Setting vblank_mode=0 will disable pageflipping, but you will still hit the blit case which is controlled by the SwapBuffersWait option.
Hmm, does that mean that setting vblank_mode=0 and SwapbuffersWait to TRUE actually hurts performance? (While still wanting tear-free applications, of course.)
Also, in my experience (HD4200), setting vblank_mode to 0 and swapbufferswait to true is the only way to have fluid and tear-free video playback, especially with high-bitrate sources. If vblank_mode is not set, I get stuttering (it took a while to find the cause), while if vblank_mode is 0 but swapbufferswait is not enabled I get tearing (obviously).