diff test/testblitspeed.c @ 1895:c121d94672cb

SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author Sam Lantinga <slouken@libsdl.org>
date Mon, 10 Jul 2006 21:04:37 +0000
parents cf59e7b91ed4
children c785543d1843
line wrap: on
line diff
--- a/test/testblitspeed.c	Thu Jul 06 18:01:37 2006 +0000
+++ b/test/testblitspeed.c	Mon Jul 10 21:04:37 2006 +0000
@@ -15,27 +15,30 @@
 static int testSeconds = 10;
 
 
-static int percent(int val, int total)
+static int
+percent(int val, int total)
 {
-    return((int) ((((float) val) / ((float) total)) * 100.0f));
+    return ((int) ((((float) val) / ((float) total)) * 100.0f));
 }
 
-static int randRange(int lo, int hi)
+static int
+randRange(int lo, int hi)
 {
-    return(lo + (int) (((double) hi)*rand()/(RAND_MAX+1.0)));
+    return (lo + (int) (((double) hi) * rand() / (RAND_MAX + 1.0)));
 }
 
-static void copy_trunc_str(char *str, size_t strsize, const char *flagstr)
+static void
+copy_trunc_str(char *str, size_t strsize, const char *flagstr)
 {
-    if ( (strlen(str) + strlen(flagstr)) >= (strsize - 1) )
+    if ((strlen(str) + strlen(flagstr)) >= (strsize - 1))
         strcpy(str + (strsize - 5), " ...");
     else
         strcat(str, flagstr);
 }
 
