aboutsummaryrefslogtreecommitdiffstats
path: root/libpixelflinger/scanline.cpp
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2012-08-10 15:20:00 -0700
committerandroid code review <noreply-gerritcodereview@google.com>2012-08-10 15:20:00 -0700
commit7b682c4787e06be193ac3d2a1071e0feb5e4ba58 (patch)
tree2324dd96b9736d7e776a27631cbad8afc9b2a335 /libpixelflinger/scanline.cpp
parent8076b212574afe39ed6152ddf88a3c8c63b0c87c (diff)
parent068f9f3bf9d09ebca0016cfcbb682d8ca27480f5 (diff)
downloadsystem_core-7b682c4787e06be193ac3d2a1071e0feb5e4ba58.tar.gz
system_core-7b682c4787e06be193ac3d2a1071e0feb5e4ba58.tar.bz2
system_core-7b682c4787e06be193ac3d2a1071e0feb5e4ba58.zip
Merge "Add Mips support to libpixelflinger"
Diffstat (limited to 'libpixelflinger/scanline.cpp')
-rw-r--r--libpixelflinger/scanline.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/libpixelflinger/scanline.cpp b/libpixelflinger/scanline.cpp
index 93440f52..d1f3d967 100644
--- a/libpixelflinger/scanline.cpp
+++ b/libpixelflinger/scanline.cpp
@@ -110,10 +110,14 @@ static void scanline_clear(context_t* c);
static void rect_generic(context_t* c, size_t yc);
static void rect_memcpy(context_t* c, size_t yc);
+#if defined( __arm__)
extern "C" void scanline_t32cb16blend_arm(uint16_t*, uint32_t*, size_t);
extern "C" void scanline_t32cb16_arm(uint16_t *dst, uint32_t *src, size_t ct);
extern "C" void scanline_col32cb16blend_neon(uint16_t *dst, uint32_t *col, size_t ct);
extern "C" void scanline_col32cb16blend_arm(uint16_t *dst, uint32_t col, size_t ct);
+#elif defined(__mips__)
+extern "C" void scanline_t32cb16blend_mips(uint16_t*, uint32_t*, size_t);
+#endif
// ----------------------------------------------------------------------------
@@ -2136,7 +2140,7 @@ last_one:
void scanline_t32cb16blend(context_t* c)
{
-#if ((ANDROID_CODEGEN >= ANDROID_CODEGEN_ASM) && defined(__arm__))
+#if ((ANDROID_CODEGEN >= ANDROID_CODEGEN_ASM) && (defined(__arm__) || defined(__mips)))
int32_t x = c->iterators.xl;
size_t ct = c->iterators.xr - x;
int32_t y = c->iterators.y;
@@ -2148,8 +2152,12 @@ void scanline_t32cb16blend(context_t* c)
const int32_t v = (c->state.texture[0].shade.it0>>16) + y;
uint32_t *src = reinterpret_cast<uint32_t*>(tex->data)+(u+(tex->stride*v));
+#ifdef __arm__
scanline_t32cb16blend_arm(dst, src, ct);
#else
+ scanline_t32cb16blend_mips(dst, src, ct);
+#endif
+#else
dst_iterator16 di(c);
horz_iterator32 hi(c);
blender_32to16 bl(c);