add legacy/helper allocN32Pixels, and convert gm to use it

This is an intermediate api, but might help us quickly get to a point where
no one is creating bitmaps in a 2-step process (setConfig + alloc).

BUG=skia:
R=halcanary@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@13182 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index f57e57c..ec29a4f 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -124,8 +124,7 @@
 
 static SkCanvas* MakeCanvas(const SkIRect& bounds) {
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas* canvas = new SkCanvas(bm);
diff --git a/gm/aarectmodes.cpp b/gm/aarectmodes.cpp
index 704ddcb..a614761 100644
--- a/gm/aarectmodes.cpp
+++ b/gm/aarectmodes.cpp
@@ -108,8 +108,7 @@
 
 static SkShader* make_bg_shader() {
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, 2, 2);
-    bm.allocPixels();
+    bm.allocN32Pixels(2, 2);
     *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = 0xFFFFFFFF;
     *bm.getAddr32(1, 0) = *bm.getAddr32(0, 1) = SkPackARGB32(0xFF, 0xCC,
                                                              0xCC, 0xCC);
diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp
index 63be6c3..d85e43d 100644
--- a/gm/arithmode.cpp
+++ b/gm/arithmode.cpp
@@ -17,8 +17,7 @@
 
 static SkBitmap make_bm() {
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, WW, HH);
-    bm.allocPixels();
+    bm.allocN32Pixels(WW, HH);
     bm.eraseColor(SK_ColorTRANSPARENT);
     return bm;
 }
