From 3fcc7b4d8ea1eaa79ed72cd2218e022fe19325d3 Mon Sep 17 00:00:00 2001 From: "fmalita@chromium.org" Date: Tue, 14 May 2013 20:20:50 +0000 Subject: Convert Skia benchmarking extension rasterize() output to RGBA. The native Skia packing format varies depending on platform, compile flags, etc. R=piman@chromium.org Review URL: https://codereview.chromium.org/15004023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200054 0039d316-1c4b-4281-b951-d872f2087c98 --- content/renderer/skia_benchmarking_extension.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'content/renderer/skia_benchmarking_extension.cc') diff --git a/content/renderer/skia_benchmarking_extension.cc b/content/renderer/skia_benchmarking_extension.cc index 7adb77d..2cd44a6 100644 --- a/content/renderer/skia_benchmarking_extension.cc +++ b/content/renderer/skia_benchmarking_extension.cc @@ -7,6 +7,7 @@ #include "cc/resources/picture.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebArrayBuffer.h" #include "third_party/skia/include/core/SkCanvas.h" +#include "third_party/skia/include/core/SkColorPriv.h" #include "third_party/skia/include/core/SkGraphics.h" #include "v8/include/v8.h" @@ -68,7 +69,16 @@ class SkiaBenchmarkingWrapper : public v8::Extension { WebKit::WebArrayBuffer buffer = WebKit::WebArrayBuffer::create(bitmap.getSize(), 1); - memcpy(buffer.data(), bitmap.getPixels(), bitmap.getSize()); + uint32* packed_pixels = reinterpret_cast(bitmap.getPixels()); + uint8* buffer_pixels = reinterpret_cast(buffer.data()); + // Swizzle from native Skia format to RGBA as we copy out. + for (size_t i = 0; i < bitmap.getSize(); i += 4) { + uint32 c = packed_pixels[i >> 2]; + buffer_pixels[i] = SkGetPackedR32(c); + buffer_pixels[i + 1] = SkGetPackedG32(c); + buffer_pixels[i + 2] = SkGetPackedB32(c); + buffer_pixels[i + 3] = SkGetPackedA32(c); + } v8::Handle result = v8::Object::New(); result->Set(v8::String::New("width"), v8::Number::New(rect.width())); -- cgit v1.1