Added (unused) multithreaded version of copyall for P96 modes - might come in handy for some platforms, but no benefit for current ones

This commit is contained in:
Dimitris Panokostas 2018-01-28 20:24:09 +01:00
parent fa6290eede
commit dc0a410a7e

View file

@ -3112,15 +3112,13 @@ static void copyall(uae_u8 *src, uae_u8 *dst)
__builtin_bswap16(*((uae_u16 *)(src + i + 2))) << 16 |
__builtin_bswap16(*((uae_u16 *)(src + i)))
);
}
#else
#ifdef USE_ARMNEON
}
#elif USE_ARMNEON
copy_screen_16bit_swap(dst, src, picasso96_state.Width * picasso96_state.Height * 2);
#else
copy_screen_16bit_swap_arm(dst, src, picasso96_state.Width * picasso96_state.Height * 2);
#endif
#endif
}
}
else if (picasso96_state.RGBFormat == RGBFB_CLUT)
{
#ifdef TINKER
@ -3153,16 +3151,35 @@ static void copyall(uae_u8 *src, uae_u8 *dst)
)
);
}
#else
#ifdef USE_ARMNEON
#elif USE_ARMNEON
copy_screen_32bit_to_16bit_neon(dst, src, picasso96_state.Width * picasso96_state.Height * 4);
#else
copy_screen_32bit_to_16bit_arm(dst, src, picasso96_state.Width * picasso96_state.Height * 4);
#endif
#endif
}
}
#ifdef MULTITHREADED_COPYALL
static struct srcdst_t {
uae_u8 *src;
uae_u8 *dst;
} srcdst;
static int copyall_multithreaded_wrapper(void *ptr) {
copyall(srcdst.src, srcdst.dst);
if (currprefs.leds_on_screen)
picasso_statusline(srcdst.dst);
return 0;
}
static void copyall_multithreaded(uae_u8 *src, uae_u8 *dst)
{
srcdst.src = src; srcdst.dst = dst;
SDL_DetachThread(SDL_CreateThread(copyall_multithreaded_wrapper, "copyall_thread", nullptr));
}
#endif
bool picasso_flushpixels(uae_u8 *src, int off)
{
uae_u8 *src_start;
@ -3181,7 +3198,11 @@ bool picasso_flushpixels(uae_u8 *src, int off)
if (dst == NULL)
return false;
#ifdef MULTITHREADED_COPYALL
copyall_multithreaded(src + off, dst);
#else
copyall(src + off, dst);
#endif
if (currprefs.leds_on_screen)
picasso_statusline(dst);