* Xorg 7.1.1 + mesa 6.5.1 + i810 1.7.2
* Xorg 7.1.1 + mesa 6.5.2 + i810 1.7.2
I have noticed a strange behaviour:
- In a light app where more than 60 FPS are achieved, the app syncs to
vblank (getting 60FPS) andthere is not tearing.
- In a heavy app with textures where less than 60 FPS are achieved, setting
vblank_mode=3 doesn't sync withVertRefresh (ie: getting 37FPS) and tearing appears.
Created attachment 9652 [details]
Testcase for the bug
Make TEXTURE_SIZE greater enough to get less FPS than VertRefresh.
The apps will run at that FPS, no matter waht value vblank_has.
Would it be feasible for you to use glXSwapIntervalSGI()? That seems to work better here for this.
Also, as I pointed out earlier, i915 DRM 1.6 or newer might give better results together with Mesa 6.5.2 or newer, but I forgot that also requires xserver git master (1.3 is not enough).
would you please test on the latest development tip to see if this bug still exist? thanks.
I'll test it and post the results.
Apparently It syncs whe fps is below vertical refresh. However tearing appears
in a 2D sprite animations.
Running the testcase, the xserver has crashed many times with the error:
intel_bufmgr_ttm.c:757: Error -16 waiting for fence fence buffers.
(In reply to comment #5)
> Apparently It syncs whe fps is below vertical refresh. However tearing appears
> in a 2D sprite animations.
> Running the testcase, the xserver has crashed many times with the error:
> intel_bufmgr_ttm.c:757: Error -16 waiting for fence fence buffers.
It seems this issue has gone away, could you try again with the latest component(mesa, drm)?
*** Bug 13938 has been marked as a duplicate of this bug. ***
Augstin, Do you still have chance to verify haihao's comment# 6?
(In reply to comment #8)
> Augstin, Do you still have chance to verify haihao's comment# 6?
I'm plenty of work thies week. I think I'll be able to test it by the end of the week.
(In reply to comment #9)
> (In reply to comment #8)
> > Augstin, Do you still have chance to verify haihao's comment# 6?
> I'm plenty of work thies week. I think I'll be able to test it by the end of
> the week.
I found this issue when fixing up vsync on XBMC in linux and a solution (for intel anyway).
If you force a glFinish() (glFlush() isn't enough) before you swap buffers, the vsync issue goes away. My guess is that the mesa drivers wait for vsync before making sure all rendering in pipeline is complete.
If rendering what's in the gl pipeline takes too long, you will always miss the vsync.
Oh and the comment about glXSwapIntervalSGI has no effect on this at all. glXSwapIntervalSGI is only a limit of max fps.
If you are late to the swap interval it will still swap immidiatly not considering if that will cause tearing.
I think this should have been fixed by Jesse's recent commits.
Please reopen if you still see it.