From 24225349831278c23c6dfc4515e071f4b27b2c41 Mon Sep 17 00:00:00 2001 From: Takamichi Horikawa Date: Sat, 1 Apr 2017 14:53:59 +0900 Subject: add sse2/ssse3 simd optimization --- fmdsp/fmdsp-vramlookup-c.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'fmdsp/fmdsp-vramlookup-c.c') diff --git a/fmdsp/fmdsp-vramlookup-c.c b/fmdsp/fmdsp-vramlookup-c.c index f900c8d..3d06f71 100644 --- a/fmdsp/fmdsp-vramlookup-c.c +++ b/fmdsp/fmdsp-vramlookup-c.c @@ -1,14 +1,17 @@ #include "fmdsp/fmdsp.h" void fmdsp_vramlookup_c(uint8_t *vram32, const uint8_t *vram, const uint8_t *palette, int stride) { + uint32_t palette32[FMDSP_PALETTE_COLORS]; + for (int i = 0; i < FMDSP_PALETTE_COLORS; i++) { + uint8_t r = palette[i*3+0]; + uint8_t g = palette[i*3+1]; + uint8_t b = palette[i*3+2]; + palette32[i] = (((uint32_t)r)<<16) | (((uint32_t)g)<<8) | ((uint32_t)b); + } for (int y = 0; y < PC98_H; y++) { for (int x = 0; x < PC98_W; x++) { - uint8_t r = palette[vram[y*PC98_W+x]*3+0]; - uint8_t g = palette[vram[y*PC98_W+x]*3+1]; - uint8_t b = palette[vram[y*PC98_W+x]*3+2]; - uint32_t data = (((uint32_t)r)<<16) | (((uint32_t)g)<<8) | ((uint32_t)b); uint32_t *row = (uint32_t *)(vram32 + y*stride); - row[x] = data; + row[x] = palette32[vram[y*PC98_W+x]]; } } } -- cgit v1.2.3