diff --git a/gm/all_bitmap_configs.cpp b/gm/all_bitmap_configs.cpp
index 699a55b..24f0735 100644
--- a/gm/all_bitmap_configs.cpp
+++ b/gm/all_bitmap_configs.cpp
@@ -122,7 +122,7 @@
     sk_tool_utils::draw_checkerboard(canvas, SK_ColorLTGRAY, SK_ColorWHITE, 8);
 
     SkBitmap bitmap;
-    if (GetResourceAsBitmap("color_wheel.png", &bitmap)) {
+    if (GetResourceAsBitmap("images/color_wheel.png", &bitmap)) {
         bitmap.setImmutable();
         draw(canvas, p, bitmap, kN32_SkColorType, "Native 32");
 
diff --git a/gm/animatedGif.cpp b/gm/animatedGif.cpp
index 5686193..8b92e94 100644
--- a/gm/animatedGif.cpp
+++ b/gm/animatedGif.cpp
@@ -18,7 +18,7 @@
 
 #include <vector>
 
-DEFINE_string(animatedGif, "test640x479.gif", "Animated gif in resources folder");
+DEFINE_string(animatedGif, "images/test640x479.gif", "Animated gif in resources folder");
 
 namespace {
     void error(SkCanvas* canvas, const SkString& errorText) {
diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp
index ccd3487..225d56c 100644
--- a/gm/bitmapimage.cpp
+++ b/gm/bitmapimage.cpp
@@ -28,7 +28,7 @@
 
     void onDraw(SkCanvas* canvas) override {
         // Create image.
-        const char* path = "mandrill_512_q075.jpg";
+        const char* path = "images/mandrill_512_q075.jpg";
         sk_sp<SkImage> image = GetResourceAsImage(path);
         if (!image) {
             SkDebugf("Failure: Is the resource path set properly?");
diff --git a/gm/blurs.cpp b/gm/blurs.cpp
index adb2a1f..0e0374e 100644
--- a/gm/blurs.cpp
+++ b/gm/blurs.cpp
@@ -124,7 +124,7 @@
     SkPaint paint;
     paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 10, 0));
     canvas->clear(0xFF88FF88);
-    if (auto image = GetResourceAsImage("mandrill_512_q075.jpg")) {
+    if (auto image = GetResourceAsImage("images/mandrill_512_q075.jpg")) {
         canvas->scale(0.25, 0.25);
         canvas->drawImage(image, 256, 256, &paint);
     }
diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp
index 7ca2426..dba1a13 100644
--- a/gm/colorfilterimagefilter.cpp
+++ b/gm/colorfilterimagefilter.cpp
@@ -67,7 +67,7 @@
 }
 
 static sk_sp<SkShader> sh_make_image() {
-    sk_sp<SkImage> image(GetResourceAsImage("mandrill_128.png"));
+    sk_sp<SkImage> image(GetResourceAsImage("images/mandrill_128.png"));
     if (!image) {
         return nullptr;
     }
@@ -225,7 +225,7 @@
 }
 
 DEF_SIMPLE_GM(mixershader, canvas, 800, 700) {
-    auto shaderA = GetResourceAsImage("mandrill_128.png")->makeShader(SkShader::kClamp_TileMode,
+    auto shaderA = GetResourceAsImage("images/mandrill_128.png")->makeShader(SkShader::kClamp_TileMode,
                                                                       SkShader::kClamp_TileMode);
     const SkColor colors[] = { SK_ColorGREEN, 0 };
     auto shaderB = SkGradientShader::MakeRadial({60, 60}, 55, colors, nullptr, 2,
diff --git a/gm/colorwheel.cpp b/gm/colorwheel.cpp
index b8a0895..c0b7cf4 100644
--- a/gm/colorwheel.cpp
+++ b/gm/colorwheel.cpp
@@ -32,10 +32,10 @@
  */
 DEF_SIMPLE_GM(colorwheel, canvas, 256, 256) {
     sk_tool_utils::draw_checkerboard(canvas);
-    draw_image(canvas, "color_wheel.png", 0, 0);  // top left
-    draw_image(canvas, "color_wheel.gif", 128, 0);  // top right
-    draw_image(canvas, "color_wheel.webp", 0, 128);  // bottom left
-    draw_image(canvas, "color_wheel.jpg", 128, 128);  // bottom right
+    draw_image(canvas, "images/color_wheel.png", 0, 0);  // top left
+    draw_image(canvas, "images/color_wheel.gif", 128, 0);  // top right
+    draw_image(canvas, "images/color_wheel.webp", 0, 128);  // bottom left
+    draw_image(canvas, "images/color_wheel.jpg", 128, 128);  // bottom right
 }
 
 DEF_SIMPLE_GM(colorwheelnative, canvas, 128, 28) {
diff --git a/gm/copyTo4444.cpp b/gm/copyTo4444.cpp
index 97e6f0a..b860dca 100644
--- a/gm/copyTo4444.cpp
+++ b/gm/copyTo4444.cpp
@@ -32,7 +32,7 @@
 
     virtual void onDraw(SkCanvas* canvas) {
         SkBitmap bm, bm4444;
-        if (!GetResourceAsBitmap("dog.jpg", &bm)) {
+        if (!GetResourceAsBitmap("images/dog.jpg", &bm)) {
             SkDebugf("Could not decode the file. Did you forget to set the "
                      "resourcePath?\n");
             return;
diff --git a/gm/crosscontextimage.cpp b/gm/crosscontextimage.cpp
index ff56a28..03203c4 100644
--- a/gm/crosscontextimage.cpp
+++ b/gm/crosscontextimage.cpp
@@ -19,7 +19,7 @@
         return;
     }
 
-    sk_sp<SkData> encodedData = GetResourceAsData("mandrill_512.png");
+    sk_sp<SkData> encodedData = GetResourceAsData("images/mandrill_512.png");
 
     sk_sp<SkImage> encodedImage = SkImage::MakeFromEncoded(encodedData);
     canvas->drawImage(encodedImage, 10, 10);
diff --git a/gm/downsamplebitmap.cpp b/gm/downsamplebitmap.cpp
index e142bde..377ba09 100644
--- a/gm/downsamplebitmap.cpp
+++ b/gm/downsamplebitmap.cpp
@@ -183,16 +183,16 @@
 
 DEF_GM( return new DownsampleBitmapTextGM(72, kHigh_SkFilterQuality); )
 DEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, kHigh_SkFilterQuality); )
-DEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", kHigh_SkFilterQuality); )
+DEF_GM( return new DownsampleBitmapImageGM("images/mandrill_512.png", kHigh_SkFilterQuality); )
 
 DEF_GM( return new DownsampleBitmapTextGM(72, kMedium_SkFilterQuality); )
 DEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, kMedium_SkFilterQuality); )
-DEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", kMedium_SkFilterQuality); )
+DEF_GM( return new DownsampleBitmapImageGM("images/mandrill_512.png", kMedium_SkFilterQuality); )
 
 DEF_GM( return new DownsampleBitmapTextGM(72, kLow_SkFilterQuality); )
 DEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, kLow_SkFilterQuality); )
-DEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", kLow_SkFilterQuality); )
+DEF_GM( return new DownsampleBitmapImageGM("images/mandrill_512.png", kLow_SkFilterQuality); )
 
 DEF_GM( return new DownsampleBitmapTextGM(72, kNone_SkFilterQuality); )
 DEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, kNone_SkFilterQuality); )
-DEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", kNone_SkFilterQuality); )
+DEF_GM( return new DownsampleBitmapImageGM("images/mandrill_512.png", kNone_SkFilterQuality); )
diff --git a/gm/draw_bitmap_rect_skbug4374.cpp b/gm/draw_bitmap_rect_skbug4374.cpp
index 582ae3e..bf26049 100644
--- a/gm/draw_bitmap_rect_skbug4374.cpp
+++ b/gm/draw_bitmap_rect_skbug4374.cpp
@@ -9,7 +9,7 @@
 // https://bug.skia.org/4374
 DEF_SIMPLE_GM(draw_bitmap_rect_skbug4734, canvas, 64, 64) {
     SkBitmap source;
-    if (GetResourceAsBitmap("randPixels.png", &source)) {
+    if (GetResourceAsBitmap("images/randPixels.png", &source)) {
         SkRect rect = SkRect::Make(source.bounds());
         rect.inset(0.5, 1.5);
         SkRect dst;
diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp
index de44b6d..4a23e26 100644
--- a/gm/drawatlas.cpp
+++ b/gm/drawatlas.cpp
@@ -198,7 +198,7 @@
     const SkRSXform xform = SkRSXform::Make(1, 0, 0, 0);
     const SkColor color = 0x884488CC;
 
-    auto image = GetResourceAsImage("mandrill_128.png");
+    auto image = GetResourceAsImage("images/mandrill_128.png");
     auto verts = make_vertices(image, tex, color);
     const sk_sp<SkColorFilter> filters[] = {
         nullptr,
diff --git a/gm/encode-alpha-jpeg.cpp b/gm/encode-alpha-jpeg.cpp
index 6686e78..dc07bf3 100644
--- a/gm/encode-alpha-jpeg.cpp
+++ b/gm/encode-alpha-jpeg.cpp
@@ -43,7 +43,7 @@
     }
 
     void onDraw(SkCanvas* canvas) override {
-        sk_sp<SkImage> srcImg = GetResourceAsImage("rainbow-gradient.png");
+        sk_sp<SkImage> srcImg = GetResourceAsImage("images/rainbow-gradient.png");
         fStorage.reset(srcImg->width() * srcImg->height() *
                 SkColorTypeBytesPerPixel(kRGBA_F16_SkColorType));
 
diff --git a/gm/encode-platform.cpp b/gm/encode-platform.cpp
index dd7ca6e..a9eaae6 100644
--- a/gm/encode-platform.cpp
+++ b/gm/encode-platform.cpp
@@ -20,12 +20,12 @@
 namespace skiagm {
 
 static void make_opaque_256(SkBitmap* bitmap) {
-    GetResourceAsBitmap("mandrill_256.png", bitmap);
+    GetResourceAsBitmap("images/mandrill_256.png", bitmap);
 }
 
 static void make_premul_256(SkBitmap* bitmap) {
     SkBitmap tmp;
-    GetResourceAsBitmap("yellow_rose.png", &tmp);
+    GetResourceAsBitmap("images/yellow_rose.png", &tmp);
     tmp.extractSubset(bitmap, SkIRect::MakeWH(256, 256));
 }
 
diff --git a/gm/encode-srgb.cpp b/gm/encode-srgb.cpp
index be3cd62..527ece9 100644
--- a/gm/encode-srgb.cpp
+++ b/gm/encode-srgb.cpp
@@ -42,16 +42,16 @@
     const char* resource;
     switch (colorType) {
         case kGray_8_SkColorType:
-            resource = "grayscale.jpg";
+            resource = "images/grayscale.jpg";
             alphaType = kOpaque_SkAlphaType;
             break;
         case kRGB_565_SkColorType:
-            resource = "color_wheel.jpg";
+            resource = "images/color_wheel.jpg";
             alphaType = kOpaque_SkAlphaType;
             break;
         default:
-            resource = (kOpaque_SkAlphaType == alphaType) ? "color_wheel.jpg"
-                                                          : "color_wheel.png";
+            resource = (kOpaque_SkAlphaType == alphaType) ? "images/color_wheel.jpg"
+                                                          : "images/color_wheel.png";
             break;
     }
 
diff --git a/gm/encode.cpp b/gm/encode.cpp
index 88e7724..7356470 100644
--- a/gm/encode.cpp
+++ b/gm/encode.cpp
@@ -29,7 +29,7 @@
 
     void onDraw(SkCanvas* canvas) override {
         SkBitmap orig;
-        GetResourceAsBitmap("mandrill_512_q075.jpg", &orig);
+        GetResourceAsBitmap("images/mandrill_512_q075.jpg", &orig);
         sk_sp<SkData> pngData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kPNG, 100));
         sk_sp<SkData> jpegData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kJPEG, 100));
 
diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp
index a630662..a393893 100644
--- a/gm/filterbitmap.cpp
+++ b/gm/filterbitmap.cpp
@@ -196,7 +196,8 @@
       }
 
       void makeBitmap() override {
-        if (!GetResourceAsBitmap(fFilename.c_str(), &fBM)) {
+        SkString resource = SkStringPrintf("images/%s", fFilename.c_str());
+        if (!GetResourceAsBitmap(resource.c_str(), &fBM)) {
             fBM.allocN32Pixels(1, 1);
             fBM.eraseARGB(255, 255, 0 , 0); // red == bad
         }
diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp
index 84f512d..01ecb21 100644
--- a/gm/filterindiabox.cpp
+++ b/gm/filterindiabox.cpp
@@ -111,4 +111,4 @@
 //////////////////////////////////////////////////////////////////////////////
 
 
-DEF_GM( return new FilterIndiaBoxGM("box.gif"); )
+DEF_GM( return new FilterIndiaBoxGM("images/box.gif"); )
diff --git a/gm/grayscalejpg.cpp b/gm/grayscalejpg.cpp
index bc88ee1..851c8d0 100644
--- a/gm/grayscalejpg.cpp
+++ b/gm/grayscalejpg.cpp
@@ -14,7 +14,7 @@
  *  http://crbug.com/436079
  */
 DEF_SIMPLE_GM(grayscalejpg, canvas, 128, 128) {
-    const char kResource[] = "grayscale.jpg";
+    const char kResource[] = "images/grayscale.jpg";
     sk_sp<SkImage> image(GetResourceAsImage(kResource));
     if (image) {
         canvas->drawImage(image, 0.0f, 0.0f);
diff --git a/gm/imagefilters.cpp b/gm/imagefilters.cpp
index dd6287b..146388f 100644
--- a/gm/imagefilters.cpp
+++ b/gm/imagefilters.cpp
@@ -163,7 +163,7 @@
 
     SkPaint paint;
     paint.setFilterQuality(kMedium_SkFilterQuality);
-    sk_sp<SkImage> image(GetResourceAsImage("mandrill_512.png"));
+    sk_sp<SkImage> image(GetResourceAsImage("images/mandrill_512.png"));
 
     canvas->translate(20, 20);
     for (const auto& xform : xforms) {
diff --git a/gm/makecolorspace.cpp b/gm/makecolorspace.cpp
index 0ea3d40..c0002b3 100644
--- a/gm/makecolorspace.cpp
+++ b/gm/makecolorspace.cpp
@@ -61,8 +61,8 @@
         sk_sp<SkColorSpace> wideGamutLinear = as_CSB(wideGamut)->makeLinearGamma();
 
         // Lazy images
-        sk_sp<SkImage> opaqueImage = GetResourceAsImage("mandrill_128.png");
-        sk_sp<SkImage> premulImage = GetResourceAsImage("color_wheel.png");
+        sk_sp<SkImage> opaqueImage = GetResourceAsImage("images/mandrill_128.png");
+        sk_sp<SkImage> premulImage = GetResourceAsImage("images/color_wheel.png");
         canvas->drawImage(opaqueImage, 0.0f, 0.0f);
         canvas->drawImage(make_color_space(opaqueImage, wideGamut, behavior), 128.0f, 0.0f);
         canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear, behavior), 256.0f, 0.0f);
@@ -72,8 +72,8 @@
         canvas->translate(0.0f, 256.0f);
 
         // Raster images
-        opaqueImage = make_raster_image("mandrill_128.png", behavior);
-        premulImage = make_raster_image("color_wheel.png", behavior);
+        opaqueImage = make_raster_image("images/mandrill_128.png", behavior);
+        premulImage = make_raster_image("images/color_wheel.png", behavior);
         canvas->drawImage(opaqueImage, 0.0f, 0.0f);
         canvas->drawImage(make_color_space(opaqueImage, wideGamut, behavior), 128.0f, 0.0f);
         canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear, behavior), 256.0f, 0.0f);
diff --git a/gm/patch.cpp b/gm/patch.cpp
index 1b6dbd1..5cfc8b5 100644
--- a/gm/patch.cpp
+++ b/gm/patch.cpp
@@ -152,7 +152,7 @@
     const SkColor colors[SkPatchUtils::kNumCorners] = {
         SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN
     };
-    dopatch(canvas, colors, GetResourceAsImage("mandrill_128.png"));
+    dopatch(canvas, colors, GetResourceAsImage("images/mandrill_128.png"));
 }
 DEF_SIMPLE_GM(patch_alpha, canvas, 1500, 1100) {
     const SkColor colors[SkPatchUtils::kNumCorners] = {
diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp
index bd2fe9b..6e8a51a 100644
--- a/gm/readpixels.cpp
+++ b/gm/readpixels.cpp
@@ -51,7 +51,7 @@
 static const int kHeight = 64;
 
 static sk_sp<SkImage> make_raster_image(SkColorType colorType) {
-    std::unique_ptr<SkStream> stream(GetResourceAsStream("google_chrome.ico"));
+    std::unique_ptr<SkStream> stream(GetResourceAsStream("images/google_chrome.ico"));
     std::unique_ptr<SkCodec> codec = SkCodec::MakeFromStream(std::move(stream));
 
     SkBitmap bitmap;
@@ -66,7 +66,7 @@
 }
 
 static sk_sp<SkImage> make_codec_image() {
-    sk_sp<SkData> encoded = GetResourceAsData("randPixels.png");
+    sk_sp<SkData> encoded = GetResourceAsData("images/randPixels.png");
     return SkImage::MakeFromEncoded(encoded);
 }
 
diff --git a/gm/repeated_bitmap.cpp b/gm/repeated_bitmap.cpp
index a659e78..09f30fb 100644
--- a/gm/repeated_bitmap.cpp
+++ b/gm/repeated_bitmap.cpp
@@ -35,9 +35,9 @@
 }
 
 DEF_SIMPLE_GM(repeated_bitmap, canvas, 576, 576) {
-    draw_rotated_image(canvas, GetResourceAsImage("randPixels.png").get());
+    draw_rotated_image(canvas, GetResourceAsImage("images/randPixels.png").get());
 }
 
 DEF_SIMPLE_GM(repeated_bitmap_jpg, canvas, 576, 576) {
-    draw_rotated_image(canvas, GetResourceAsImage("color_wheel.jpg").get());
+    draw_rotated_image(canvas, GetResourceAsImage("images/color_wheel.jpg").get());
 }
diff --git a/gm/savelayer.cpp b/gm/savelayer.cpp
index dd7ff7b..a5b2f9c 100644
--- a/gm/savelayer.cpp
+++ b/gm/savelayer.cpp
@@ -109,7 +109,7 @@
 // restore with kPlus mode, which should show the mandrill super-bright on the outside, but
 // normal where we punched the hole.
 DEF_SIMPLE_GM(savelayer_initfromprev, canvas, 256, 256) {
-    canvas->drawImage(GetResourceAsImage("mandrill_256.png"), 0, 0, nullptr);
+    canvas->drawImage(GetResourceAsImage("images/mandrill_256.png"), 0, 0, nullptr);
 
     SkCanvas::SaveLayerRec rec;
     SkPaint paint;
diff --git a/gm/smallimage.cpp b/gm/smallimage.cpp
deleted file mode 100644
index 6eb48d8..0000000
--- a/gm/smallimage.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "Resources.h"
-#include "gm.h"
-
-DEF_SIMPLE_GM(small_image, canvas, 8, 8) {
-    SkBitmap bitmap;
-    if (GetResourceAsBitmap("randPixels.png", &bitmap)) {
-        canvas->drawBitmap(bitmap, 0.0f, 0.0f);
-    } else {
-        SkDebugf("\nCould not decode resource.\n");
-    }
-}
diff --git a/gm/srgb.cpp b/gm/srgb.cpp
index bbf0abd..f0bff69 100644
--- a/gm/srgb.cpp
+++ b/gm/srgb.cpp
@@ -13,7 +13,7 @@
 #include "SkColorFilter.h"
 
 DEF_SIMPLE_GM(srgb_colorfilter, canvas, 512, 256*3) {
-    auto img = GetResourceAsImage("mandrill_256.png");
+    auto img = GetResourceAsImage("images/mandrill_256.png");
 
     const float array[] = {
         1, 0, 0, 0, 0,
diff --git a/gm/subsetshader.cpp b/gm/subsetshader.cpp
index a7029f4..4657aa5 100644
--- a/gm/subsetshader.cpp
+++ b/gm/subsetshader.cpp
@@ -14,7 +14,7 @@
     canvas->clear(SK_ColorWHITE);
 
     SkBitmap source;
-    if (!GetResourceAsBitmap("color_wheel.png", &source)) {
+    if (!GetResourceAsBitmap("images/color_wheel.png", &source)) {
         return;
     }
     SkIRect left = SkIRect::MakeWH(source.width()/2, source.height());
