swizzle color table if necessary
authorcommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 14 Oct 2013 18:29:23 +0000 (18:29 +0000)
committercommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 14 Oct 2013 18:29:23 +0000 (18:29 +0000)
R=reed@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/27224003

git-svn-id: http://skia.googlecode.com/svn/trunk@11761 2bbb7eff-a529-9590-31e7-b0007b416f81

src/gpu/SkGr.cpp

index 0b60ede..9cafbf6 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "SkGr.h"
+#include "SkConfig8888.h"
 
 /*  Fill out buffer with the compressed format Ganesh expects from a colortable
  based bitmap. [palette (colortable) + indices].
@@ -30,7 +31,11 @@ static void build_compressed_data(void* buffer, const SkBitmap& bitmap) {
     SkColorTable* ctable = bitmap.getColorTable();
     char* dst = (char*)buffer;
 
-    memcpy(dst, ctable->lockColors(), ctable->count() * sizeof(SkPMColor));
+    uint32_t* colorTableDst = reinterpret_cast<uint32_t*>(dst);
+    const uint32_t* colorTableSrc = reinterpret_cast<const uint32_t*>(ctable->lockColors());
+    SkConvertConfig8888Pixels(colorTableDst, 0, SkCanvas::kRGBA_Premul_Config8888,
+                              colorTableSrc, 0, SkCanvas::kNative_Premul_Config8888,
+                              ctable->count(), 1);
     ctable->unlockColors();
 
     // always skip a full 256 number of entries, even if we memcpy'd fewer