Hi Niels!

Thanks for your suggestion, it led me to a working solution. There were three issues I needed to workaround.

1) I needed to set "pixelformat=RGB16" in DFBARGS to get around the panning error message. Fbdev was then able to create a 640x960 virtual surface, but programs that use Flip() still get the signal 11 invalid permissions crash.

2) df_andi and df_neo need to use DSCAPS_DOUBLE instead of TRIPLE in addition to RGB16 in DFBARGS. Then they run fine, but with severe flickering. With RGB32 surfaces DSCAPS_DOUBLE still provokes the invalid permissions crash.

3) Flip() has to be called with DSFLIP_BLIT to get rid of the flickering. Neither ONSYNC, WAITFORSYNC, WAIT, nor NONE seem to work. BLIT reduces the performance of df_andi from about 46 to 26 FPS in my debug build though.

For 1) and 2) the root cause might be in the fbdev driver trying to allocate video memory that isn't really available. Not sure about 3), maybe there's an omap ioctl that isn't being called or isn't working. I've built using --with-gfxdrivers=omap and without but it doesn't seem to make a difference.

I've also tried different settings of the desktop-buffer-mode runtime config option without it making a difference in any of the results.

If you have suggestions for fixes for the root causes I could try to test them and generate a patch. Paul Morton's fix is already in the source code for fbdev.c that I got through git.

Thanks -- Mark

On Apr 14, 2009, at 3:38 AM, Niels Roest wrote:

Hi Mark.

I recall a statement of Paul Morton on this that might explain, cf. his mail march 31th.
It has to do with this section of code:
    dsc.caps = DSCAPS_PRIMARY | DSCAPS_TRIPLE;
    err = dfb->CreateSurface( dfb, &dsc, &primary );
    if (err) {
         dsc.caps = DSCAPS_PRIMARY | DSCAPS_DOUBLE;
         DFBCHECK(dfb->CreateSurface( dfb, &dsc, &primary ));
    }
which behaves differently now with a patch in fbdev code.
Can you try to remove the TRIPLE piece and immediately try DOUBLE?

hth
Niels

Mark Hood wrote:
Hi folks,

I've built DirectFB 1.3.1 from the git repo on a BeagleBoard running Angstrom, along with the directfb example programs. Many of these programs run fine (df_dok, df_window, df_particle...) but a few of them (df_andi, df_neo...) die with:

"Caught signal 11 (at 0x40c68000, invalid permissions)"

before any graphics is displayed, right after fbdevLock() and dfb_surface_pool_lock() are called.

Before I go deep into the problem, has anybody experienced anything similar and have a few hints?

Thanks!

-- Mark
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev



--

..------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |
"------------------------------------------"
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev



_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to