Reply
Thread Tools
Posts: 80 | Thanked: 55 times | Joined on Oct 2007
#1
We are currently writing a game using SDL and ran into tearing problems when fast motion occurs.
After searching some mailing list we have still not found any solution. Is there any news on this?
 
zeez's Avatar
Posts: 341 | Thanked: 68 times | Joined on Aug 2007
#2
Yeah that is a horrible problem... And no it is not fixed yet. The Canola guys are mad about that as well. (And so am i). I could not find a bug on https://bugs.maemo.org - If there is really no bug filed yet we should do that!
 
Posts: 503 | Thanked: 267 times | Joined on Jul 2006 @ Helsinki
#3
Originally Posted by MadMan2k View Post
We are currently writing a game using SDL and ran into tearing problems when fast motion occurs.
After searching some mailing list we have still not found any solution. Is there any news on this?
Screen update is slow on N800 and it is impossible (was impossible in OS2007) to finish 800x480x16bpp screen update in two LCD refresh cycles. Enabling tearsync (starting screen update on the start of refresh cycle) will just result in getting tearing line at a fixed location in the bottom part of screen, so it looks worse than no tearsync at all.

A solution for games is to use lower resolutions (pixel doubling or arbitrary hardware scaling). This way the load on the graphics bus will be much lower and it will be capable of performing screen updates fast enough. It would be just nice to patch xserver to enable tearsync for the pixel doubled screen updates:
http://www.internettablettalk.com/fo...1&postcount=15

Tearing and screen update time problems have lower impact on video playback as video uses 12 bits per pixel (in YUV420 color format) and stresses graphics bus less. In addition, most videos have resolution lower than 800x480 in practice and require lower bandwidth (they are upscaled in the LCD controller).
 

The Following User Says Thank You to Serge For This Useful Post:
ArnimS's Avatar
Posts: 1,107 | Thanked: 720 times | Joined on Mar 2007 @ Germany
#4
Originally Posted by Serge View Post
Screen update is slow on N800 and it is impossible (was impossible in OS2007) to finish 800x480x16bpp screen update in two LCD refresh cycles. Enabling tearsync (starting screen update on the start of refresh cycle) will just result in getting tearing line at a fixed location in the bottom part of screen, so it looks worse than no tearsync at all.

A solution for games is to use lower resolutions (pixel doubling or arbitrary hardware scaling). This way the load on the graphics bus will be much lower and it will be capable of performing screen updates fast enough. It would be just nice to patch xserver to enable tearsync for the pixel doubled screen updates:
http://www.internettablettalk.com/fo...1&postcount=15

Tearing and screen update time problems have lower impact on video playback as video uses 12 bits per pixel (in YUV420 color format) and stresses graphics bus less. In addition, most videos have resolution lower than 800x480 in practice and require lower bandwidth (they are upscaled in the LCD controller).
http://pupnik.de/SDL_scrolly_sync.tgz

With sdl-scrolly sync there's a good testbed for doing timed screen updates using horizontal panning to reveal sync problems. Even using pixel-doubling, I see problems beyond the 25fps mark.

So thanks to Serge's investigations, it looks like dropping sdl, going to XV and 12-bit YUV is the way?

For my emus, they can either wait for the sync, or trigger it manually. But without sync they just look piss poor.
 
Reply

Thread Tools

 
Forum Jump


All times are GMT. The time now is 20:36.