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);