testblitspeed.c improvements: cleaned up output, and allow user to set surface
alpha attributes. --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401234
This commit is contained in:
parent
9cff95c690
commit
7341c5d504
1 changed files with 83 additions and 30 deletions
|
@ -39,12 +39,35 @@ static void __append_sdl_surface_flag(SDL_Surface *_surface, char *str,
|
||||||
{
|
{
|
||||||
if (_surface->flags & flag)
|
if (_surface->flags & flag)
|
||||||
copy_trunc_str(str, strsize, flagstr);
|
copy_trunc_str(str, strsize, flagstr);
|
||||||
} /* append_sdl_surface_flag */
|
}
|
||||||
|
|
||||||
|
|
||||||
#define append_sdl_surface_flag(a, b, c, fl) __append_sdl_surface_flag(a, b, c, fl, " " #fl)
|
#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" )
|
#define print_tf_state(str, val) printf("%s: {%s}\n", str, (val) ? "true" : "false" )
|
||||||
|
|
||||||
|
static void output_videoinfo_details(void)
|
||||||
|
{
|
||||||
|
const SDL_VideoInfo *info = SDL_GetVideoInfo();
|
||||||
|
printf("SDL_GetVideoInfo():\n");
|
||||||
|
if (info == NULL)
|
||||||
|
printf(" (null.)\n");
|
||||||
|
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 color fills", info->blit_fill);
|
||||||
|
printf(" video memory: (%d)\n", info->video_mem);
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
printf("Details for %s:\n", name);
|
||||||
|
@ -60,20 +83,22 @@ static void output_surface_details(const char *name, SDL_Surface *surface)
|
||||||
printf(" height : %d\n", surface->h);
|
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(" 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(" red : 0x%08X mask, %d shift, %d loss\n",
|
printf(" red bits : 0x%08X mask, %d shift, %d loss\n",
|
||||||
(int) surface->format->Rmask,
|
(int) surface->format->Rmask,
|
||||||
(int) surface->format->Rshift,
|
(int) surface->format->Rshift,
|
||||||
(int) surface->format->Rloss);
|
(int) surface->format->Rloss);
|
||||||
printf(" green : 0x%08X mask, %d shift, %d loss\n",
|
printf(" green bits : 0x%08X mask, %d shift, %d loss\n",
|
||||||
(int) surface->format->Gmask,
|
(int) surface->format->Gmask,
|
||||||
(int) surface->format->Gshift,
|
(int) surface->format->Gshift,
|
||||||
(int) surface->format->Gloss);
|
(int) surface->format->Gloss);
|
||||||
printf(" blue : 0x%08X mask, %d shift, %d loss\n",
|
printf(" blue bits : 0x%08X mask, %d shift, %d loss\n",
|
||||||
(int) surface->format->Bmask,
|
(int) surface->format->Bmask,
|
||||||
(int) surface->format->Bshift,
|
(int) surface->format->Bshift,
|
||||||
(int) surface->format->Bloss);
|
(int) surface->format->Bloss);
|
||||||
printf(" alpha : 0x%08X mask, %d shift, %d loss\n",
|
printf(" alpha bits : 0x%08X mask, %d shift, %d loss\n",
|
||||||
(int) surface->format->Amask,
|
(int) surface->format->Amask,
|
||||||
(int) surface->format->Ashift,
|
(int) surface->format->Ashift,
|
||||||
(int) surface->format->Aloss);
|
(int) surface->format->Aloss);
|
||||||
|
@ -105,30 +130,14 @@ static void output_surface_details(const char *name, SDL_Surface *surface)
|
||||||
strcpy(f, " (none)");
|
strcpy(f, " (none)");
|
||||||
|
|
||||||
printf(" flags :%s\n", f);
|
printf(" flags :%s\n", f);
|
||||||
|
}
|
||||||
#if 0
|
|
||||||
info = SDL_GetVideoInfo();
|
|
||||||
assert(info != NULL);
|
|
||||||
|
|
||||||
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 color fills", info->blit_fill);
|
|
||||||
|
|
||||||
printf("video memory: (%d)\n", info->video_mem);
|
|
||||||
#endif
|
|
||||||
} /* else */
|
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void output_details(void)
|
static void output_details(void)
|
||||||
{
|
{
|
||||||
|
output_videoinfo_details();
|
||||||
output_surface_details("Source Surface", src);
|
output_surface_details("Source Surface", src);
|
||||||
output_surface_details("Destination Surface", dest);
|
output_surface_details("Destination Surface", dest);
|
||||||
}
|
}
|
||||||
|
@ -195,8 +204,14 @@ static int setup_test(int argc, char **argv)
|
||||||
Uint32 srcflags = 0;
|
Uint32 srcflags = 0;
|
||||||
int srcw = 640;
|
int srcw = 640;
|
||||||
int srch = 480;
|
int srch = 480;
|
||||||
|
Uint32 origsrcalphaflags = 0;
|
||||||
|
Uint32 origdstalphaflags = 0;
|
||||||
|
Uint32 srcalphaflags = 0;
|
||||||
|
Uint32 dstalphaflags = 0;
|
||||||
|
int srcalpha = 255;
|
||||||
|
int dstalpha = 255;
|
||||||
int screenSurface = 0;
|
int screenSurface = 0;
|
||||||
int i;
|
int i = 0;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
|
@ -240,7 +255,8 @@ static int setup_test(int argc, char **argv)
|
||||||
screenSurface = 1;
|
screenSurface = 1;
|
||||||
else if (strcmp(arg, "--dumpfile") == 0)
|
else if (strcmp(arg, "--dumpfile") == 0)
|
||||||
dumpfile = argv[++i];
|
dumpfile = argv[++i];
|
||||||
else
|
/* !!! FIXME: set colorkey. */
|
||||||
|
else if (0) /* !!! FIXME: we handle some commandlines elsewhere now */
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Unknown commandline option: %s\n", arg);
|
fprintf(stderr, "Unknown commandline option: %s\n", arg);
|
||||||
return(0);
|
return(0);
|
||||||
|
@ -288,6 +304,43 @@ static int setup_test(int argc, char **argv)
|
||||||
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);
|
||||||
|
origsrcalphaflags = srcalphaflags;
|
||||||
|
origdstalphaflags = dstalphaflags;
|
||||||
|
srcalpha = src->format->alpha;
|
||||||
|
dstalpha = dest->format->alpha;
|
||||||
|
for (i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
const char *arg = argv[i];
|
||||||
|
|
||||||
|
if (strcmp(arg, "--srcalpha") == 0)
|
||||||
|
srcalpha = atoi(argv[++i]);
|
||||||
|
else if (strcmp(arg, "--dstalpha") == 0)
|
||||||
|
dstalpha = atoi(argv[++i]);
|
||||||
|
else if (strcmp(arg, "--srcsrcalpha") == 0)
|
||||||
|
srcalphaflags |= SDL_SRCALPHA;
|
||||||
|
else if (strcmp(arg, "--srcnosrcalpha") == 0)
|
||||||
|
srcalphaflags &= ~SDL_SRCALPHA;
|
||||||
|
else if (strcmp(arg, "--srcrleaccel") == 0)
|
||||||
|
srcalphaflags |= SDL_RLEACCEL;
|
||||||
|
else if (strcmp(arg, "--srcnorleaccel") == 0)
|
||||||
|
srcalphaflags &= ~SDL_RLEACCEL;
|
||||||
|
else if (strcmp(arg, "--dstsrcalpha") == 0)
|
||||||
|
dstalphaflags |= SDL_SRCALPHA;
|
||||||
|
else if (strcmp(arg, "--dstnosrcalpha") == 0)
|
||||||
|
dstalphaflags &= ~SDL_SRCALPHA;
|
||||||
|
else if (strcmp(arg, "--dstrleaccel") == 0)
|
||||||
|
dstalphaflags |= SDL_RLEACCEL;
|
||||||
|
else if (strcmp(arg, "--dstnorleaccel") == 0)
|
||||||
|
dstalphaflags &= ~SDL_RLEACCEL;
|
||||||
|
}
|
||||||
|
if ((dstalphaflags != origdstalphaflags) || (dstalpha != dest->format->alpha))
|
||||||
|
SDL_SetAlpha(dest, dstalphaflags, (Uint8) dstalpha);
|
||||||
|
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... */
|
/* set some sane defaults so we can see if the blit code is broken... */
|
||||||
SDL_FillRect(dest, NULL, SDL_MapRGB(dest->format, 0, 0, 0));
|
SDL_FillRect(dest, NULL, SDL_MapRGB(dest->format, 0, 0, 0));
|
||||||
SDL_FillRect(src, NULL, SDL_MapRGB(src->format, 0, 0, 0));
|
SDL_FillRect(src, NULL, SDL_MapRGB(src->format, 0, 0, 0));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue