Removed hermes since it's LGPL and not compatible with a commercial license.

Prepping for using MMX and SSE intrinsics instead of inline assembly.
.. except for memcpy equivalents which only get faster if they can
   exploit the parallelism of loading into multiple SIMD registers. :)

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402609
This commit is contained in:
Sam Lantinga 2007-08-15 08:21:10 +00:00
parent 92c5ea48ab
commit 37fe3a93e6
18 changed files with 379 additions and 3199 deletions

View file

@ -879,19 +879,6 @@ GetBlitFeatures(void)
#define LO 1
#endif
#if SDL_HERMES_BLITTERS
/* Heheheh, we coerce Hermes into using SDL blit information */
#define X86_ASSEMBLER
#define HermesConverterInterface SDL_BlitInfo
#define HermesClearInterface void
#define STACKCALL
#include "../hermes/HeadMMX.h"
#include "../hermes/HeadX86.h"
#else
/* Special optimized blit for RGB 8-8-8 --> RGB 3-3-2 */
#define RGB888_RGB332(dst, src) { \
dst = (Uint8)((((src)&0x00E00000)>>16)| \
@ -1250,8 +1237,6 @@ Blit_RGB888_RGB565(SDL_BlitInfo * info)
#endif /* USE_DUFFS_LOOP */
}
#endif /* SDL_HERMES_BLITTERS */
/* Special optimized blit for RGB 5-6-5 --> 32-bit RGB surfaces */
#define RGB565_32(dst, src, map) (map[src[LO]*2] + map[src[HI]*2+1])
@ -2357,17 +2342,7 @@ static const struct blit_table normal_blit_1[] = {
{0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL},
};
static const struct blit_table normal_blit_2[] = {
#if SDL_HERMES_BLITTERS
{0x0000F800, 0x000007E0, 0x0000001F, 2, 0x0000001F, 0x000007E0,
0x0000F800,
0, ConvertX86p16_16BGR565, ConvertX86, NO_ALPHA},
{0x0000F800, 0x000007E0, 0x0000001F, 2, 0x00007C00, 0x000003E0,
0x0000001F,
0, ConvertX86p16_16RGB555, ConvertX86, NO_ALPHA},
{0x0000F800, 0x000007E0, 0x0000001F, 2, 0x0000001F, 0x000003E0,
0x00007C00,
0, ConvertX86p16_16BGR555, ConvertX86, NO_ALPHA},
#elif SDL_ALTIVEC_BLITTERS
#if SDL_ALTIVEC_BLITTERS
/* has-altivec */
{0x0000F800, 0x000007E0, 0x0000001F, 4, 0x00000000, 0x00000000,
0x00000000,
@ -2397,47 +2372,6 @@ static const struct blit_table normal_blit_3[] = {
{0, 0, 0, 0, 0, 0, 0, 0, NULL, BlitNtoN, 0}
};
static const struct blit_table normal_blit_4[] = {
#if SDL_HERMES_BLITTERS
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x0000F800, 0x000007E0,
0x0000001F,
1, ConvertMMXpII32_16RGB565, ConvertMMX, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x0000F800, 0x000007E0,
0x0000001F,
0, ConvertX86p32_16RGB565, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x0000001F, 0x000007E0,
0x0000F800,
1, ConvertMMXpII32_16BGR565, ConvertMMX, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x0000001F, 0x000007E0,
0x0000F800,
0, ConvertX86p32_16BGR565, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x00007C00, 0x000003E0,
0x0000001F,
1, ConvertMMXpII32_16RGB555, ConvertMMX, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x00007C00, 0x000003E0,
0x0000001F,
0, ConvertX86p32_16RGB555, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x0000001F, 0x000003E0,
0x00007C00,
1, ConvertMMXpII32_16BGR555, ConvertMMX, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x0000001F, 0x000003E0,
0x00007C00,
0, ConvertX86p32_16BGR555, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 3, 0x00FF0000, 0x0000FF00,
0x000000FF,
0, ConvertX86p32_24RGB888, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 3, 0x000000FF, 0x0000FF00,
0x00FF0000,
0, ConvertX86p32_24BGR888, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 4, 0x000000FF, 0x0000FF00,
0x00FF0000,
0, ConvertX86p32_32BGR888, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 4, 0xFF000000, 0x00FF0000,
0x0000FF00,
0, ConvertX86p32_32RGBA888, ConvertX86, NO_ALPHA},
{0x00FF0000, 0x0000FF00, 0x000000FF, 4, 0x0000FF00, 0x00FF0000,
0xFF000000,
0, ConvertX86p32_32BGRA888, ConvertX86, NO_ALPHA},
#else
#if SDL_ALTIVEC_BLITTERS
/* has-altivec | dont-use-prefetch */
{0x00000000, 0x00000000, 0x00000000, 4, 0x00000000, 0x00000000,
@ -2460,7 +2394,6 @@ static const struct blit_table normal_blit_4[] = {
{0x00FF0000, 0x0000FF00, 0x000000FF, 2, 0x00007C00, 0x000003E0,
0x0000001F,
0, NULL, Blit_RGB888_RGB555, NO_ALPHA},
#endif
/* Default for 32-bit RGB source, used if no other blitter matches */
{0, 0, 0, 0, 0, 0, 0, 0, NULL, BlitNtoN, 0}
};
@ -2529,12 +2462,7 @@ SDL_CalculateBlitN(SDL_Surface * surface, int blit_index)
if (surface->map->table) {
blitfun = Blit_RGB888_index8_map;
} else {
#if SDL_HERMES_BLITTERS
sdata->aux_data = ConvertX86p32_8RGB332;
blitfun = ConvertX86;
#else
blitfun = Blit_RGB888_index8;
#endif
}
} else {
blitfun = BlitNto1;
@ -2575,13 +2503,6 @@ SDL_CalculateBlitN(SDL_Surface * surface, int blit_index)
}
#ifdef DEBUG_ASM
#if SDL_HERMES_BLITTERS
if (blitfun == ConvertMMX)
fprintf(stderr, "Using mmx blit\n");
else if (blitfun == ConvertX86)
fprintf(stderr, "Using asm blit\n");
else
#endif
if ((blitfun == BlitNtoN) || (blitfun == BlitNto1))
fprintf(stderr, "Using C blit\n");
else