-static void __append_sdl_surface_flag(SDL_Surface *_surface, char *str,
-                                      size_t strsize, Uint32 flag,
-                                      const char *flagstr)
+static void
+__append_sdl_surface_flag(SDL_Surface * _surface, char *str,
+                          size_t strsize, Uint32 flag, const char *flagstr)
 {
     if (_surface->flags & flag)
         copy_trunc_str(str, strsize, flagstr);
@@ -45,22 +48,28 @@
 #define append_sdl_surface_flag(a, b, c, fl) __append_sdl_surface_flag(a, b, c, fl, " " #fl)
 #define print_tf_state(str, val) printf("%s: {%s}\n", str, (val) ? "true" : "false" )
 
-static void output_videoinfo_details(void)
+static void
+output_videoinfo_details(void)
 {
     const SDL_VideoInfo *info = SDL_GetVideoInfo();
     printf("SDL_GetVideoInfo():\n");
     if (info == NULL)
         printf("  (null.)\n");
-    else
-    {
+    else {
         print_tf_state("  hardware surface available", info->hw_available);
         print_tf_state("  window manager available", info->wm_available);
-        print_tf_state("  accelerated hardware->hardware blits", info->blit_hw);
-        print_tf_state("  accelerated hardware->hardware colorkey blits", info->blit_hw_CC);
-        print_tf_state("  accelerated hardware->hardware alpha blits", info->blit_hw_A);
-        print_tf_state("  accelerated software->hardware blits", info->blit_sw);
-        print_tf_state("  accelerated software->hardware colorkey blits", info->blit_sw_CC);
-        print_tf_state("  accelerated software->hardware alpha blits", info->blit_sw_A);
+        print_tf_state("  accelerated hardware->hardware blits",
+                       info->blit_hw);
+        print_tf_state("  accelerated hardware->hardware colorkey blits",
+                       info->blit_hw_CC);
+        print_tf_state("  accelerated hardware->hardware alpha blits",
+                       info->blit_hw_A);
+        print_tf_state("  accelerated software->hardware blits",
+                       info->blit_sw);
+        print_tf_state("  accelerated software->hardware colorkey blits",
+                       info->blit_sw_CC);
+        print_tf_state("  accelerated software->hardware alpha blits",
+                       info->blit_sw_A);
         print_tf_state("  accelerated color fills", info->blit_fill);
         printf("  video memory: (%d)\n", info->video_mem);
     }
@@ -68,63 +77,58 @@
     printf("\n");
 }
 
-static void output_surface_details(const char *name, SDL_Surface *surface)
+static void
+output_surface_details(const char *name, SDL_Surface * surface)
 {
     printf("Details for %s:\n", name);
 
-    if (surface == NULL)
-    {
+    if (surface == NULL) {
         printf("-WARNING- You've got a NULL surface!");
-    }
-    else
-    {
+    } else {
         char f[256];
         printf("  width      : %d\n", surface->w);
         printf("  height     : %d\n", surface->h);
-        printf("  depth      : %d bits per pixel\n", surface->format->BitsPerPixel);
+        printf("  depth      : %d bits per pixel\n",
+               surface->format->BitsPerPixel);
         printf("  pitch      : %d\n", (int) surface->pitch);
         printf("  alpha      : %d\n", (int) surface->format->alpha);
-        printf("  colorkey   : 0x%X\n", (unsigned int) surface->format->colorkey);
+        printf("  colorkey   : 0x%X\n",
+               (unsigned int) surface->format->colorkey);
 
         printf("  red bits   : 0x%08X mask, %d shift, %d loss\n",
-                    (int) surface->format->Rmask,
-                    (int) surface->format->Rshift,
-                    (int) surface->format->Rloss);
+               (int) surface->format->Rmask,
+               (int) surface->format->Rshift, (int) surface->format->Rloss);
         printf("  green bits : 0x%08X mask, %d shift, %d loss\n",
-                    (int) surface->format->Gmask,
-                    (int) surface->format->Gshift,
-                    (int) surface->format->Gloss);
+               (int) surface->format->Gmask,
+               (int) surface->format->Gshift, (int) surface->format->Gloss);
         printf("  blue bits  : 0x%08X mask, %d shift, %d loss\n",
-                    (int) surface->format->Bmask,
-                    (int) surface->format->Bshift,
-                    (int) surface->format->Bloss);
+               (int) surface->format->Bmask,
+               (int) surface->format->Bshift, (int) surface->format->Bloss);
         printf("  alpha bits : 0x%08X mask, %d shift, %d loss\n",
-                    (int) surface->format->Amask,
-                    (int) surface->format->Ashift,
-                    (int) surface->format->Aloss);
+               (int) surface->format->Amask,
+               (int) surface->format->Ashift, (int) surface->format->Aloss);
 
         f[0] = '\0';
 
-        /*append_sdl_surface_flag(surface, f, sizeof (f), SDL_SWSURFACE);*/
+        /*append_sdl_surface_flag(surface, f, sizeof (f), SDL_SWSURFACE); */
         if ((surface->flags & SDL_HWSURFACE) == 0)
-            copy_trunc_str(f, sizeof (f), " SDL_SWSURFACE");
+            copy_trunc_str(f, sizeof(f), " SDL_SWSURFACE");
 
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_HWSURFACE);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_ASYNCBLIT);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_ANYFORMAT);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_HWPALETTE);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_DOUBLEBUF);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_FULLSCREEN);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_OPENGL);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_OPENGLBLIT);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_RESIZABLE);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_NOFRAME);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_HWACCEL);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_SRCCOLORKEY);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_RLEACCELOK);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_RLEACCEL);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_SRCALPHA);
-        append_sdl_surface_flag(surface, f, sizeof (f), SDL_PREALLOC);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_HWSURFACE);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_ASYNCBLIT);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_ANYFORMAT);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_HWPALETTE);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_DOUBLEBUF);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_FULLSCREEN);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_OPENGL);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_RESIZABLE);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_NOFRAME);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_HWACCEL);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_SRCCOLORKEY);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_RLEACCELOK);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_RLEACCEL);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_SRCALPHA);
+        append_sdl_surface_flag(surface, f, sizeof(f), SDL_PREALLOC);
 
         if (f[0] == '\0')
             strcpy(f, " (none)");
@@ -135,14 +139,16 @@
     printf("\n");
 }
 
-static void output_details(void)
+static void
+output_details(void)
 {
     output_videoinfo_details();
     output_surface_details("Source Surface", src);
     output_surface_details("Destination Surface", dest);
 }
 
