2011/10/27 Michel Dänzer <[email protected]>: > On Mit, 2011-10-26 at 21:36 +0200, Michal Suchanek wrote: >> >> Ideally I would like no tearing and no vblank sync > > Well, the only way to avoid tearing without sync to vblank is the method > controlled by Option "SwapbuffersWait"... > > >> but both tearing prevention in the radeon driver and sync to vblank >> can lead to applications getting stuck in the X server. > > Please provide details about a specific scenario where this happens with > vblank_mode=0.
Remove all configuration pertaining to vsync/vline wait. Run recent radeon driver on 3.0.0-10 Ubuntu kernel. Run glxgears. They won't render even a single frame unless the screen is rotated. > >> So the practical difference is minimal since most GL rendering would >> occur in large windows. > > The main difference is that sync to vblank waits for CPU interrupts, > whereas the vline waits happen in the GPU command processor. And the vline waits fail non-deterministically while the cpu interrupts fail deterministically. Interrupts might add some overhead but since they are likely firing anyway there is little gain in avoiding use of them I guess. And since vline waits are not configurable unless you are willing to start a separate X server for each application they not very usable. > > >> In the more recent snapshot the tearing prevention is not working >> which is probably a bug in itself. > > Define 'not working'. fullscreen glxgears fps are not capped to the screen refresh rate. 2011/10/27 Michel Dänzer <[email protected]>: > On Don, 2011-10-27 at 01:14 +0200, Michal Suchanek wrote: >> >> The primary screen is not rotated, the secondary is. > > In the future, please mention 'details' like that up front. Rotation > makes things quite a bit more complicated. It affects the synchronization only under very specific circumstances so it did not seem that important. It should probably work more consistently one way or another. > > >> Window last mapped on primary screen (or the secondary when I turn off >> rotation) keeps capped by the screen refresh rate when unmapped. > > radeon_dri2_drawable_crtc() only looks at the window position, not at > whether it's currently mapped. We could change it to return -1 for > unmapped windows, in which case they should run uncapped. But I'm not > sure that would be better — it doesn't really make sense to waste > resources rendering more frames that won't be visible anyway? Opinions? It's definitely a waste but then the application should handle its window unmapping, not the X server I guess. And synchronization does not make much sense for invisible windows. I don't particularly care one way or another so long as stuff works properly. > > >> Window last mapped on rotated screen is not capped when unmapped. > > That's not with vblank_mode=0, is it? That's with no configuration whatsoever. > > The difference appears to be due to radeon_dri2_drawable_crtc() > returning -1 for rotated CRTCs, so all sync to vblank functionality is > skipped for those. > Why that matters only when the window is not mapped? Thanks Michal _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
