Mercurial > hg > openttd
changeset 9573:acb3ed0b0c4a draft
(svn r13602) -Codechange: little speedup for 8bpp-optimized blitter
author | smatz <smatz@openttd.org> |
---|---|
date | Sat, 21 Jun 2008 20:58:34 +0000 |
parents | 7c23a341f695 |
children | b312a276aa0a |
files | src/blitter/8bpp_optimized.cpp |
diffstat | 1 files changed, 16 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/blitter/8bpp_optimized.cpp +++ b/src/blitter/8bpp_optimized.cpp @@ -71,24 +71,28 @@ /* Skip transparent pixels */ dst += trans; width -= trans; - if (width <= 0) continue; + if (width <= 0 || pixels == 0) continue; pixels = min<uint>(pixels, (uint)width); width -= pixels; switch (mode) { - case BM_COLOUR_REMAP: - for (uint x = 0; x < pixels; x++) { - if (bp->remap[*src] != 0) *dst = bp->remap[*src]; + case BM_COLOUR_REMAP: { + const uint8 *remap = bp->remap; + do { + uint m = remap[*src]; + if (m != 0) *dst = m; dst++; src++; - } - break; + } while (--pixels != 0); + } break; - case BM_TRANSPARENT: - for (uint x = 0; x < pixels; x++) { - *dst = bp->remap[*dst]; - dst++; src++; - } - break; + case BM_TRANSPARENT: { + const uint8 *remap = bp->remap; + src += pixels; + do { + *dst = remap[*dst]; + dst++; + } while (--pixels != 0); + } break; default: memcpy(dst, src, pixels);