diff --git a/gm/bicubicfilter.cpp b/gm/bicubicfilter.cpp
index 7eb0aee..825175e 100644
--- a/gm/bicubicfilter.cpp
+++ b/gm/bicubicfilter.cpp
@@ -25,9 +25,7 @@
     void make_checkerboard(int width, int height) {
         SkASSERT(width % 2 == 0);
         SkASSERT(height % 2 == 0);
-        fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config, width, height);
-        fCheckerboard.allocPixels();
-        SkAutoLockPixels lock(fCheckerboard);
+        fCheckerboard.allocN32Pixels(width, height);
         for (int y = 0; y < height; y += 2) {
             SkPMColor* s = fCheckerboard.getAddr32(0, y);
             for (int x = 0; x < width; x += 2) {
diff --git a/gm/bigmatrix.cpp b/gm/bigmatrix.cpp
index 9b49a64..b663b2b 100644
--- a/gm/bigmatrix.cpp
+++ b/gm/bigmatrix.cpp
@@ -59,15 +59,12 @@
         canvas->drawRect(rect, paint);
 
         SkBitmap bmp;
-        bmp.setConfig(SkBitmap::kARGB_8888_Config, 2, 2);
-        bmp.allocPixels();
-        bmp.lockPixels();
+        bmp.allocN32Pixels(2, 2);
         uint32_t* pixels = reinterpret_cast<uint32_t*>(bmp.getPixels());
         pixels[0] = SkPackARGB32(0xFF, 0xFF, 0x00, 0x00);
         pixels[1] = SkPackARGB32(0xFF, 0x00, 0xFF, 0x00);
         pixels[2] = SkPackARGB32(0x80, 0x00, 0x00, 0x00);
         pixels[3] = SkPackARGB32(0xFF, 0x00, 0x00, 0xFF);
-        bmp.unlockPixels();
         pt.set(30 * SK_Scalar1, 30 * SK_Scalar1);
         m.mapPoints(&pt, 1);
         SkShader* shader = SkShader::CreateBitmapShader(
diff --git a/gm/bitmapmatrix.cpp b/gm/bitmapmatrix.cpp
index 4609891..eec421f 100644
--- a/gm/bitmapmatrix.cpp
+++ b/gm/bitmapmatrix.cpp
@@ -107,8 +107,7 @@
     void setupBitmap(SkBitmap* bm) {
         SkASSERT(bm);
         static const int SIZE = 64;
-        bm->setConfig(SkBitmap::kARGB_8888_Config, SIZE, SIZE);
-        bm->allocPixels();
+        bm->allocN32Pixels(SIZE, SIZE);
         SkCanvas canvas(*bm);
 
         SkPaint paint;
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index 8b4c2d6..57d22d7 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -23,8 +23,7 @@
 static const int PIXEL_SIZE_4444 = SLIDE_SIZE / 16;
 
 static void init_bitmap(SkBitmap::Config config, SkBitmap* bitmap) {
-    bitmap->setConfig(config, SLIDE_SIZE, SLIDE_SIZE);
-    bitmap->allocPixels();
+    bitmap->allocConfigPixels(config, SLIDE_SIZE, SLIDE_SIZE);
     bitmap->eraseColor(SK_ColorWHITE);
 }
 
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index 9c6d472..e1034a9 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -14,8 +14,7 @@
 #include "SkShader.h"
 
 static void make_bitmap(SkBitmap* bitmap) {
-    bitmap->setConfig(SkBitmap::kARGB_8888_Config, 64, 64);
-    bitmap->allocPixels();
+    bitmap->allocN32Pixels(64, 64);
 
     SkCanvas canvas(*bitmap);
 
@@ -100,10 +99,7 @@
     };
 
 
-    bitmap->setConfig(SkBitmap::kARGB_8888_Config, gXSize, gYSize);
-    bitmap->allocPixels();
-
-    SkAutoLockPixels lock(*bitmap);
+    bitmap->allocN32Pixels(gXSize, gYSize);
     for (int y = 0; y < gYSize; y++) {
         for (int x = 0; x < gXSize; x++) {
             *bitmap->getAddr32(x, y) = textureData[x][y];
@@ -157,10 +153,7 @@
     static const int gYSize = 4096;
     static const int gBorderWidth = 10;
 
-    bitmap->setConfig(SkBitmap::kARGB_8888_Config, gXSize, gYSize);
-    bitmap->allocPixels();
-
-    SkAutoLockPixels lock(*bitmap);
+    bitmap->allocN32Pixels(gXSize, gYSize);
     for (int y = 0; y < gYSize; ++y) {
         for (int x = 0; x < gXSize; ++x) {
             if (x <= gBorderWidth || x >= gXSize-gBorderWidth ||
diff --git a/gm/bitmaprecttest.cpp b/gm/bitmaprecttest.cpp
index cade0a7..6f0ab58 100644
--- a/gm/bitmaprecttest.cpp
+++ b/gm/bitmaprecttest.cpp
@@ -9,8 +9,7 @@
 #include "SkCanvas.h"
 
 static void make_bm(SkBitmap* bm) {
-    bm->setConfig(SkBitmap::kARGB_8888_Config, 60, 60);
-    bm->allocPixels();
+    bm->allocN32Pixels(60, 60);
     bm->eraseColor(0);
 
     SkCanvas canvas(*bm);
diff --git a/gm/bitmapscroll.cpp b/gm/bitmapscroll.cpp
index a1c0ce4..b14b047 100644
--- a/gm/bitmapscroll.cpp
+++ b/gm/bitmapscroll.cpp
@@ -26,10 +26,7 @@
     pAlphaGray.setColor(0x66888888);
 
     // Prepare bitmap, and a canvas that draws into it.
-    bitmap->reset();
-    bitmap->setConfig(SkBitmap::kARGB_8888_Config,
-                      quarterWidth*4, quarterHeight*4);
-    bitmap->allocPixels();
+    bitmap->allocN32Pixels(quarterWidth*4, quarterHeight*4);
     SkCanvas canvas(*bitmap);
 
     SkScalar w = SkIntToScalar(quarterWidth);
diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp
index 4fd68ee..d1915c9 100644
--- a/gm/bitmapshader.cpp
+++ b/gm/bitmapshader.cpp
@@ -17,8 +17,7 @@
     SkPaint bluePaint;
     bluePaint.setColor(SK_ColorBLUE);
 
-    bm->setConfig(SkBitmap::kARGB_8888_Config, 20, 20);
-    bm->allocPixels();
+    bm->allocN32Pixels(20, 20);
     bm->eraseColor(SK_ColorRED);
 
     SkCanvas canvas(*bm);
@@ -29,8 +28,7 @@
     SkPaint circlePaint;
     circlePaint.setColor(SK_ColorBLACK);
 
-    bm->setConfig(SkBitmap::kA8_Config, 20, 20);
-    bm->allocPixels();
+    bm->allocConfigPixels(SkBitmap::kA8_Config, 20, 20);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas canvas(*bm);
diff --git a/gm/bitmapsource.cpp b/gm/bitmapsource.cpp
index d6e98a5..6d575eb 100644
--- a/gm/bitmapsource.cpp
+++ b/gm/bitmapsource.cpp
@@ -22,8 +22,7 @@
     }
 
     void makeBitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(100, 100);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index 8817604..c343d84 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -24,10 +24,7 @@
     static const SkPMColor kBlack = SkPreMultiplyColor(SK_ColorBLACK);
     static const SkPMColor kWhite = SkPreMultiplyColor(SK_ColorWHITE);
 
-    result->setConfig(SkBitmap::kARGB_8888_Config, width, height, 0,
-                      kOpaque_SkAlphaType);
-    result->allocPixels();
-    SkAutoLockPixels lock(*result);
+    result->allocN32Pixels(width, height, true);
 
     SkPMColor* scanline = result->getAddr32(0, 0);
     for (int x = 0; x < width; ++x) {
diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp
index 4087c89..72c0474 100644
--- a/gm/clippedbitmapshaders.cpp
+++ b/gm/clippedbitmapshaders.cpp
@@ -27,15 +27,12 @@
 
 static SkBitmap create_bitmap() {
     SkBitmap bmp;
-    bmp.setConfig(SkBitmap::kARGB_8888_Config, 2, 2);
-    bmp.allocPixels();
-    bmp.lockPixels();
+    bmp.allocN32Pixels(2, 2);
     uint32_t* pixels = reinterpret_cast<uint32_t*>(bmp.getPixels());
     pixels[0] = SkPreMultiplyColor(SK_ColorRED);
     pixels[1] = SkPreMultiplyColor(SK_ColorGREEN);
     pixels[2] = SkPreMultiplyColor(SK_ColorBLACK);
     pixels[3] = SkPreMultiplyColor(SK_ColorBLUE);
-    bmp.unlockPixels();
 
     return bmp;
 }
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index 2f98693..e0dcfaf 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -63,8 +63,7 @@
 
     SkBitmap createSolidBitmap(int width, int height) {
         SkBitmap bm;
-        bm.setConfig(SkBitmap::kARGB_8888_Config, width, height);
-        bm.allocPixels();
+        bm.allocN32Pixels(width, height);
         SkCanvas canvas(bm);
         canvas.clear(0x0);
         for (int y = 0; y < height; ++y) {
@@ -81,8 +80,7 @@
     // creates a bitmap with shades of transparent gray.
     SkBitmap createTransparentBitmap(int width, int height) {
         SkBitmap bm;
-        bm.setConfig(SkBitmap::kARGB_8888_Config, width, height);
-        bm.allocPixels();
+        bm.allocN32Pixels(width, height);
         SkCanvas canvas(bm);
         canvas.clear(0x0);
 
diff --git a/gm/deviceproperties.cpp b/gm/deviceproperties.cpp
index 8bca4b7..8c4649c 100644
--- a/gm/deviceproperties.cpp
+++ b/gm/deviceproperties.cpp
@@ -38,8 +38,7 @@
     virtual void onDraw(SkCanvas* originalCanvas) {
         SkISize size = this->getISize();
         SkBitmap bitmap;
-        bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
-        bitmap.allocPixels();
+        bitmap.allocN32Pixels(size.width(), size.height());
         SkDeviceProperties properties = SkDeviceProperties::Make(
             SkDeviceProperties::Geometry::Make(SkDeviceProperties::Geometry::kVertical_Orientation,
                                                SkDeviceProperties::Geometry::kBGR_Layout),
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index cc66401..ef6207a 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -32,8 +32,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(80, 80);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
@@ -46,8 +45,7 @@
     }
 
     void make_checkerboard(SkBitmap* bitmap, int w, int h) {
-        bitmap->setConfig(SkBitmap::kARGB_8888_Config, w, h);
-        bitmap->allocPixels();
+        bitmap->allocN32Pixels(w, h);
         SkBitmapDevice device(*bitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/downsamplebitmap.cpp b/gm/downsamplebitmap.cpp
index 034538c..4b97804 100644
--- a/gm/downsamplebitmap.cpp
+++ b/gm/downsamplebitmap.cpp
@@ -99,8 +99,7 @@
       float fTextSize;
 
       virtual void make_bitmap() SK_OVERRIDE {
-          fBM.setConfig(SkBitmap::kARGB_8888_Config, int(fTextSize * 8), int(fTextSize * 6));
-          fBM.allocPixels();
+          fBM.allocN32Pixels(int(fTextSize * 8), int(fTextSize * 6));
           SkCanvas canvas(fBM);
           canvas.drawColor(SK_ColorWHITE);
 
@@ -135,9 +134,7 @@
       int fNumChecks;
 
       virtual void make_bitmap() SK_OVERRIDE {
-          fBM.setConfig(SkBitmap::kARGB_8888_Config, fSize, fSize);
-          fBM.allocPixels();
-          SkAutoLockPixels lock(fBM);
+          fBM.allocN32Pixels(fSize, fSize);
           for (int y = 0; y < fSize; ++y) {
               for (int x = 0; x < fSize; ++x) {
                   SkPMColor* s = fBM.getAddr32(x, y);
@@ -183,8 +180,7 @@
                   SkImageDecoder::kDecodePixels_Mode);
               SkDELETE(codec);
           } else {
-              fBM.setConfig(SkBitmap::kARGB_8888_Config, 1, 1);
-              fBM.allocPixels();
+              fBM.allocN32Pixels(1, 1);
               *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
           }
           fSize = fBM.height();
diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp
index c880063..31cba51 100644
--- a/gm/drawbitmaprect.cpp
+++ b/gm/drawbitmaprect.cpp
@@ -16,8 +16,7 @@
 
 static SkBitmap make_chessbm(int w, int h) {
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config , w, h);
-    bm.allocPixels();
+    bm.allocN32Pixels(w, h);
 
     for (int y = 0; y < bm.height(); y++) {
         uint32_t* p = bm.getAddr32(0, y);
@@ -30,8 +29,7 @@
 }
 
 static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) {
-    bm->setConfig(config, w, h);
-    bm->allocPixels();
+    bm->allocConfigPixels(config, w, h);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas    canvas(*bm);
diff --git a/gm/dropshadowimagefilter.cpp b/gm/dropshadowimagefilter.cpp
index 6cffd5b..e9ed583 100644
--- a/gm/dropshadowimagefilter.cpp
+++ b/gm/dropshadowimagefilter.cpp
@@ -54,8 +54,7 @@
     r.roundOut(&bounds);
 
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorTRANSPARENT);
     SkCanvas c(bm);
     draw_path(&c, r, NULL);
@@ -74,8 +73,7 @@
     r.roundOut(&bounds);
 
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorRED);
     SkCanvas c(bm);
 
diff --git a/gm/extractbitmap.cpp b/gm/extractbitmap.cpp
index 5206741..efc5d35 100644
--- a/gm/extractbitmap.cpp
+++ b/gm/extractbitmap.cpp
@@ -16,8 +16,7 @@
 static void create_bitmap(SkBitmap* bitmap) {
     const int W = 100;
     const int H = 100;
-    bitmap->setConfig(SkBitmap::kARGB_8888_Config, W, H);
-    bitmap->allocPixels();
+    bitmap->allocN32Pixels(W, H);
 
     SkCanvas canvas(*bitmap);
     canvas.drawColor(SK_ColorRED);
diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp
index efe4d4a..c580591 100644
--- a/gm/filterbitmap.cpp
+++ b/gm/filterbitmap.cpp
@@ -115,8 +115,7 @@
       }
 
       void makeBitmap() SK_OVERRIDE {
-          fBM.setConfig(SkBitmap::kARGB_8888_Config, int(fTextSize * 8), int(fTextSize * 6));
-          fBM.allocPixels();
+          fBM.allocN32Pixels(int(fTextSize * 8), int(fTextSize * 6));
           SkCanvas canvas(fBM);
           canvas.drawColor(SK_ColorWHITE);
 
@@ -155,9 +154,7 @@
       }
 
       void makeBitmap() SK_OVERRIDE {
-          fBM.setConfig(SkBitmap::kARGB_8888_Config, fSize, fSize);
-          fBM.allocPixels();
-          SkAutoLockPixels lock(fBM);
+          fBM.allocN32Pixels(fSize, fSize);
           for (int y = 0; y < fSize; y ++) {
               for (int x = 0; x < fSize; x ++) {
                   SkPMColor* s = fBM.getAddr32(x, y);
@@ -207,8 +204,7 @@
                   SkImageDecoder::kDecodePixels_Mode);
               SkDELETE(codec);
           } else {
-              fBM.setConfig(SkBitmap::kARGB_8888_Config, 1, 1);
-              fBM.allocPixels();
+              fBM.allocN32Pixels(1, 1);
               *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
           }
           fSize = fBM.height();
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index ab75dc7..c284809 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -27,8 +27,7 @@
     const SkBitmap& getBitmap() {
         if (NULL == fBM) {
             fBM = new SkBitmap;
-            fBM->setConfig(SkBitmap::kARGB_8888_Config, W, H);
-            fBM->allocPixels();
+            fBM->allocN32Pixels(W, H);
             fBM->eraseColor(SK_ColorWHITE);
 
             const SkColor colors[] = {
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index 86d96fe..e7f2365 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -475,8 +475,7 @@
      */
     static void setup_bitmap(const ConfigData& gRec, SkISize& size,
                              SkBitmap* bitmap) {
-        bitmap->setConfig(gRec.fConfig, size.width(), size.height());
-        bitmap->allocPixels();
+        bitmap->allocConfigPixels(gRec.fConfig, size.width(), size.height());
         bitmap->eraseColor(SK_ColorTRANSPARENT);
     }
 
diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp
index 6fd72fc..4aa999d 100644
--- a/gm/hairmodes.cpp
+++ b/gm/hairmodes.cpp
@@ -60,8 +60,7 @@
 
 static SkShader* make_bg_shader() {
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, 2, 2);
-    bm.allocPixels();
+    bm.allocN32Pixels(2, 2);
     *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = 0xFFFFFFFF;
     *bm.getAddr32(1, 0) = *bm.getAddr32(0, 1) = SkPackARGB32(0xFF, 0xCC, 0xCC, 0xCC);
 
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index 5a0b0b6..528dd19 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -119,8 +119,7 @@
     r.roundOut(&bounds);
 
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorTRANSPARENT);
     SkCanvas c(bm);
     draw_path(&c, r, NULL);
@@ -136,8 +135,7 @@
     r.roundOut(&bounds);
 
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorTRANSPARENT);
     SkCanvas c(bm);
     draw_path(&c, r, NULL);
diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp
index 8f023f7..9f2d700 100644
--- a/gm/imagefilterscropped.cpp
+++ b/gm/imagefilterscropped.cpp
@@ -60,8 +60,7 @@
     r.roundOut(&bounds);
 
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorTRANSPARENT);
     SkCanvas c(bm);
     draw_path(&c, r, NULL);
@@ -80,8 +79,7 @@
     r.roundOut(&bounds);
 
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
-    bm.allocPixels();
+    bm.allocN32Pixels(bounds.width(), bounds.height());
     bm.eraseColor(SK_ColorRED);
     SkCanvas c(bm);
 
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index a8aa5fb..f5eaa28 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -91,8 +91,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(100, 100);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index f5275ca..ad52d90 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -33,8 +33,7 @@
     }
 
     void make_checkerboard() {
-        fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config, 64, 64);
-        fCheckerboard.allocPixels();
+        fCheckerboard.allocN32Pixels(64, 64);
         SkBitmapDevice device(fCheckerboard);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
@@ -59,8 +58,7 @@
         SkScalar x = SkIntToScalar(width / 2);
         SkScalar y = SkIntToScalar(height / 2);
         SkScalar radius = SkScalarMul(SkMinScalar(x, y), SkIntToScalar(4) / SkIntToScalar(5));
-        fGradientCircle.setConfig(SkBitmap::kARGB_8888_Config, width, height);
-        fGradientCircle.allocPixels();
+        fGradientCircle.allocN32Pixels(width, height);
         SkBitmapDevice device(fGradientCircle);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index ab2915d..1cab553 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -25,8 +25,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(100, 100);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 932d997..47a3581 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -24,8 +24,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(80, 80);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/mixedxfermodes.cpp b/gm/mixedxfermodes.cpp
index e3ce91a..4562325 100644
--- a/gm/mixedxfermodes.cpp
+++ b/gm/mixedxfermodes.cpp
@@ -84,11 +84,8 @@
                                                     0xFFCCCCCC,
                                                     0xFFFFFFFF };
             SkBitmap bitmap;
-            bitmap.setConfig(SkBitmap::kARGB_8888_Config, 2, 2, 2 * sizeof(uint32_t));
-            bitmap.allocPixels();
-            bitmap.lockPixels();
+            bitmap.allocN32Pixels(2, 2);
             memcpy(bitmap.getPixels(), kCheckerPixelData, sizeof(kCheckerPixelData));
-            bitmap.unlockPixels();
             fBG.reset(SkShader::CreateBitmapShader(bitmap,
                                                    SkShader::kRepeat_TileMode,
                                                    SkShader::kRepeat_TileMode));
diff --git a/gm/modecolorfilters.cpp b/gm/modecolorfilters.cpp
index 9859faa..9ac8ddd 100644
--- a/gm/modecolorfilters.cpp
+++ b/gm/modecolorfilters.cpp
@@ -38,8 +38,7 @@
 // draws a background behind each test rect to see transparency
 static SkShader* make_bg_shader(int checkSize) {
     SkBitmap bmp;
-    bmp.setConfig(SkBitmap::kARGB_8888_Config, 2 * checkSize, 2 * checkSize);
-    bmp.allocPixels();
+    bmp.allocN32Pixels(2 * checkSize, 2 * checkSize);
     SkCanvas canvas(bmp);
     canvas.clear(0xFF800000);
     SkPaint paint;
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 756190e..5cfb1c2 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -26,8 +26,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 135, 135);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(135, 135);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x0);
diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp
index 94b2d59..a14af00 100644
--- a/gm/ninepatchstretch.cpp
+++ b/gm/ninepatchstretch.cpp
@@ -12,8 +12,7 @@
     const int kStretchy = 8;
     const int kSize = 2*kFixed + kStretchy;
 
-    bitmap->setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize);
-    bitmap->allocPixels();
+    bitmap->allocN32Pixels(kSize, kSize);
     SkBaseDevice* dev = new SkBitmapDevice(*bitmap);
 
     SkCanvas canvas(dev);
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index 95f1a31..e0d2fbc 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -27,8 +27,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(80, 80);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/optimizations.cpp b/gm/optimizations.cpp
index 8d0b7ca..a404ad7 100644
--- a/gm/optimizations.cpp
+++ b/gm/optimizations.cpp
@@ -395,10 +395,7 @@
         static const unsigned int kCheckerboardWidth = 16;
         static const unsigned int kCheckerboardHeight = 16;
 
-        fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config,
-                                kCheckerboardWidth, kCheckerboardHeight);
-        fCheckerboard.allocPixels();
-        SkAutoLockPixels lock(fCheckerboard);
+        fCheckerboard.allocN32Pixels(kCheckerboardWidth, kCheckerboardHeight);
         for (unsigned int y = 0; y < kCheckerboardHeight; y += 2) {
             SkPMColor* scanline = fCheckerboard.getAddr32(0, y);
             for (unsigned int x = 0; x < kCheckerboardWidth; x += 2) {
diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp
index 2fbc8f7..c1ffd94 100644
--- a/gm/pathopsinverse.cpp
+++ b/gm/pathopsinverse.cpp
@@ -36,8 +36,7 @@
 
     SkColor blend(SkColor one, SkColor two) {
         SkBitmap temp;
-        temp.setConfig(SkBitmap::kARGB_8888_Config, 1, 1);
-        temp.allocPixels();
+        temp.allocN32Pixels(1, 1);
         SkCanvas canvas(temp);
         canvas.drawColor(one);
         canvas.drawColor(two);
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index 93a26dd..2ddac3a 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -47,13 +47,7 @@
         static const int xSize = 16;
         static const int ySize = 16;
 
-        fTexture.setConfig(SkBitmap::kARGB_8888_Config,
-                           xSize,
-                           ySize,
-                           xSize*sizeof(SkColor));
-
-        fTexture.allocPixels();
-        fTexture.lockPixels();
+        fTexture.allocN32Pixels(xSize, ySize);
         SkPMColor* addr = fTexture.getAddr32(0, 0);
 
         for (int y = 0; y < ySize; ++y) {
@@ -69,8 +63,6 @@
             }
         }
 
-        fTexture.unlockPixels();
-
         fTextureCreated = true;
     }
 
diff --git a/gm/scalebitmap.cpp b/gm/scalebitmap.cpp
index c015062..10a1d86 100644
--- a/gm/scalebitmap.cpp
+++ b/gm/scalebitmap.cpp
@@ -35,8 +35,7 @@
                 SkImageDecoder::kDecodePixels_Mode);
             SkDELETE(codec);
         } else {
-            fBM.setConfig(SkBitmap::kARGB_8888_Config, 1, 1);
-            fBM.allocPixels();
+            fBM.allocN32Pixels(1, 1);
             *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
         }
         fSize = fBM.height();
@@ -62,8 +61,7 @@
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBitmap dst;
-        dst.setConfig(SkBitmap::kARGB_8888_Config, fBM.width() * fScale, fBM.height() * fScale);
-        dst.allocPixels();
+        dst.allocN32Pixels(fBM.width() * fScale, fBM.height() * fScale);
         fBM.scale(&dst);
 
         canvas->drawBitmap(dst, 0, 0);
diff --git a/gm/shadertext.cpp b/gm/shadertext.cpp
index 412516b..eccd8cb 100644
--- a/gm/shadertext.cpp
+++ b/gm/shadertext.cpp
@@ -13,8 +13,7 @@
 namespace skiagm {
 
 static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) {
-    bm->setConfig(config, w, h);
-    bm->allocPixels();
+    bm->allocConfigPixels(config, w, h);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas    canvas(*bm);
diff --git a/gm/shadertext2.cpp b/gm/shadertext2.cpp
index a7da436..e8a4c6d 100644
--- a/gm/shadertext2.cpp
+++ b/gm/shadertext2.cpp
@@ -12,8 +12,7 @@
 namespace skiagm {
 
 static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) {
-    bm->setConfig(config, w, h);
-    bm->allocPixels();
+    bm->allocConfigPixels(config, w, h);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas    canvas(*bm);
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index 36abf9f..15b4f99 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -12,8 +12,7 @@
 namespace skiagm {
 
 static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) {
-    bm->setConfig(config, w, h);
-    bm->allocPixels();
+    bm->allocConfigPixels(config, w, h);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas    canvas(*bm);
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp
index 8aaa6ea..5884efe 100644
--- a/gm/spritebitmap.cpp
+++ b/gm/spritebitmap.cpp
@@ -10,8 +10,7 @@
 #include "SkBlurImageFilter.h"
 
 static void make_bm(SkBitmap* bm) {
-    bm->setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
-    bm->allocPixels();
+    bm->allocN32Pixels(100, 100);
     bm->eraseColor(SK_ColorBLUE);
 
     SkCanvas canvas(*bm);
diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp
index 49e342d..f806caa 100644
--- a/gm/tablecolorfilter.cpp
+++ b/gm/tablecolorfilter.cpp
@@ -13,8 +13,7 @@
 static void make_bm0(SkBitmap* bm) {
     int W = 120;
     int H = 120;
-    bm->setConfig(SkBitmap::kARGB_8888_Config, W, H);
-    bm->allocPixels();
+    bm->allocN32Pixels(W, H);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas canvas(*bm);
@@ -32,8 +31,7 @@
 static void make_bm1(SkBitmap* bm) {
     int W = 120;
     int H = 120;
-    bm->setConfig(SkBitmap::kARGB_8888_Config, W, H);
-    bm->allocPixels();
+    bm->allocN32Pixels(W, H);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas canvas(*bm);
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index 2d6160f..d0acad7 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -27,8 +27,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(80, 80);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0xFF000000);
@@ -41,8 +40,7 @@
     }
 
     void make_checkerboard() {
-        fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fCheckerboard.allocPixels();
+        fCheckerboard.allocN32Pixels(80, 80);
         SkBitmapDevice device(fCheckerboard);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index dcfc133..0b0a3ae 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -20,8 +20,7 @@
 #include "SkBlurDrawLooper.h"
 
 static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) {
-    bm->setConfig(config, w, h);
-    bm->allocPixels();
+    bm->allocConfigPixels(config, w, h);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas    canvas(*bm);
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 87bd1dd..603a78f 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -20,8 +20,7 @@
 #include "SkBlurDrawLooper.h"
 
 static void makebm(SkBitmap* bm, SkBitmap::Config config, int w, int h) {
-    bm->setConfig(config, w, h);
-    bm->allocPixels();
+    bm->allocConfigPixels(config, w, h);
     bm->eraseColor(SK_ColorTRANSPARENT);
 
     SkCanvas    canvas(*bm);
diff --git a/gm/verylargebitmap.cpp b/gm/verylargebitmap.cpp
index e6d81cd..e0a4618 100644
--- a/gm/verylargebitmap.cpp
+++ b/gm/verylargebitmap.cpp
@@ -11,8 +11,7 @@
 #include "SkPath.h"
 
 static void make_bm(SkBitmap* bm, int width, int height, SkColor colors[2]) {
-    bm->setConfig(SkBitmap::kARGB_8888_Config, width, height);
-    bm->allocPixels();
+    bm->allocN32Pixels(width, height);
     SkCanvas canvas(*bm);
     SkPoint center = {SkIntToScalar(width)/2, SkIntToScalar(height)/2};
     SkScalar radius = 40;
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index 936af46..f843d40 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -29,8 +29,7 @@
     }
 
     void make_bitmap() {
-        fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fBitmap.allocPixels();
+        fBitmap.allocN32Pixels(80, 80);
         SkBitmapDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
@@ -43,8 +42,7 @@
     }
 
     void make_checkerboard() {
-        fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
-        fCheckerboard.allocPixels();
+        fCheckerboard.allocN32Pixels(80, 80);
         SkBitmapDevice device(fCheckerboard);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index 7ee1e80..353bebf 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -14,8 +14,7 @@
 
 static void make_bitmaps(int w, int h, SkBitmap* src, SkBitmap* dst,
                          SkBitmap* transparent) {
-    src->setConfig(SkBitmap::kARGB_8888_Config, w, h);
-    src->allocPixels();
+    src->allocN32Pixels(w, h);
     src->eraseColor(SK_ColorTRANSPARENT);
 
     SkPaint p;
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index 046c3dd..6202af9 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -93,9 +93,7 @@
             SkPackARGB32(0xFF, 0x40, 0x40, 0x40)
         };
         SkBitmap bg;
-        bg.setConfig(SkBitmap::kARGB_8888_Config, 2, 2, 0, kOpaque_SkAlphaType);
-        bg.allocPixels();
-        SkAutoLockPixels bgAlp(bg);
+        bg.allocN32Pixels(2, 2, true);
         memcpy(bg.getPixels(), kCheckData, sizeof(kCheckData));
 
         fBG.reset(SkShader::CreateBitmapShader(bg,
@@ -106,9 +104,7 @@
         fBG->setLocalMatrix(lm);
 
         SkBitmap dstBmp;
-        dstBmp.setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize);
-        dstBmp.allocPixels();
-        SkAutoLockPixels dstAlp(dstBmp);
+        dstBmp.allocN32Pixels(kSize, kSize);
         SkPMColor* pixels = reinterpret_cast<SkPMColor*>(dstBmp.getPixels());
 
         for (int y = 0; y < kSize; ++y) {
@@ -122,9 +118,7 @@
                                                 SkShader::kClamp_TileMode,
                                                 SkShader::kClamp_TileMode));
         SkBitmap srcBmp;
-        srcBmp.setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize);
-        srcBmp.allocPixels();
-        SkAutoLockPixels srcAlp(srcBmp);
+        srcBmp.allocN32Pixels(kSize, kSize);
         pixels = reinterpret_cast<SkPMColor*>(srcBmp.getPixels());
 
         for (int x = 0; x < kSize; ++x) {
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index d01c019..bb7d614 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -188,8 +188,7 @@
             SkPackARGB32(0xFF, 0x40, 0x40, 0x40)
         };
         SkBitmap bg;
-        bg.setConfig(SkBitmap::kARGB_8888_Config, 2, 2, 0, kOpaque_SkAlphaType);
-        bg.allocPixels();
+        bg.allocN32Pixels(2, 2, true);
         SkAutoLockPixels bgAlp(bg);
         memcpy(bg.getPixels(), kCheckData, sizeof(kCheckData));
 
@@ -212,8 +211,7 @@
                                                           SkShader::kRepeat_TileMode))->unref();
 
         SkBitmap bmp;
-        bmp.setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize);
-        bmp.allocPixels();
+        bmp.allocN32Pixels(kSize, kSize);
         SkCanvas bmpCanvas(bmp);
 
         bmpCanvas.clear(SK_ColorTRANSPARENT);