-static Uint32 blit(SDL_Surface *dst, SDL_Surface *src, int x, int y)
+static Uint32
+blit(SDL_Surface * dst, SDL_Surface * src, int x, int y)
 {
     Uint32 start = 0;
     SDL_Rect srcRect;
@@ -152,39 +158,41 @@
     srcRect.y = 0;
     dstRect.x = x;
     dstRect.y = y;
-    dstRect.w = srcRect.w = src->w;  /* SDL will clip as appropriate. */
+    dstRect.w = srcRect.w = src->w;     /* SDL will clip as appropriate. */
     dstRect.h = srcRect.h = src->h;
 
     start = SDL_GetTicks();
     SDL_BlitSurface(src, &srcRect, dst, &dstRect);
-    return(SDL_GetTicks() - start);
+    return (SDL_GetTicks() - start);
 }
 
-static void blitCentered(SDL_Surface *dst, SDL_Surface *src)
+static void
+blitCentered(SDL_Surface * dst, SDL_Surface * src)
 {
     int x = (dst->w - src->w) / 2;
     int y = (dst->h - src->h) / 2;
     blit(dst, src, x, y);
 }
 
-static int atoi_hex(const char *str)
+static int
+atoi_hex(const char *str)
 {
     if (str == NULL)
         return 0;
 
-    if (strlen(str) > 2)
-    {
+    if (strlen(str) > 2) {
         int retval = 0;
         if ((str[0] == '0') && (str[1] == 'x'))
             sscanf(str + 2, "%X", &retval);
-        return(retval);
+        return (retval);
     }
 
-    return(atoi(str));
+    return (atoi(str));
 }
 
 
-static int setup_test(int argc, char **argv)
+static int
+setup_test(int argc, char **argv)
 {
     const char *dumpfile = NULL;
     SDL_Surface *bmp = NULL;
@@ -213,8 +221,7 @@
     int screenSurface = 0;
     int i = 0;
 
-    for (i = 1; i < argc; i++)
-    {
+    for (i = 1; i < argc; i++) {
         const char *arg = argv[i];
 
         if (strcmp(arg, "--dstbpp") == 0)
@@ -256,63 +263,59 @@
         else if (strcmp(arg, "--dumpfile") == 0)
             dumpfile = argv[++i];
         /* !!! FIXME: set colorkey. */
-        else if (0)  /* !!! FIXME: we handle some commandlines elsewhere now */
-        {
+        else if (0) {           /* !!! FIXME: we handle some commandlines elsewhere now */
             fprintf(stderr, "Unknown commandline option: %s\n", arg);
-            return(0);
+            return (0);
         }
     }
 
-    if (SDL_Init(SDL_INIT_VIDEO) == -1)
-    {
+    if (SDL_Init(SDL_INIT_VIDEO) == -1) {
         fprintf(stderr, "SDL_Init failed: %s\n", SDL_GetError());
-        return(0);
+        return (0);
     }
 
     bmp = SDL_LoadBMP("sample.bmp");
-    if (bmp == NULL)
-    {
+    if (bmp == NULL) {
         fprintf(stderr, "SDL_LoadBMP failed: %s\n", SDL_GetError());
         SDL_Quit();
-        return(0);
+        return (0);
     }
 
-    if ((dstflags & SDL_HWSURFACE) == 0) dstflags |= SDL_SWSURFACE;
-    if ((srcflags & SDL_HWSURFACE) == 0) srcflags |= SDL_SWSURFACE;
+    if ((dstflags & SDL_HWSURFACE) == 0)
+        dstflags |= SDL_SWSURFACE;
+    if ((srcflags & SDL_HWSURFACE) == 0)
+        srcflags |= SDL_SWSURFACE;
 
     if (screenSurface)
         dest = SDL_SetVideoMode(dstw, dsth, dstbpp, dstflags);
-    else
-    {
+    else {
         dest = SDL_CreateRGBSurface(dstflags, dstw, dsth, dstbpp,
                                     dstrmask, dstgmask, dstbmask, dstamask);
     }
 
-    if (dest == NULL)
-    {
+    if (dest == NULL) {
         fprintf(stderr, "dest surface creation failed: %s\n", SDL_GetError());
         SDL_Quit();
-        return(0);
+        return (0);
     }
 
     src = SDL_CreateRGBSurface(srcflags, srcw, srch, srcbpp,
                                srcrmask, srcgmask, srcbmask, srcamask);
-    if (src == NULL)
-    {
+    if (src == NULL) {
         fprintf(stderr, "src surface creation failed: %s\n", SDL_GetError());
         SDL_Quit();
-        return(0);
+        return (0);
     }
 
     /* handle alpha settings... */
-    srcalphaflags = (src->flags&SDL_SRCALPHA) | (src->flags&SDL_RLEACCEL);
-    dstalphaflags = (dest->flags&SDL_SRCALPHA) | (dest->flags&SDL_RLEACCEL);
+    srcalphaflags = (src->flags & SDL_SRCALPHA) | (src->flags & SDL_RLEACCEL);
+    dstalphaflags =
+        (dest->flags & SDL_SRCALPHA) | (dest->flags & SDL_RLEACCEL);
     origsrcalphaflags = srcalphaflags;
     origdstalphaflags = dstalphaflags;
     srcalpha = src->format->alpha;
     dstalpha = dest->format->alpha;
-    for (i = 1; i < argc; i++)
-    {
+    for (i = 1; i < argc; i++) {
         const char *arg = argv[i];
 
         if (strcmp(arg, "--srcalpha") == 0)
@@ -336,9 +339,11 @@
         else if (strcmp(arg, "--dstnorleaccel") == 0)
             dstalphaflags &= ~SDL_RLEACCEL;
     }
-    if ((dstalphaflags != origdstalphaflags) || (dstalpha != dest->format->alpha))
+    if ((dstalphaflags != origdstalphaflags)
+        || (dstalpha != dest->format->alpha))
         SDL_SetAlpha(dest, dstalphaflags, (Uint8) dstalpha);
-    if ((srcalphaflags != origsrcalphaflags) || (srcalpha != src->format->alpha))
+    if ((srcalphaflags != origsrcalphaflags)
+        || (srcalpha != src->format->alpha))
         SDL_SetAlpha(src, srcalphaflags, (Uint8) srcalpha);
 
     /* set some sane defaults so we can see if the blit code is broken... */
@@ -349,15 +354,16 @@
     SDL_FreeSurface(bmp);
 
     if (dumpfile)
-        SDL_SaveBMP(src, dumpfile);  /* make sure initial convert is sane. */
+        SDL_SaveBMP(src, dumpfile);     /* make sure initial convert is sane. */
 
     output_details();
 
-    return(1);
+    return (1);
 }
 
 
-static void test_blit_speed(void)
+static void
+test_blit_speed(void)
 {
     Uint32 clearColor = SDL_MapRGB(dest->format, 0, 0, 0);
     Uint32 iterations = 0;
@@ -376,45 +382,43 @@
     now = SDL_GetTicks();
     end = now + testms;
 
-    do
-    {
+    do {
         /* pump the event queue occasionally to keep OS happy... */
-        if (now - last > 1000)
-        {
+        if (now - last > 1000) {
             last = now;
-            while (SDL_PollEvent(&event)) { /* no-op. */ }
+            while (SDL_PollEvent(&event)) {     /* no-op. */
+            }
         }
 
         iterations++;
         elasped += blit(dest, src, randRange(0, wmax), randRange(0, hmax));
-        if (isScreen)
-        {
-            SDL_Flip(dest);  /* show it! */
-            SDL_FillRect(dest, NULL, clearColor); /* blank it for next time! */
+        if (isScreen) {
+            SDL_Flip(dest);     /* show it! */
+            SDL_FillRect(dest, NULL, clearColor);       /* blank it for next time! */
         }
 
         now = SDL_GetTicks();
-    } while (now < end);
+    }
+    while (now < end);
 
     printf("Non-blitting crap accounted for %d percent of this run.\n",
-            percent(testms - elasped, testms));
+           percent(testms - elasped, testms));
 
     printf("%d blits took %d ms (%d fps).\n",
-            (int) iterations,
-            (int) elasped,
-            (int) (((float)iterations) / (((float)elasped) / 1000.0f)));
+           (int) iterations,
+           (int) elasped,
+           (int) (((float) iterations) / (((float) elasped) / 1000.0f)));
 }
 
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
 {
     int initialized = setup_test(argc, argv);
-    if (initialized)
-    {
+    if (initialized) {
         test_blit_speed();
         SDL_Quit();
     }
-    return(!initialized);
+    return (!initialized);
 }
 
 /* end of testblitspeed.c ... */
-