DirectFB - Home of the pragmatist Roadmap

[directfb-dev] Re: directfb on xscale
Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[directfb-dev] Re: directfb on xscale

Sven Neumann <> wrote:

> Clemens Kirchgatterer <> writes:
> > my next aproach was a basic DFB test programm, that loads 2 png
> > files
> > (each 256 colors without alpha, i hope) and tried to blit one as the
> > screen background and the other over that background. this is
> > awfully
> > slow. i can follow the blitt easily with naked eye. (1 fps, i think)
> Do you render directly from the image provider to the destination
> surface or do you use an offscreen surface the same pixel format than
> the destination? There are quite a few things you might be doing wrong
> (or rather ineffeciently), so you will have to give us some more
> details. Perhaps show us some code snippets?

the test programm is more or less a copy found in the tutorial.
additionally it prints the number of frames every second.
a 16bit per pixel image is twice as slow. (unsurprisingly)

thank you for having a look ...

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <directfb.h>

static void
fps(void) {
   static struct timeval tv;
   static int frames, sec;

   gettimeofday(&tv, NULL);
   if (tv.tv_sec != sec) {
      printf("\rFPS: %02i", frames);
      sec = tv.tv_sec;
      frames = 0;

int main (int argc, char **argv) {
   IDirectFBImageProvider *provider;
   IDirectFBSurface *primary = NULL;
   IDirectFBSurface *logo = NULL;
   DFBSurfaceDescription dsc;
   IDirectFB *dfb = NULL;
   int screen_width  = 0;
   int screen_height = 0;

   DirectFBInit (&argc, &argv);
   DirectFBCreate (&dfb);
   dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN);
   dsc.flags = DSDESC_CAPS;
   dsc.caps  = DSCAPS_PRIMARY;
   dfb->CreateSurface( dfb, &dsc, &primary );
   primary->GetSize (primary, &screen_width, &screen_height);
   dfb->CreateImageProvider (dfb, DATADIR"/bgnd256.png", &provider);
   provider->GetSurfaceDescription (provider, &dsc);
   dfb->CreateSurface( dfb, &dsc, &logo );
   provider->RenderTo (provider, logo, NULL);
   provider->Release (provider);
   primary->Flip(primary, NULL, 0);
   while (1) {
      primary->Blit(primary, logo, NULL, 0, 0);
   logo->Release (logo);
   primary->Release (primary);
   dfb->Release (dfb);
   return 0;

Info:  To unsubscribe send a mail to with 
"unsubscribe directfb-dev" as subject.

Home | Main Index | Thread Index / Development / Old Archives