rewrite includes to not need so much -Ifoo

Current strategy: everything from the top

Things to look at first are the manual changes:

   - added tools/rewrite_includes.py
   - removed -Idirectives from BUILD.gn
   - various compile.sh simplifications
   - tweak tools/embed_resources.py
   - update gn/find_headers.py to write paths from the top
   - update gn/gn_to_bp.py SkUserConfig.h layout
     so that #include "include/config/SkUserConfig.h" always
     gets the header we want.

No-Presubmit: true
Change-Id: I73a4b181654e0e38d229bc456c0d0854bae3363e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/209706
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
diff --git a/gm/3dgm.cpp b/gm/3dgm.cpp
index e530d09..5f605c7 100644
--- a/gm/3dgm.cpp
+++ b/gm/3dgm.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "Sk3D.h"
-#include "SkFont.h"
-#include "SkPath.h"
-#include "SkPoint3.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPoint3.h"
+#include "include/utils/Sk3D.h"
 
 #ifdef SK_ENABLE_SKOTTIE
 
-#include "AnimTimer.h"
-#include "Resources.h"
-#include "SkStream.h"
-#include "Skottie.h"
+#include "include/core/SkStream.h"
+#include "modules/skottie/include/Skottie.h"
+#include "tools/Resources.h"
+#include "tools/timer/AnimTimer.h"
 
 static SkMatrix operator*(const SkMatrix& a, const SkMatrix& b) {
     SkMatrix44 c;
diff --git a/gm/OverStroke.cpp b/gm/OverStroke.cpp
index 6827890..55fcc05 100644
--- a/gm/OverStroke.cpp
+++ b/gm/OverStroke.cpp
@@ -23,11 +23,11 @@
  */
 
 
-#include "gm.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPathMeasure.h"
-#include "SkPointPriv.h"
+#include "gm/gm.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPathMeasure.h"
+#include "src/core/SkPointPriv.h"
 
 const SkScalar OVERSTROKE_WIDTH = 500.0f;
 const SkScalar NORMALSTROKE_WIDTH = 3.0f;
diff --git a/gm/aaa.cpp b/gm/aaa.cpp
index 2ed5dc8..5c888d3 100644
--- a/gm/aaa.cpp
+++ b/gm/aaa.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
-#include "SkScan.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "src/core/SkScan.h"
 
 #define W   800
 #define H   800
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index 0260f27..e96d0fd 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvasPriv.h"
-#include "SkMakeUnique.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "src/core/SkCanvasPriv.h"
+#include "src/core/SkMakeUnique.h"
+#include "tools/ToolUtils.h"
 
 static void do_draw(SkCanvas* canvas, const SkRect& r) {
     SkPaint paint;
@@ -161,7 +161,7 @@
     }
 }
 
-#include "SkCGUtils.h"
+#include "include/utils/mac/SkCGUtils.h"
 static void test_image(SkCanvas* canvas, const SkImageInfo& info) {
     SkBitmap bm;
     bm.allocPixels(info);
diff --git a/gm/aarectmodes.cpp b/gm/aarectmodes.cpp
index 9a39d04..5cce2ae 100644
--- a/gm/aarectmodes.cpp
+++ b/gm/aarectmodes.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkPath.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkShader.h"
 
 static void test4(SkCanvas* canvas) {
     SkPaint paint;
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp
index 58b4c44..0c89d89 100644
--- a/gm/aaxfermodes.cpp
+++ b/gm/aaxfermodes.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkColorPriv.h"
-#include "SkPath.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
 enum {
     kXfermodeCount = (int)SkBlendMode::kLastMode + 1 + 1,   // extra for arith
diff --git a/gm/addarc.cpp b/gm/addarc.cpp
index c9b7633..d42692e 100644
--- a/gm/addarc.cpp
+++ b/gm/addarc.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "SkCanvas.h"
-#include "SkPathMeasure.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPathMeasure.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
+#include "tools/timer/AnimTimer.h"
 
 class AddArcGM : public skiagm::GM {
 public:
diff --git a/gm/all_bitmap_configs.cpp b/gm/all_bitmap_configs.cpp
index 4435942..ada67dc 100644
--- a/gm/all_bitmap_configs.cpp
+++ b/gm/all_bitmap_configs.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
-#include "SkColorPriv.h"
-#include "SkFont.h"
-#include "SkMath.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkMath.h"
 
 static SkBitmap copy_bitmap(const SkBitmap& src, SkColorType colorType) {
     const SkBitmap* srcPtr = &src;
diff --git a/gm/alpha_image.cpp b/gm/alpha_image.cpp
index 8765726..e659c46 100644
--- a/gm/alpha_image.cpp
+++ b/gm/alpha_image.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkColorFilter.h"
-#include "SkImage.h"
-#include "SkMaskFilter.h"
-#include "SkShader.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkShader.h"
 
 static SkBitmap make_alpha_image(int w, int h) {
     SkBitmap bm;
diff --git a/gm/alphagradients.cpp b/gm/alphagradients.cpp
index f739f02..952ef0b 100644
--- a/gm/alphagradients.cpp
+++ b/gm/alphagradients.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkGradientShader.h"
 
 class AlphaGradientsGM : public skiagm::GM {
 public:
diff --git a/gm/analytic_gradients.cpp b/gm/analytic_gradients.cpp
index aeb17f3..0223d75 100644
--- a/gm/analytic_gradients.cpp
+++ b/gm/analytic_gradients.cpp
@@ -34,9 +34,9 @@
  * compared to overall behavior.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 
 // All positions must be divided by the target interval count, which will produce the expected
 // normalized position array for that interval number (assuming an appropriate color count is
diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp
index 0665ddf..0d61498 100644
--- a/gm/androidblendmodes.cpp
+++ b/gm/androidblendmodes.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBitmap.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/animatedGif.cpp b/gm/animatedGif.cpp
index 77ef54b..a598c1f 100644
--- a/gm/animatedGif.cpp
+++ b/gm/animatedGif.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "CommandLineFlags.h"
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkCodec.h"
-#include "SkColor.h"
-#include "SkFont.h"
-#include "SkPaint.h"
-#include "SkString.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/codec/SkCodec.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkString.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
+#include "tools/flags/CommandLineFlags.h"
+#include "tools/timer/AnimTimer.h"
 
 #include <vector>
 
@@ -169,9 +169,9 @@
 DEF_GM(return new AnimatedGifGM);
 
 
-#include "SkAnimCodecPlayer.h"
-#include "SkOSFile.h"
-#include "SkMakeUnique.h"
+#include "include/utils/SkAnimCodecPlayer.h"
+#include "src/core/SkMakeUnique.h"
+#include "src/core/SkOSFile.h"
 
 static std::unique_ptr<SkCodec> load_codec(const char filename[]) {
     return SkCodec::MakeFromData(SkData::MakeFromFileName(filename));
diff --git a/gm/animatedimageblurs.cpp b/gm/animatedimageblurs.cpp
index e08f1d0..a22041b 100644
--- a/gm/animatedimageblurs.cpp
+++ b/gm/animatedimageblurs.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "SkBlurImageFilter.h"
-#include "SkRRect.h"
-#include "SkRandom.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/timer/AnimTimer.h"
 
 static const SkScalar kBlurMax = 7.0f;
 static const int kNumNodes = 30;
diff --git a/gm/anisotropic.cpp b/gm/anisotropic.cpp
index ff88121..6e570c9 100644
--- a/gm/anisotropic.cpp
+++ b/gm/anisotropic.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 namespace skiagm {
 
diff --git a/gm/annotated_text.cpp b/gm/annotated_text.cpp
index c501464..6618972 100644
--- a/gm/annotated_text.cpp
+++ b/gm/annotated_text.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkAnnotation.h"
-#include "SkData.h"
-#include "SkFont.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkAnnotation.h"
+#include "include/core/SkData.h"
+#include "include/core/SkFont.h"
 
 static void draw_url_annotated_text_with_box(
         SkCanvas* canvas, const void* text,
diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp
index 296d98b..511746e 100644
--- a/gm/arcofzorro.cpp
+++ b/gm/arcofzorro.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkRandom.h"
+#include "gm/gm.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/arcto.cpp b/gm/arcto.cpp
index fcbc3d5..e2b8e7a 100644
--- a/gm/arcto.cpp
+++ b/gm/arcto.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkParsePath.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkParsePath.h"
 
 /*
 The arcto test below should draw the same as this SVG:
@@ -103,8 +103,8 @@
     canvas->drawPath(path, paint);
 }
 
-#include "random_parse_path.h"
-#include "SkRandom.h"
+#include "include/utils/SkRandom.h"
+#include "tools/random_parse_path.h"
 
 /* The test below generates a reference image using SVG. To compare the result for correctness,
    enable the define below and then view the generated SVG in a browser.
@@ -112,7 +112,7 @@
 #define GENERATE_SVG_REFERENCE 0
 
 #if GENERATE_SVG_REFERENCE
-#include "SkOSFile.h"
+#include "src/core/SkOSFile.h"
 #endif
 
 enum {
@@ -206,8 +206,8 @@
     canvas->drawPath(p, paint);
 }
 
-#include "SkDashPathEffect.h"
-#include "SkPathMeasure.h"
+#include "include/core/SkPathMeasure.h"
+#include "include/effects/SkDashPathEffect.h"
 
 DEF_SIMPLE_GM(bug583299, canvas, 300, 300) {
   const char* d="M60,60 A50,50 0 0 0 160,60 A50,50 0 0 0 60,60z";
diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp
index 002c629..59d72b8 100644
--- a/gm/arithmode.cpp
+++ b/gm/arithmode.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "SkArithmeticImageFilter.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkFont.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkShader.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkArithmeticImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkImageSource.h"
+#include "tools/ToolUtils.h"
 
 #define WW  100
 #define HH  32
diff --git a/gm/atlastext.cpp b/gm/atlastext.cpp
index 1584ea4..f0171a9 100644
--- a/gm/atlastext.cpp
+++ b/gm/atlastext.cpp
@@ -5,23 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 #if SK_SUPPORT_ATLAS_TEXT
-#include "GrContext.h"
+#include "include/gpu/GrContext.h"
 
-#include "SkAtlasTextContext.h"
-#include "SkAtlasTextFont.h"
-#include "SkAtlasTextTarget.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkFont.h"
-#include "SkTypeface.h"
-#include "SkUTF.h"
-#include "ToolUtils.h"
-#include "gpu/TestContext.h"
-#include "gpu/atlastext/GLTestAtlasTextRenderer.h"
-#include "gpu/atlastext/TestAtlasTextRenderer.h"
+#include "include/atlastext/SkAtlasTextContext.h"
+#include "include/atlastext/SkAtlasTextFont.h"
+#include "include/atlastext/SkAtlasTextTarget.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkTypeface.h"
+#include "src/utils/SkUTF.h"
+#include "tools/ToolUtils.h"
+#include "tools/gpu/TestContext.h"
+#include "tools/gpu/atlastext/GLTestAtlasTextRenderer.h"
+#include "tools/gpu/atlastext/TestAtlasTextRenderer.h"
 
 // GM that draws text using the Atlas Text interface offscreen and then blits that to the canvas.
 
diff --git a/gm/b_119394958.cpp b/gm/b_119394958.cpp
index 9a3f129..ff9b4f7 100644
--- a/gm/b_119394958.cpp
+++ b/gm/b_119394958.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 DEF_SIMPLE_GM(b_119394958, canvas, 100, 100) {
     // The root cause of this bug was that a stroked arc with round caps was batched with a filled
diff --git a/gm/backdrop.cpp b/gm/backdrop.cpp
index 0b248b2..f057962 100644
--- a/gm/backdrop.cpp
+++ b/gm/backdrop.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkLiteDL.h"
-#include "SkLiteRecorder.h"
-#include "SkPictureRecorder.h"
+#include "gm/gm.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkLiteDL.h"
+#include "src/core/SkLiteRecorder.h"
 
 // Make a noisy (with hard-edges) background, so we can see the effect of the blur
 //
diff --git a/gm/badpaint.cpp b/gm/badpaint.cpp
index c0e5317..6f286ba 100644
--- a/gm/badpaint.cpp
+++ b/gm/badpaint.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkShader.h"
 
 /** This GM draws with invalid paints. It should draw nothing other than the background. */
 class BadPaintGM : public skiagm::GM {
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 2e0e52c0..949174e 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -7,23 +7,23 @@
 
 // This test only works with the GPU backend.
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrMemoryPool.h"
-#include "GrOpFlushState.h"
-#include "GrPathUtils.h"
-#include "GrRecordingContext.h"
-#include "GrRecordingContextPriv.h"
-#include "GrRenderTargetContextPriv.h"
-#include "SkColorPriv.h"
-#include "SkGeometry.h"
-#include "SkPoint3.h"
-#include "SkPointPriv.h"
-#include "effects/GrBezierEffect.h"
-#include "ops/GrMeshDrawOp.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkPoint3.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrRecordingContext.h"
+#include "src/core/SkGeometry.h"
+#include "src/core/SkPointPriv.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrMemoryPool.h"
+#include "src/gpu/GrOpFlushState.h"
+#include "src/gpu/GrPathUtils.h"
+#include "src/gpu/GrRecordingContextPriv.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/effects/GrBezierEffect.h"
+#include "src/gpu/ops/GrMeshDrawOp.h"
 
 namespace skiagm {
 
diff --git a/gm/beziers.cpp b/gm/beziers.cpp
index f964217..7733ed5 100644
--- a/gm/beziers.cpp
+++ b/gm/beziers.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
-#include "SkRandom.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
 
 #define W   400
 #define H   400
diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp
index 0a753dd..a78e1a5 100644
--- a/gm/bigblurs.cpp
+++ b/gm/bigblurs.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurMask.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "src/core/SkBlurMask.h"
 
 namespace skiagm {
 
diff --git a/gm/bigmatrix.cpp b/gm/bigmatrix.cpp
index e54e04b..51a0685 100644
--- a/gm/bigmatrix.cpp
+++ b/gm/bigmatrix.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkColorPriv.h"
-#include "SkPath.h"
-#include "SkShader.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkShader.h"
 
 DEF_SIMPLE_GM_BG(bigmatrix, canvas, 50, 50, ToolUtils::color_to_565(0xFF66AA99)) {
     SkMatrix m;
diff --git a/gm/bigrect.cpp b/gm/bigrect.cpp
index d2ba7fe..9508998 100644
--- a/gm/bigrect.cpp
+++ b/gm/bigrect.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 // Draws big rects with clip (0, 0, 35, 35). The size of the rects is given by big.
 static void draw_big_rect(SkCanvas* canvas, SkScalar big, const SkPaint& rectPaint) {
diff --git a/gm/bigrrectaaeffect.cpp b/gm/bigrrectaaeffect.cpp
index 86e3daa..d916b95 100644
--- a/gm/bigrrectaaeffect.cpp
+++ b/gm/bigrrectaaeffect.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "GrCaps.h"
-#include "GrContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "SkRRect.h"
-#include "ToolUtils.h"
-#include "effects/GrRRectEffect.h"
-#include "gm.h"
-#include "ops/GrDrawOp.h"
-#include "ops/GrFillRectOp.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrCaps.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/effects/GrRRectEffect.h"
+#include "src/gpu/ops/GrDrawOp.h"
+#include "src/gpu/ops/GrFillRectOp.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/bigtext.cpp b/gm/bigtext.cpp
index f30c7b9..0468752 100644
--- a/gm/bigtext.cpp
+++ b/gm/bigtext.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkFont.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPath.h"
+#include "tools/ToolUtils.h"
 
 /**
  *  Skia may draw from outlines when the size is very large, so we exercise that
diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp
index 429ef1e..e5fab66 100644
--- a/gm/bigtileimagefilter.cpp
+++ b/gm/bigtileimagefilter.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkImageSource.h"
-#include "SkSurface.h"
-#include "SkTileImageFilter.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkTileImageFilter.h"
 
 static sk_sp<SkImage> create_circle_texture(int size, SkColor color) {
     auto surface(SkSurface::MakeRasterN32Premul(size, size));
diff --git a/gm/bitmapcopy.cpp b/gm/bitmapcopy.cpp
index 9c4fbb7..ecbf4b8 100644
--- a/gm/bitmapcopy.cpp
+++ b/gm/bitmapcopy.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "SkFont.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkFont.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/bitmapfilters.cpp b/gm/bitmapfilters.cpp
index 2ae7fc9..44da77f 100644
--- a/gm/bitmapfilters.cpp
+++ b/gm/bitmapfilters.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
 static void make_bm(SkBitmap* bm) {
     const SkColor colors[4] = {
diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp
index 92883da..08c7fe5 100644
--- a/gm/bitmapimage.cpp
+++ b/gm/bitmapimage.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "Resources.h"
-#include "SkCodec.h"
-#include "SkImage.h"
+#include "gm/gm.h"
+#include "include/codec/SkCodec.h"
+#include "include/core/SkImage.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index a899510..489fed9 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkColorData.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/private/SkColorData.h"
 
 /**
  * This GM checks that bitmap pixels are unpremultiplied before being exported
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index 67fdd53..b23b02d 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkGraphics.h"
-#include "SkPath.h"
-#include "SkRegion.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRegion.h"
+#include "include/core/SkShader.h"
+#include "include/effects/SkGradientShader.h"
 
 static void make_bitmap(SkBitmap* bitmap) {
     bitmap->allocN32Pixels(64, 64);
diff --git a/gm/bitmaprecttest.cpp b/gm/bitmaprecttest.cpp
index b83279b..9cfac7d 100644
--- a/gm/bitmaprecttest.cpp
+++ b/gm/bitmaprecttest.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 static void make_bm(SkBitmap* bm) {
     bm->allocN32Pixels(60, 60);
diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp
index 7143160..45e5b26 100644
--- a/gm/bitmapshader.cpp
+++ b/gm/bitmapshader.cpp
@@ -4,15 +4,15 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkBitmap.h"
-#include "SkPaint.h"
-#include "SkShader.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkShader.h"
 
-#include "GrCaps.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrCaps.h"
+#include "src/gpu/GrContextPriv.h"
 
 namespace skiagm {
 
diff --git a/gm/bitmaptiled.cpp b/gm/bitmaptiled.cpp
index 053a0b1..e2a09ad 100644
--- a/gm/bitmaptiled.cpp
+++ b/gm/bitmaptiled.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
+#include "include/gpu/GrContext.h"
 
 // This test exercises Ganesh's drawing of tiled bitmaps. In particular, that the offsets and the
 // extents of the tiles don't causes gaps between tiles.
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index 485a3d8..84ab8fc 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkMaskFilter.h"
-#include "SkTDArray.h"
-#include "SkUTF.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTDArray.h"
+#include "src/core/SkBlurMask.h"
+#include "src/utils/SkUTF.h"
+#include "tools/ToolUtils.h"
 
-#include "GrContext.h"
-#include "GrContextOptions.h"
-#include "SkGr.h"
+#include "include/gpu/GrContext.h"
+#include "include/gpu/GrContextOptions.h"
+#include "src/gpu/SkGr.h"
 
 /** Holds either a bitmap or image to be rendered and a rect that indicates what part of the bitmap
     or image should be tested by the GM. The area outside of the rect is present to check
@@ -444,7 +444,7 @@
 DEF_GM( return new BleedGM(kUseAlphaImageShader_BleedTest); )
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-#include "SkSurface.h"
+#include "include/core/SkSurface.h"
 
 // Construct an image and return the inner "src" rect. Build the image such that the interior is
 // blue, with a margin of blue (2px) but then an outer margin of red.
diff --git a/gm/blend.cpp b/gm/blend.cpp
index aaaeeeb..20583b7 100644
--- a/gm/blend.cpp
+++ b/gm/blend.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
 DEF_SIMPLE_GM(blend, canvas, 300, 100) {
     SkPaint p;
diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp
index e0978c0..748d8c0 100644
--- a/gm/blurcircles.cpp
+++ b/gm/blurcircles.cpp
@@ -5,12 +5,12 @@
 * found in the LICENSE file.
 */
 
-#include "gm.h"
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
-#include "SkPaint.h"
-#include "SkString.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkString.h"
+#include "src/core/SkBlurMask.h"
 
 class BlurCirclesGM : public skiagm::GM {
 public:
diff --git a/gm/blurcircles2.cpp b/gm/blurcircles2.cpp
index b28c932..18d4de2 100644
--- a/gm/blurcircles2.cpp
+++ b/gm/blurcircles2.cpp
@@ -5,15 +5,15 @@
 * found in the LICENSE file.
 */
 
-#include "AnimTimer.h"
-#include "SkBlurMask.h"
-#include "SkBlurMaskFilter.h"
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkString.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkString.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkBlurMask.h"
+#include "tools/timer/AnimTimer.h"
 
 /**
  * In GM mode this draws an array of circles with different radii and different blur radii. Below
diff --git a/gm/blurignorexform.cpp b/gm/blurignorexform.cpp
index 9a68daf..6fd957b 100644
--- a/gm/blurignorexform.cpp
+++ b/gm/blurignorexform.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
-#include "SkPaint.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPaint.h"
+#include "src/core/SkBlurMask.h"
 
 // This GM tests out the SkBlurMaskFilter's kIgnoreTransform flag. That flag causes the blur mask
 // filter to not apply the CTM to the blur's radius.
diff --git a/gm/blurimagevmask.cpp b/gm/blurimagevmask.cpp
index 78524ca..046fa78 100644
--- a/gm/blurimagevmask.cpp
+++ b/gm/blurimagevmask.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkMaskFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "tools/ToolUtils.h"
 
 DEF_SIMPLE_GM(blurimagevmask, canvas, 700, 1200) {
     SkPaint paint;
@@ -50,7 +50,7 @@
 
 }
 
-#include "Resources.h"
+#include "tools/Resources.h"
 DEF_SIMPLE_GM_CAN_FAIL(blur_image, canvas, errorMsg, 500, 500) {
     auto image = GetResourceAsImage("images/mandrill_128.png");
     if (!image) {
diff --git a/gm/blurpositioning.cpp b/gm/blurpositioning.cpp
index 23bacdc..1e3c592 100644
--- a/gm/blurpositioning.cpp
+++ b/gm/blurpositioning.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurImageFilter.h"
+#include "gm/gm.h"
+#include "include/effects/SkBlurImageFilter.h"
 
 // For all sigma, the black box should be centered in the red outline. For small sigma,
 // the rectangle is not blurred, but still must be centered properly.
diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp
index 237c678..5a1de35 100644
--- a/gm/blurquickreject.cpp
+++ b/gm/blurquickreject.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "src/core/SkBlurMask.h"
 
 // This GM tests out the quick reject bounds of the blur mask filter. It draws
 // four blurred rects around a central clip. The blurred rect geometry outset
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp
index 2000f08..111c420 100644
--- a/gm/blurrect.cpp
+++ b/gm/blurrect.cpp
@@ -5,12 +5,12 @@
 * found in the LICENSE file.
 */
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
-#include "SkTo.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "include/private/SkTo.h"
+#include "src/core/SkBlurMask.h"
 
 #define STROKE_WIDTH    SkIntToScalar(10)
 
@@ -54,7 +54,7 @@
     canvas->drawPath(path, p);
 }
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 
 /*
  * Spits out a dummy gradient to test blur with shader on paint
diff --git a/gm/blurredclippedcircle.cpp b/gm/blurredclippedcircle.cpp
index 318e4a9..fe81e06 100644
--- a/gm/blurredclippedcircle.cpp
+++ b/gm/blurredclippedcircle.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkClipOpPriv.h"
-#include "SkColorFilter.h"
-#include "SkMaskFilter.h"
-#include "SkPaint.h"
-#include "SkRRect.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRRect.h"
+#include "src/core/SkClipOpPriv.h"
 
 namespace skiagm {
 
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp
index 05db485..450fdf6 100644
--- a/gm/blurroundrect.cpp
+++ b/gm/blurroundrect.cpp
@@ -5,18 +5,18 @@
 * found in the LICENSE file.
 */
 
-#include "gm.h"
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkLayerDrawLooper.h"
-#include "SkMaskFilter.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPoint.h"
-#include "SkRect.h"
-#include "SkRRect.h"
-#include "SkString.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkString.h"
+#include "include/effects/SkLayerDrawLooper.h"
+#include "src/core/SkBlurMask.h"
 
 // This GM mimics a blurred RR seen in the wild.
 class BlurRoundRectGM : public skiagm::GM {
@@ -82,7 +82,7 @@
     typedef skiagm::GM INHERITED;
 };
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 /*
  * Spits out a dummy gradient to test blur with shader on paint
  */
diff --git a/gm/blurs.cpp b/gm/blurs.cpp
index 23ef092..3ba6e4c 100644
--- a/gm/blurs.cpp
+++ b/gm/blurs.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkBlurMask.h"
-#include "SkImage.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "src/core/SkBlurMask.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 DEF_SIMPLE_GM_BG(blurs, canvas, 700, 500, 0xFFDDDDDD) {
     SkBlurStyle NONE = SkBlurStyle(-999);
diff --git a/gm/blurtextsmallradii.cpp b/gm/blurtextsmallradii.cpp
index e1e7aa1..7904cb3 100644
--- a/gm/blurtextsmallradii.cpp
+++ b/gm/blurtextsmallradii.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColor.h"
-#include "SkFont.h"
-#include "SkMaskFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkMaskFilter.h"
 
 // GM to check the behavior from chrome bug:745290
 DEF_SIMPLE_GM(blurSmallRadii, canvas, 100, 100) {
diff --git a/gm/bmpfilterqualityrepeat.cpp b/gm/bmpfilterqualityrepeat.cpp
index 611420c..77c2499 100644
--- a/gm/bmpfilterqualityrepeat.cpp
+++ b/gm/bmpfilterqualityrepeat.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkShader.h"
+#include "include/core/SkShader.h"
 
 // Inspired by svg/as-border-image/svg-as-border-image.html. Draws a four-color checker board bitmap
 // such that it is stretched and repeat tiled with different filter qualities. It is testing whether
diff --git a/gm/bug5252.cpp b/gm/bug5252.cpp
index 981aab5..a7fa02f 100644
--- a/gm/bug5252.cpp
+++ b/gm/bug5252.cpp
@@ -5,10 +5,10 @@
 * found in the LICENSE file.
 */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkRect.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
 
 DEF_SIMPLE_GM(bug5252, canvas, 500, 500) {
 	canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
diff --git a/gm/bug530095.cpp b/gm/bug530095.cpp
index fa88c01..f10e0bb 100644
--- a/gm/bug530095.cpp
+++ b/gm/bug530095.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
-#include "SkDashPathEffect.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkDashPathEffect.h"
 
 DEF_SIMPLE_GM(bug530095, canvas, 900, 1200) {
     SkPath path1, path2;
diff --git a/gm/bug615686.cpp b/gm/bug615686.cpp
index bd78b1a..35b2e2c 100644
--- a/gm/bug615686.cpp
+++ b/gm/bug615686.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM(bug615686, canvas, 250, 250) {
     SkPaint p;
diff --git a/gm/bug6643.cpp b/gm/bug6643.cpp
index c30d898..60a0bfe 100644
--- a/gm/bug6643.cpp
+++ b/gm/bug6643.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "SkGradientShader.h"
-#include "SkPictureRecorder.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/effects/SkGradientShader.h"
 
 DEF_SIMPLE_GM(bug6643, canvas, 200, 200) {
     SkColor colors[] = { SK_ColorTRANSPARENT, SK_ColorGREEN, SK_ColorTRANSPARENT };
diff --git a/gm/bug6783.cpp b/gm/bug6783.cpp
index ba8b77b..3d2541b 100644
--- a/gm/bug6783.cpp
+++ b/gm/bug6783.cpp
@@ -5,8 +5,8 @@
 * found in the LICENSE file.
 */
 
-#include "gm.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
 
 // This GM reproduces skia:6783, which demonstrated a bug in repeat and mirror
 // image sampling tiling modes as implemented in software.  We want to tile to
diff --git a/gm/cgm.c b/gm/cgm.c
index e9d2946..9448125 100644
--- a/gm/cgm.c
+++ b/gm/cgm.c
@@ -8,13 +8,13 @@
 // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL
 // DO NOT USE -- FOR INTERNAL TESTING ONLY
 
-#include "sk_canvas.h"
-#include "sk_data.h"
-#include "sk_image.h"
-#include "sk_imageinfo.h"
-#include "sk_paint.h"
-#include "sk_shader.h"
-#include "sk_surface.h"
+#include "include/c/sk_canvas.h"
+#include "include/c/sk_data.h"
+#include "include/c/sk_image.h"
+#include "include/c/sk_imageinfo.h"
+#include "include/c/sk_paint.h"
+#include "include/c/sk_shader.h"
+#include "include/c/sk_surface.h"
 
 extern void sk_test_c_api(sk_canvas_t*);
 
diff --git a/gm/cgms.cpp b/gm/cgms.cpp
index 832a7b5..44ab443 100644
--- a/gm/cgms.cpp
+++ b/gm/cgms.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "sk_types.h"
+#include "gm/gm.h"
+#include "include/c/sk_types.h"
 
 extern "C" void sk_test_c_api(sk_canvas_t*);
 
diff --git a/gm/circle_sizes.cpp b/gm/circle_sizes.cpp
index 8ed95dd..99eb110 100644
--- a/gm/circle_sizes.cpp
+++ b/gm/circle_sizes.cpp
@@ -4,7 +4,7 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
+#include "gm/gm.h"
 // https://crbug.com/772953
 DEF_SIMPLE_GM(circle_sizes, canvas, 128, 128) {
     SkPaint p;
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 01bf851..e8f8a1c 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -4,15 +4,15 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkBlurDrawLooper.h"
-#include "SkBlurMask.h"
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "SkMaskFilter.h"
-#include "SkMatrix.h"
-#include "SkRandom.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkMatrix.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTArray.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkBlurMask.h"
 
 namespace skiagm {
 
diff --git a/gm/circulararcs.cpp b/gm/circulararcs.cpp
index 778193f..31e53e7 100644
--- a/gm/circulararcs.cpp
+++ b/gm/circulararcs.cpp
@@ -6,9 +6,9 @@
  */
 
 #include <functional>
-#include "SkCanvas.h"
-#include "SkDashPathEffect.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkDashPathEffect.h"
 
 constexpr SkScalar kStarts[] = {0.f, 10.f, 30.f, 45.f, 90.f, 165.f, 180.f, 270.f};
 constexpr SkScalar kSweeps[] = {1.f, 45.f, 90.f, 130.f, 180.f, 184.f, 300.f, 355.f};
diff --git a/gm/circularclips.cpp b/gm/circularclips.cpp
index 9374f6f..1a5bffc 100644
--- a/gm/circularclips.cpp
+++ b/gm/circularclips.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 class CircularClipsGM : public skiagm::GM {
     SkScalar fX1, fX2, fY, fR;
diff --git a/gm/clip_error.cpp b/gm/clip_error.cpp
index 43c00ec..b35d207 100644
--- a/gm/clip_error.cpp
+++ b/gm/clip_error.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
-#include "SkTextBlob.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkTextBlob.h"
+#include "src/core/SkBlurMask.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 800
 #define HEIGHT 800
diff --git a/gm/clip_strokerect.cpp b/gm/clip_strokerect.cpp
index 34adf8a..dfe435d 100644
--- a/gm/clip_strokerect.cpp
+++ b/gm/clip_strokerect.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 class ClipStrokeRectGM : public skiagm::GM {
 public:
diff --git a/gm/clipdrawdraw.cpp b/gm/clipdrawdraw.cpp
index 38c3c4a..d230f3f 100644
--- a/gm/clipdrawdraw.cpp
+++ b/gm/clipdrawdraw.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkRegion.h"
+#include "gm/gm.h"
+#include "include/core/SkRegion.h"
 
 // This GM exercises the use case found in crbug.com/423834.
 // The following pattern:
diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp
index 88499b1..cdb5f49 100644
--- a/gm/clippedbitmapshaders.cpp
+++ b/gm/clippedbitmapshaders.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkColor.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkShader.h"
 
 namespace skiagm {
 
diff --git a/gm/clockwise.cpp b/gm/clockwise.cpp
index 7ad9fee..016e45b 100644
--- a/gm/clockwise.cpp
+++ b/gm/clockwise.cpp
@@ -5,23 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrClip.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrGpuCommandBuffer.h"
-#include "GrMemoryPool.h"
-#include "GrOpFlushState.h"
-#include "GrRecordingContext.h"
-#include "GrRecordingContextPriv.h"
-#include "GrRenderTargetContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "GrRenderTarget.h"
-#include "glsl/GrGLSLFragmentShaderBuilder.h"
-#include "glsl/GrGLSLGeometryProcessor.h"
-#include "glsl/GrGLSLVarying.h"
-#include "glsl/GrGLSLVertexGeoBuilder.h"
+#include "include/gpu/GrContext.h"
+#include "include/gpu/GrRenderTarget.h"
+#include "include/private/GrRecordingContext.h"
+#include "src/gpu/GrClip.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrGpuCommandBuffer.h"
+#include "src/gpu/GrMemoryPool.h"
+#include "src/gpu/GrOpFlushState.h"
+#include "src/gpu/GrRecordingContextPriv.h"
+#include "src/gpu/GrRenderTargetContext.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h"
+#include "src/gpu/glsl/GrGLSLGeometryProcessor.h"
+#include "src/gpu/glsl/GrGLSLVarying.h"
+#include "src/gpu/glsl/GrGLSLVertexGeoBuilder.h"
 
 namespace skiagm {
 
diff --git a/gm/color4f.cpp b/gm/color4f.cpp
index 1d55618..2a35fbb 100644
--- a/gm/color4f.cpp
+++ b/gm/color4f.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
 
-#include "SkColorMatrixFilter.h"
-#include "SkGradientShader.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkGradientShader.h"
 
 static sk_sp<SkShader> make_opaque_color() {
     return SkShaders::Color(0xFFFF0000);
@@ -88,7 +88,7 @@
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-#include "SkColorSpace.h"
+#include "include/core/SkColorSpace.h"
 
 DEF_SIMPLE_GM(color4shader, canvas, 360, 480) {
     canvas->translate(10, 10);
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index b34af0f..c02c9a6 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkBlurImageFilter.h"
-#include "SkCanvas.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkFont.h"
-#include "SkFontMetrics.h"
-#include "SkGradientShader.h"
-#include "SkStream.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkFontMetrics.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
 
 /*
  * Spits out a dummy gradient to test blur with shader on paint
diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp
index dccf55a..791c493 100644
--- a/gm/coloremoji_blendmodes.cpp
+++ b/gm/coloremoji_blendmodes.cpp
@@ -5,27 +5,27 @@
  * found in the LICENSE file.
  */
 
-#include "SkBitmap.h"
-#include "SkBlendMode.h"
-#include "SkCanvas.h"
-#include "SkColor.h"
-#include "SkFontStyle.h"
-#include "SkGradientShader.h"
-#include "SkImageInfo.h"
-#include "SkMatrix.h"
-#include "SkPaint.h"
-#include "SkRect.h"
-#include "SkRefCnt.h"
-#include "SkScalar.h"
-#include "SkShader.h"
-#include "SkSize.h"
-#include "SkString.h"
-#include "SkTextUtils.h"
-#include "SkTypeface.h"
-#include "SkTypes.h"
-#include "SkUTF.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkFontStyle.h"
+#include "include/core/SkImageInfo.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTypeface.h"
+#include "include/core/SkTypes.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/utils/SkUTF.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/colorfilteralpha8.cpp b/gm/colorfilteralpha8.cpp
index 37f2a91..4c116d5 100644
--- a/gm/colorfilteralpha8.cpp
+++ b/gm/colorfilteralpha8.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBitmap.h"
-#include "SkColorFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkColorFilter.h"
 
 class ColorFilterAlpha8 : public skiagm::GM {
 public:
diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp
index dca6486..38797a0 100644
--- a/gm/colorfilterimagefilter.cpp
+++ b/gm/colorfilterimagefilter.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorMatrixFilter.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
+#include "include/effects/SkColorMatrixFilter.h"
 
-#include "SkBlurImageFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkTDArray.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/private/SkTDArray.h"
 
 #define FILTER_WIDTH    SkIntToScalar(30)
 #define FILTER_HEIGHT   SkIntToScalar(30)
@@ -51,9 +51,9 @@
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "Resources.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
 
 static sk_sp<SkShader> sh_make_lineargradient0() {
     const SkPoint pts[] = { { 0, 0 }, { 100, 100 } };
@@ -187,7 +187,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 
 template <typename T> class SkTRefArray : public SkTDArray<T> {
 public:
diff --git a/gm/colorfilters.cpp b/gm/colorfilters.cpp
index b0d529a..82caff5 100644
--- a/gm/colorfilters.cpp
+++ b/gm/colorfilters.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorMatrixFilter.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkGradientShader.h"
 
 static sk_sp<SkShader> make_shader(const SkRect& bounds) {
     const SkPoint pts[] = {
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index 0fafdfe..21c14ca 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColorMatrixFilter.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkGradientShader.h"
 
 #define WIDTH 500
 #define HEIGHT 500
diff --git a/gm/colorwheel.cpp b/gm/colorwheel.cpp
index 2f2d1a3..688251f 100644
--- a/gm/colorwheel.cpp
+++ b/gm/colorwheel.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkData.h"
-#include "SkImage.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkData.h"
+#include "include/core/SkImage.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 static void draw_image(SkCanvas* canvas, const char* resource, int x, int y) {
     sk_sp<SkImage> image(GetResourceAsImage(resource));
diff --git a/gm/complexclip.cpp b/gm/complexclip.cpp
index c0a64c9..b3c4dc7 100644
--- a/gm/complexclip.cpp
+++ b/gm/complexclip.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkFont.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPath.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index 71e07c9..c119341 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -6,12 +6,12 @@
  */
 
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkRect.h"
-#include "SkRRect.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkRect.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/complexclip3.cpp b/gm/complexclip3.cpp
index b2b2a57..531f8d3 100644
--- a/gm/complexclip3.cpp
+++ b/gm/complexclip3.cpp
@@ -4,10 +4,10 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "tools/ToolUtils.h"
 
 #include <utility>
 
diff --git a/gm/complexclip4.cpp b/gm/complexclip4.cpp
index 2765ceb..f8d324a 100644
--- a/gm/complexclip4.cpp
+++ b/gm/complexclip4.cpp
@@ -4,10 +4,10 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkClipOpPriv.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "src/core/SkClipOpPriv.h"
 
 namespace skiagm {
 
diff --git a/gm/complexclip_blur_tiled.cpp b/gm/complexclip_blur_tiled.cpp
index f69c40d..8abb87d 100644
--- a/gm/complexclip_blur_tiled.cpp
+++ b/gm/complexclip_blur_tiled.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkClipOpPriv.h"
-#include "SkRRect.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "src/core/SkClipOpPriv.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 512
 #define HEIGHT 512
diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp
index 46e3e4d..96843e8 100644
--- a/gm/composeshader.cpp
+++ b/gm/composeshader.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkColorPriv.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkGraphics.h"
-#include "SkImage.h"
-#include "SkShader.h"
-#include "SkString.h"
-#include "SkTDArray.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkString.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTDArray.h"
 
 static sk_sp<SkShader> make_shader(SkBlendMode mode) {
     SkPoint pts[2];
diff --git a/gm/compositor_quads.cpp b/gm/compositor_quads.cpp
index 3cd0cad..db2202e 100644
--- a/gm/compositor_quads.cpp
+++ b/gm/compositor_quads.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 #if SK_SUPPORT_GPU
 
-#include "Resources.h"
-#include "SkColorMatrixFilter.h"
-#include "SkFont.h"
-#include "SkGradientShader.h"
-#include "SkLineClipper.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkPaintFilterCanvas.h"
-#include "SkShaderMaskFilter.h"
-#include "YUVUtils.h"
+#include "include/core/SkFont.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkShaderMaskFilter.h"
+#include "include/utils/SkPaintFilterCanvas.h"
+#include "src/core/SkLineClipper.h"
+#include "tools/Resources.h"
+#include "tools/gpu/YUVUtils.h"
 
 #include <array>
 
diff --git a/gm/concavepaths.cpp b/gm/concavepaths.cpp
index adbc2c4..d0c3824 100644
--- a/gm/concavepaths.cpp
+++ b/gm/concavepaths.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 namespace {
 // Concave test
diff --git a/gm/conicpaths.cpp b/gm/conicpaths.cpp
index 3f03bf0..c8c621c 100644
--- a/gm/conicpaths.cpp
+++ b/gm/conicpaths.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/private/SkTArray.h"
 
 class ConicPathsGM : public skiagm::GM {
 protected:
diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp
index 0b572f1..ec0c7da 100644
--- a/gm/constcolorprocessor.cpp
+++ b/gm/constcolorprocessor.cpp
@@ -7,16 +7,16 @@
 
 // This test only works with the GPU backend.
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "GrContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "SkGr.h"
-#include "SkGradientShader.h"
-#include "effects/generated/GrConstColorProcessor.h"
-#include "ops/GrDrawOp.h"
-#include "ops/GrFillRectOp.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/SkGr.h"
+#include "src/gpu/effects/generated/GrConstColorProcessor.h"
+#include "src/gpu/ops/GrDrawOp.h"
+#include "src/gpu/ops/GrFillRectOp.h"
 
 namespace skiagm {
 /**
diff --git a/gm/convex_all_line_paths.cpp b/gm/convex_all_line_paths.cpp
index 38ee7b3..1f84c8f 100644
--- a/gm/convex_all_line_paths.cpp
+++ b/gm/convex_all_line_paths.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPolyUtils.h"
-#include "SkPathPriv.h"
+#include "gm/gm.h"
+#include "src/core/SkPathPriv.h"
+#include "src/utils/SkPolyUtils.h"
 
 static void create_ngon(int n, SkPoint* pts, SkScalar width, SkScalar height) {
     float angleStep = 360.0f / n, angle = 0.0f;
diff --git a/gm/convexpaths.cpp b/gm/convexpaths.cpp
index ea0f690..b60e356 100644
--- a/gm/convexpaths.cpp
+++ b/gm/convexpaths.cpp
@@ -4,10 +4,10 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/private/SkTArray.h"
+#include "include/utils/SkRandom.h"
 
 class SkDoOnce : SkNoncopyable {
 public:
diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp
index d531b66..201943f 100644
--- a/gm/convexpolyclip.cpp
+++ b/gm/convexpolyclip.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBitmap.h"
-#include "SkFont.h"
-#include "SkGradientShader.h"
-#include "SkPath.h"
-#include "SkTLList.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkTLList.h"
 
 static SkBitmap make_bmp(int w, int h) {
     SkBitmap bmp;
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 996a024..2526220 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -7,22 +7,22 @@
 
 // This test only works with the GPU backend.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
-#include "GrDefaultGeoProcFactory.h"
-#include "GrMemoryPool.h"
-#include "GrOpFlushState.h"
-#include "GrPathUtils.h"
-#include "GrRecordingContext.h"
-#include "GrRecordingContextPriv.h"
-#include "GrRenderTargetContextPriv.h"
-#include "SkColorPriv.h"
-#include "SkGeometry.h"
-#include "SkPointPriv.h"
-#include "SkTLList.h"
-#include "effects/GrConvexPolyEffect.h"
-#include "ops/GrMeshDrawOp.h"
+#include "include/core/SkColorPriv.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrRecordingContext.h"
+#include "src/core/SkGeometry.h"
+#include "src/core/SkPointPriv.h"
+#include "src/core/SkTLList.h"
+#include "src/gpu/GrDefaultGeoProcFactory.h"
+#include "src/gpu/GrMemoryPool.h"
+#include "src/gpu/GrOpFlushState.h"
+#include "src/gpu/GrPathUtils.h"
+#include "src/gpu/GrRecordingContextPriv.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/effects/GrConvexPolyEffect.h"
+#include "src/gpu/ops/GrMeshDrawOp.h"
 
 /** outset rendered rect to visualize anti-aliased poly edges */
 static SkRect outset(const SkRect& unsorted) {
diff --git a/gm/copyTo4444.cpp b/gm/copyTo4444.cpp
index 0f4a276..60c7b01 100644
--- a/gm/copyTo4444.cpp
+++ b/gm/copyTo4444.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkOSFile.h"
+#include "include/core/SkCanvas.h"
+#include "src/core/SkOSFile.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/crbug_691386.cpp b/gm/crbug_691386.cpp
index de7cfe6..a8c6189 100644
--- a/gm/crbug_691386.cpp
+++ b/gm/crbug_691386.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkParsePath.h"
+#include "gm/gm.h"
+#include "include/utils/SkParsePath.h"
 
 DEF_SIMPLE_GM_CAN_FAIL(crbug_691386, canvas, errorMsg, 256, 256) {
     SkPath path;
diff --git a/gm/crbug_788500.cpp b/gm/crbug_788500.cpp
index ba14673..9a35bfc 100644
--- a/gm/crbug_788500.cpp
+++ b/gm/crbug_788500.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM(crbug_788500, canvas, 300, 300) {
     SkPath path;
diff --git a/gm/crbug_847759.cpp b/gm/crbug_847759.cpp
index 855155e..2478028 100644
--- a/gm/crbug_847759.cpp
+++ b/gm/crbug_847759.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM(crbug_847759, canvas, 500, 500) {
     // This path exposed an issue in GrAAHairlinePathRenderer. When converting from cubics to quads
diff --git a/gm/crbug_884166.cpp b/gm/crbug_884166.cpp
index 409fb9a..618c641 100644
--- a/gm/crbug_884166.cpp
+++ b/gm/crbug_884166.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM(crbug_884166, canvas, 300, 300) {
     SkPaint paint;
diff --git a/gm/crbug_887103.cpp b/gm/crbug_887103.cpp
index 2e5223f..994b0a8 100644
--- a/gm/crbug_887103.cpp
+++ b/gm/crbug_887103.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM(crbug_887103, canvas, 520, 520) {
     SkPaint paint;
diff --git a/gm/crbug_892988.cpp b/gm/crbug_892988.cpp
index afe9a42..7466625 100644
--- a/gm/crbug_892988.cpp
+++ b/gm/crbug_892988.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPaint.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
 
 // The root cause of this bug was that when dual source blending was not supported and we made a
 // copy of the destination to perform blending we would clip the copy bounds to the current clip.
diff --git a/gm/crbug_899512.cpp b/gm/crbug_899512.cpp
index 6498726..d3adea9 100644
--- a/gm/crbug_899512.cpp
+++ b/gm/crbug_899512.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMaskFilter.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkLayerDrawLooper.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/effects/SkLayerDrawLooper.h"
 
 DEF_SIMPLE_GM(crbug_899512, canvas, 520, 520) {
     // comment this line below to solve the problem
diff --git a/gm/crbug_905548.cpp b/gm/crbug_905548.cpp
index da56213..64a9f33 100644
--- a/gm/crbug_905548.cpp
+++ b/gm/crbug_905548.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkArithmeticImageFilter.h"
-#include "SkBlurImageFilter.h"
-#include "SkImageSource.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkSurface.h"
-#include "SkXfermodeImageFilter.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkArithmeticImageFilter.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkXfermodeImageFilter.h"
 
 DEF_SIMPLE_GM(crbug_905548, canvas, 100, 200) {
     auto surface = canvas->makeSurface(SkImageInfo::MakeN32Premul(100, 100));
diff --git a/gm/crbug_918512.cpp b/gm/crbug_918512.cpp
index cb91a00..64fc724 100644
--- a/gm/crbug_918512.cpp
+++ b/gm/crbug_918512.cpp
@@ -1,9 +1,9 @@
 // Copyright 2019 Google LLC.
 // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkLumaColorFilter.h"
+#include "include/effects/SkLumaColorFilter.h"
 
 // PDF backend should produce correct results.
 DEF_SIMPLE_GM(crbug_918512, canvas, 256, 256) {
diff --git a/gm/crbug_938592.cpp b/gm/crbug_938592.cpp
index 0284cd9..854f985 100644
--- a/gm/crbug_938592.cpp
+++ b/gm/crbug_938592.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkPaint.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/effects/SkGradientShader.h"
 
 // This draws a hard stop gradient applied to a rectangle. The hard stops fall at half pixel
 // boundaries in y. On some GPUs we've found that the winding of the two triangles that make up the
diff --git a/gm/crbug_946965.cpp b/gm/crbug_946965.cpp
index 9a36d9f..9947e42 100644
--- a/gm/crbug_946965.cpp
+++ b/gm/crbug_946965.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRRect.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
 
 // Exposed a bug in ellipse rendering where the radii were wrong under 90 degree rotation.
 DEF_SIMPLE_GM(crbug_946965, canvas, 75, 150) {
diff --git a/gm/crbug_947055.cpp b/gm/crbug_947055.cpp
index 20744e2..180e606 100644
--- a/gm/crbug_947055.cpp
+++ b/gm/crbug_947055.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM_BG(crbug_947055, canvas, 200, 50, SK_ColorBLUE) {
     // Green 2D rectangle to highlight the red rectangle. Isn't necessary
diff --git a/gm/croppedrects.cpp b/gm/croppedrects.cpp
index d6002d3..8135fdb 100644
--- a/gm/croppedrects.cpp
+++ b/gm/croppedrects.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkRRect.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkSurface.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/crosscontextimage.cpp b/gm/crosscontextimage.cpp
index 3515891..e1fe4ba 100644
--- a/gm/crosscontextimage.cpp
+++ b/gm/crosscontextimage.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "Resources.h"
+#include "gm/gm.h"
+#include "tools/Resources.h"
 
-#include "GrContext.h"
-#include "SkImage.h"
+#include "include/core/SkImage.h"
+#include "include/gpu/GrContext.h"
 
 DEF_SIMPLE_GPU_GM_CAN_FAIL(cross_context_image, context, rtc, canvas, errorMsg,
                            5 * 256 + 60, 256 + 128 + 30) {
diff --git a/gm/cubicpaths.cpp b/gm/cubicpaths.cpp
index d4bf225..9bee582 100644
--- a/gm/cubicpaths.cpp
+++ b/gm/cubicpaths.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 // https://bug.skia.org/1316 shows that this cubic, when slightly clipped, creates big
 // (incorrect) changes to its control points.
diff --git a/gm/daa.cpp b/gm/daa.cpp
index 6338a48..4ef78e8 100644
--- a/gm/daa.cpp
+++ b/gm/daa.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkFont.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPath.h"
 
 // This GM shows off a flaw in delta-based rasterizers (DAA, CCPR, etc.).
 // See also the bottom of dashing4 and skia:6886.
diff --git a/gm/dashcircle.cpp b/gm/dashcircle.cpp
index f92404f..57adf3f 100644
--- a/gm/dashcircle.cpp
+++ b/gm/dashcircle.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "SkDashPathEffect.h"
-#include "SkPath.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "tools/timer/AnimTimer.h"
 
 int dash1[] = { 1, 1 };
 int dash2[] = { 1, 3 };
diff --git a/gm/dashcubics.cpp b/gm/dashcubics.cpp
index 0e24cf9..676b5a3 100644
--- a/gm/dashcubics.cpp
+++ b/gm/dashcubics.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "SkCanvas.h"
-#include "SkDashPathEffect.h"
-#include "SkParsePath.h"
-#include "SkPath.h"
-#include "SkTArray.h"
-#include "SkTrimPathEffect.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "include/effects/SkTrimPathEffect.h"
+#include "include/private/SkTArray.h"
+#include "include/utils/SkParsePath.h"
+#include "tools/timer/AnimTimer.h"
 
 #include <utility>
 
diff --git a/gm/dashing.cpp b/gm/dashing.cpp
index bcfa1cc..068afa1 100644
--- a/gm/dashing.cpp
+++ b/gm/dashing.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkDashPathEffect.h"
-#include "SkPaint.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "tools/ToolUtils.h"
 
 static void drawline(SkCanvas* canvas, int on, int off, const SkPaint& paint,
                      SkScalar finalX = SkIntToScalar(600), SkScalar finalY = SkIntToScalar(0),
diff --git a/gm/degeneratesegments.cpp b/gm/degeneratesegments.cpp
index 17de581..c3fa952 100644
--- a/gm/degeneratesegments.cpp
+++ b/gm/degeneratesegments.cpp
@@ -4,12 +4,12 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index 37f8b84..486ba99 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkFont.h"
-#include "SkStream.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "SkTo.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/private/SkTo.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 class DFTextGM : public skiagm::GM {
 public:
diff --git a/gm/dftext_blob_persp.cpp b/gm/dftext_blob_persp.cpp
index 70111e4..64d6042 100644
--- a/gm/dftext_blob_persp.cpp
+++ b/gm/dftext_blob_persp.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 /**
  * This GM tests reusing the same text blobs with distance fields rendering using various
diff --git a/gm/discard.cpp b/gm/discard.cpp
index 12d4ee0..d2c0e28 100644
--- a/gm/discard.cpp
+++ b/gm/discard.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkRandom.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkSurface.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 83a5085..624041a 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkDisplacementMapEffect.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkDisplacementMapEffect.h"
+#include "include/effects/SkImageSource.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/distantclip.cpp b/gm/distantclip.cpp
index eb963f8..d650415 100644
--- a/gm/distantclip.cpp
+++ b/gm/distantclip.cpp
@@ -6,11 +6,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
 
 namespace skiagm {
 
diff --git a/gm/downsamplebitmap.cpp b/gm/downsamplebitmap.cpp
index e0dde1b..f578310 100644
--- a/gm/downsamplebitmap.cpp
+++ b/gm/downsamplebitmap.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 static const char* kFilterQualityNames[] = { "none", "low", "medium", "high" };
 
diff --git a/gm/draw_bitmap_rect_skbug4374.cpp b/gm/draw_bitmap_rect_skbug4374.cpp
index bf26049..2e09a3a 100644
--- a/gm/draw_bitmap_rect_skbug4374.cpp
+++ b/gm/draw_bitmap_rect_skbug4374.cpp
@@ -4,8 +4,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "Resources.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/Resources.h"
 // https://bug.skia.org/4374
 DEF_SIMPLE_GM(draw_bitmap_rect_skbug4734, canvas, 64, 64) {
     SkBitmap source;
diff --git a/gm/drawable.cpp b/gm/drawable.cpp
index 9428e32..2ef2abf 100644
--- a/gm/drawable.cpp
+++ b/gm/drawable.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkDrawable.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkDrawable.h"
+#include "include/core/SkPath.h"
 
 struct MyDrawable : public SkDrawable {
     SkRect onGetBounds() override { return SkRect::MakeWH(50, 100);  }
diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp
index 5dafab4..7a3c7e9 100644
--- a/gm/drawatlas.cpp
+++ b/gm/drawatlas.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkAutoMalloc.h"
-#include "SkCanvas.h"
-#include "SkRSXform.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "ToolUtils.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkRSXform.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "src/core/SkAutoMalloc.h"
+#include "tools/ToolUtils.h"
 
 class DrawAtlasGM : public skiagm::GM {
     static sk_sp<SkImage> MakeAtlas(SkCanvas* caller, const SkRect& target) {
@@ -99,10 +99,10 @@
 DEF_GM( return new DrawAtlasGM; )
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-#include "SkFont.h"
-#include "SkFontPriv.h"
-#include "SkPath.h"
-#include "SkPathMeasure.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPathMeasure.h"
+#include "src/core/SkFontPriv.h"
 
 static void draw_text_on_path(SkCanvas* canvas, const void* text, size_t length,
                               const SkPoint xy[], const SkPath& path, const SkFont& font, const SkPaint& paint,
@@ -153,7 +153,7 @@
     }
 }
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 static sk_sp<SkShader> make_shader() {
     SkPoint pts[2] = {{0, 0}, {220, 0}};
     SkColor colors[2] = {SK_ColorRED, SK_ColorBLUE};
@@ -237,9 +237,9 @@
     canvas->drawTextBlob(blob, offset.fX, offset.fY, paint);
 }
 
-#include "Resources.h"
-#include "SkColorFilter.h"
-#include "SkVertices.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkVertices.h"
+#include "tools/Resources.h"
 
 static sk_sp<SkVertices> make_vertices(sk_sp<SkImage> image, const SkRect& r,
                                        SkColor color) {
diff --git a/gm/drawatlascolor.cpp b/gm/drawatlascolor.cpp
index 532b771..c6f1da0 100644
--- a/gm/drawatlascolor.cpp
+++ b/gm/drawatlascolor.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkRSXform.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkRSXform.h"
+#include "include/core/SkSurface.h"
+#include "tools/ToolUtils.h"
 
 // Create a square atlas of:
 //   opaque white  |     opaque red
diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp
index ebc768e..29e9f1a 100644
--- a/gm/drawbitmaprect.cpp
+++ b/gm/drawbitmaprect.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMask.h"
-#include "SkBlurMaskFilter.h"
-#include "SkColorPriv.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkImage_Base.h"
-#include "SkMathPriv.h"
-#include "SkShader.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkBlurMask.h"
+#include "src/core/SkMathPriv.h"
+#include "src/image/SkImage_Base.h"
+#include "tools/ToolUtils.h"
 
 static SkBitmap make_chessbm(int w, int h) {
     SkBitmap bm;
diff --git a/gm/drawimageset.cpp b/gm/drawimageset.cpp
index e204cbb..bd00b63 100644
--- a/gm/drawimageset.cpp
+++ b/gm/drawimageset.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 #include <algorithm>
-#include "SkGradientShader.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 // Makes a set of m x n tiled images to be drawn with SkCanvas::experimental_drawImageSetV1().
 static void make_image_tiles(int tileW, int tileH, int m, int n, const SkColor colors[4],
diff --git a/gm/drawlooper.cpp b/gm/drawlooper.cpp
index cb1bf9c..4168ab8 100644
--- a/gm/drawlooper.cpp
+++ b/gm/drawlooper.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkGraphics.h"
-#include "SkLayerDrawLooper.h"
-#include "SkMaskFilter.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/effects/SkLayerDrawLooper.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkBlurMask.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH   200
 #define HEIGHT  200
diff --git a/gm/drawminibitmaprect.cpp b/gm/drawminibitmaprect.cpp
index c8a875d..7052dee 100644
--- a/gm/drawminibitmaprect.cpp
+++ b/gm/drawminibitmaprect.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColorPriv.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkMathPriv.h"
-#include "SkRandom.h"
-#include "SkShader.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkMathPriv.h"
 
 static sk_sp<SkImage> makebm(int w, int h) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(w, h);
diff --git a/gm/drawquadset.cpp b/gm/drawquadset.cpp
index 8b22fc5..6d6fc2a 100644
--- a/gm/drawquadset.cpp
+++ b/gm/drawquadset.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrClip.h"
-#include "GrContext.h"
-#include "GrRenderTargetContext.h"
-#include "GrSurfaceContextPriv.h"
-#include "SkGr.h"
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrClip.h"
+#include "src/gpu/GrRenderTargetContext.h"
+#include "src/gpu/GrSurfaceContextPriv.h"
+#include "src/gpu/SkGr.h"
 
 static constexpr SkScalar kTileWidth = 40;
 static constexpr SkScalar kTileHeight = 30;
diff --git a/gm/drawregion.cpp b/gm/drawregion.cpp
index 2230f09..ff06d1f 100644
--- a/gm/drawregion.cpp
+++ b/gm/drawregion.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkRegion.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkRegion.h"
 
 /**
  *  This is very similar to the RectGrid macrobench in Android.
diff --git a/gm/drawregionmodes.cpp b/gm/drawregionmodes.cpp
index d0ecfb4..3e6ad92 100644
--- a/gm/drawregionmodes.cpp
+++ b/gm/drawregionmodes.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurImageFilter.h"
-#include "SkCanvas.h"
-#include "SkDashPathEffect.h"
-#include "SkGradientShader.h"
-#include "SkMaskFilter.h"
-#include "SkRegion.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkRegion.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "include/effects/SkGradientShader.h"
 
 class DrawRegionModesGM : public skiagm::GM {
 public:
diff --git a/gm/dropshadowimagefilter.cpp b/gm/dropshadowimagefilter.cpp
index e14844d..38d5716 100644
--- a/gm/dropshadowimagefilter.cpp
+++ b/gm/dropshadowimagefilter.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkColorFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
 ///////////////////////////////////////////////////////////////////////////////
 
diff --git a/gm/drrect.cpp b/gm/drrect.cpp
index e3d3e6e..ea2a72b 100644
--- a/gm/drrect.cpp
+++ b/gm/drrect.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkRRect.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
 
 class DRRectGM : public skiagm::GM {
 public:
diff --git a/gm/drrect_small_inner.cpp b/gm/drrect_small_inner.cpp
index 1c7a743..d62b693 100644
--- a/gm/drrect_small_inner.cpp
+++ b/gm/drrect_small_inner.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkRRect.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkRRect.h"
 
 DEF_SIMPLE_GM(drrect_small_inner, canvas, 170, 610) {
     SkPaint paint;
diff --git a/gm/dstreadshuffle.cpp b/gm/dstreadshuffle.cpp
index a73b71c..4fba80f 100644
--- a/gm/dstreadshuffle.cpp
+++ b/gm/dstreadshuffle.cpp
@@ -4,13 +4,13 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkBitmap.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkShader.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/emboss.cpp b/gm/emboss.cpp
index 04e0a36..883471d 100644
--- a/gm/emboss.cpp
+++ b/gm/emboss.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkEmbossMaskFilter.h"
-#include "SkFont.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkFont.h"
+#include "src/core/SkBlurMask.h"
+#include "src/effects/SkEmbossMaskFilter.h"
 
 static SkBitmap make_bm() {
     SkBitmap bm;
diff --git a/gm/emptypath.cpp b/gm/emptypath.cpp
index 4f77bfe..0a81dd1 100644
--- a/gm/emptypath.cpp
+++ b/gm/emptypath.cpp
@@ -4,12 +4,12 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/encode-alpha-jpeg.cpp b/gm/encode-alpha-jpeg.cpp
index 673283d..fbca742 100644
--- a/gm/encode-alpha-jpeg.cpp
+++ b/gm/encode-alpha-jpeg.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkImage.h"
-#include "SkImageInfoPriv.h"
-#include "SkJpegEncoder.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/encode/SkJpegEncoder.h"
+#include "include/private/SkImageInfoPriv.h"
 
-#include "Resources.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/encode-platform.cpp b/gm/encode-platform.cpp
index 6f7b301..ecfd331 100644
--- a/gm/encode-platform.cpp
+++ b/gm/encode-platform.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkData.h"
-#include "SkImage.h"
-#include "SkImageEncoderPriv.h"
-#include "SkJpegEncoder.h"
-#include "SkPngEncoder.h"
-#include "SkWebpEncoder.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkData.h"
+#include "include/core/SkImage.h"
+#include "include/encode/SkJpegEncoder.h"
+#include "include/encode/SkPngEncoder.h"
+#include "include/encode/SkWebpEncoder.h"
+#include "src/images/SkImageEncoderPriv.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/encode-srgb.cpp b/gm/encode-srgb.cpp
index 23f36e4..12a0ee3 100644
--- a/gm/encode-srgb.cpp
+++ b/gm/encode-srgb.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkCodec.h"
-#include "SkData.h"
-#include "SkImage.h"
-#include "SkImageEncoderPriv.h"
-#include "SkJpegEncoder.h"
-#include "SkPngEncoder.h"
-#include "SkWebpEncoder.h"
+#include "include/codec/SkCodec.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkData.h"
+#include "include/core/SkImage.h"
+#include "include/encode/SkJpegEncoder.h"
+#include "include/encode/SkPngEncoder.h"
+#include "include/encode/SkWebpEncoder.h"
+#include "src/images/SkImageEncoderPriv.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/encode.cpp b/gm/encode.cpp
index 1201cf9..3e97c85 100644
--- a/gm/encode.cpp
+++ b/gm/encode.cpp
@@ -4,14 +4,14 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkData.h"
-#include "SkFont.h"
-#include "SkImage.h"
-#include "SkImageEncoder.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkData.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkImageEncoder.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/etc1.cpp b/gm/etc1.cpp
index a1bc415..552fa28 100644
--- a/gm/etc1.cpp
+++ b/gm/etc1.cpp
@@ -5,21 +5,21 @@
  * found in the LICENSE file.
  */
 
-#include "SkImage.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #if SK_SUPPORT_GPU && !defined(SK_BUILD_FOR_GOOGLE3)
 #include "etc1.h"
 
-#include "GrContext.h"
-#include "GrGpu.h"
-#include "GrRenderTargetContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "GrTextureProxy.h"
-#include "effects/generated/GrSimpleTextureEffect.h"
-#include "ops/GrFillRectOp.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrTextureProxy.h"
+#include "src/gpu/GrGpu.h"
+#include "src/gpu/GrRenderTargetContext.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/effects/generated/GrSimpleTextureEffect.h"
+#include "src/gpu/ops/GrFillRectOp.h"
 
 // Basic test of Ganesh's ETC1 support
 class ETC1GM : public skiagm::GpuGM {
diff --git a/gm/extractbitmap.cpp b/gm/extractbitmap.cpp
index 41eacce..6726f27 100644
--- a/gm/extractbitmap.cpp
+++ b/gm/extractbitmap.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkString.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkString.h"
+#include "include/core/SkSurface.h"
 
 namespace skiagm {
 
diff --git a/gm/fadefilter.cpp b/gm/fadefilter.cpp
index f7fb9c9..fe31033 100644
--- a/gm/fadefilter.cpp
+++ b/gm/fadefilter.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColorMatrixFilter.h"
-#include "SkColorFilterImageFilter.h"
+#include "gm/gm.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
 
 // This GM renders correctly in 8888, but fails in PDF
 DEF_SIMPLE_GM(fadefilter, canvas, 256, 256) {
diff --git a/gm/fatpathfill.cpp b/gm/fatpathfill.cpp
index 3b842a2..1952fd9 100644
--- a/gm/fatpathfill.cpp
+++ b/gm/fatpathfill.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkSurface.h"
+#include "tools/ToolUtils.h"
 
 #define ZOOM    32
 #define SMALL_W 9
diff --git a/gm/filltypes.cpp b/gm/filltypes.cpp
index c1e0526..96ef374 100644
--- a/gm/filltypes.cpp
+++ b/gm/filltypes.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
 
 namespace skiagm {
 
diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp
index 10ca319..a9f0f12 100644
--- a/gm/filltypespersp.cpp
+++ b/gm/filltypespersp.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkGradientShader.h"
 
 namespace skiagm {
 
diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp
index 0deb828..5dae169 100644
--- a/gm/filterbitmap.cpp
+++ b/gm/filterbitmap.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkGradientShader.h"
-#include "SkStream.h"
-#include "SkTypeface.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
 
 static void setTypeface(SkFont* font, const char name[], SkFontStyle style) {
     font->setTypeface(ToolUtils::create_portable_typeface(name, style));
diff --git a/gm/filterbug.cpp b/gm/filterbug.cpp
index bd413b3..1da33e4 100644
--- a/gm/filterbug.cpp
+++ b/gm/filterbug.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColorPriv.h"
-#include "SkImage.h"
+#include "gm/gm.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkImage.h"
 
 static const sk_sp<SkImage> make_image(int firstBlackRow, int lastBlackRow) {
     static const int kWidth = 25;
diff --git a/gm/filterfastbounds.cpp b/gm/filterfastbounds.cpp
index 908e00c..8b1366e 100644
--- a/gm/filterfastbounds.cpp
+++ b/gm/filterfastbounds.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurImageFilter.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkImageSource.h"
-#include "SkOffsetImageFilter.h"
-#include "SkPath.h"
-#include "SkPictureImageFilter.h"
-#include "SkPictureRecorder.h"
-#include "SkRandom.h"
-#include "SkSurface.h"
-#include "SkTileImageFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "include/effects/SkPictureImageFilter.h"
+#include "include/effects/SkTileImageFilter.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp
index fe4f31f..ead2a8d 100644
--- a/gm/filterindiabox.cpp
+++ b/gm/filterindiabox.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkBitmapProcState.h"
-#include "SkGradientShader.h"
-#include "SkImageEncoder.h"
-#include "SkStream.h"
-#include "SkTypeface.h"
+#include "include/core/SkImageEncoder.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkBitmapProcState.h"
+#include "tools/Resources.h"
 
 static SkSize computeSize(const SkBitmap& bm, const SkMatrix& mat) {
     SkRect bounds = SkRect::MakeWH(SkIntToScalar(bm.width()),
diff --git a/gm/flippity.cpp b/gm/flippity.cpp
index 4a8696e..7c595d6 100644
--- a/gm/flippity.cpp
+++ b/gm/flippity.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkSurface.h"
+#include "include/core/SkSurface.h"
 
-#include "GrContextPriv.h"
-#include "ProxyUtils.h"
-#include "SkImage_Gpu.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/image/SkImage_Gpu.h"
+#include "tools/gpu/ProxyUtils.h"
 
 static const int kNumMatrices = 6;
 static const int kImageSize = 128;
diff --git a/gm/fontcache.cpp b/gm/fontcache.cpp
index a96e944..7223860 100644
--- a/gm/fontcache.cpp
+++ b/gm/fontcache.cpp
@@ -8,17 +8,17 @@
 // GM to stress the GPU font cache
 // It's not necessary to run this with CPU configs
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
-#include "GrContextOptions.h"
-#include "GrContextPriv.h"
-#include "SkCanvas.h"
-#include "SkGraphics.h"
-#include "SkImage.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkTypeface.h"
+#include "include/gpu/GrContext.h"
+#include "include/gpu/GrContextOptions.h"
+#include "src/gpu/GrContextPriv.h"
+#include "tools/ToolUtils.h"
 
 static SkScalar draw_string(SkCanvas* canvas, const SkString& text, SkScalar x,
                            SkScalar y, const SkFont& font) {
diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp
index efa9ad1..76c93a6 100644
--- a/gm/fontmgr.cpp
+++ b/gm/fontmgr.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "CommandLineFlags.h"
-#include "SkCanvas.h"
-#include "SkFontMetrics.h"
-#include "SkFontMgr.h"
-#include "SkFontPriv.h"
-#include "SkGraphics.h"
-#include "SkMetaData.h"
-#include "SkPath.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFontMetrics.h"
+#include "include/core/SkFontMgr.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkTypeface.h"
+#include "src/core/SkFontPriv.h"
+#include "src/utils/SkMetaData.h"
+#include "tools/ToolUtils.h"
+#include "tools/flags/CommandLineFlags.h"
 
 // limit this just so we don't take too long to draw
 #define MAX_FAMILIES    30
diff --git a/gm/fontregen.cpp b/gm/fontregen.cpp
index 7f1d697..7124c97 100644
--- a/gm/fontregen.cpp
+++ b/gm/fontregen.cpp
@@ -13,18 +13,18 @@
 // and then enough new large text to spill the entire atlas. What *should* happen is that
 // the Plot with the first set of text will not get overwritten by the new large text.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrContextOptions.h"
-#include "SkCanvas.h"
-#include "SkGraphics.h"
-#include "SkImage.h"
-#include "SkTypeface.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkTypeface.h"
+#include "include/gpu/GrContext.h"
+#include "include/gpu/GrContextOptions.h"
+#include "src/gpu/GrContextPriv.h"
 
-#include "ToolUtils.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkTextBlob> make_blob(const SkString& text, const SkFont& font) {
     size_t len = text.size();
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 63a989d..a650d2f 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -4,10 +4,10 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkFont.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkTypeface.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/fontscalerdistortable.cpp b/gm/fontscalerdistortable.cpp
index c95d6e3..f3e6cb5 100644
--- a/gm/fontscalerdistortable.cpp
+++ b/gm/fontscalerdistortable.cpp
@@ -4,13 +4,13 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "Resources.h"
-#include "SkFixed.h"
-#include "SkFont.h"
-#include "SkFontDescriptor.h"
-#include "SkFontMgr.h"
-#include "SkTypeface.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkFontMgr.h"
+#include "include/core/SkTypeface.h"
+#include "include/private/SkFixed.h"
+#include "src/core/SkFontDescriptor.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/fwidth_squircle.cpp b/gm/fwidth_squircle.cpp
index 829c3d96..1448e48 100644
--- a/gm/fwidth_squircle.cpp
+++ b/gm/fwidth_squircle.cpp
@@ -5,25 +5,25 @@
  * found in the LICENSE file.
  */
 
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
 #if SK_SUPPORT_GPU
 
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrGpuCommandBuffer.h"
-#include "GrMemoryPool.h"
-#include "GrOpFlushState.h"
-#include "GrRecordingContext.h"
-#include "GrRecordingContextPriv.h"
-#include "GrRenderTargetContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "glsl/GrGLSLFragmentShaderBuilder.h"
-#include "glsl/GrGLSLGeometryProcessor.h"
-#include "glsl/GrGLSLVarying.h"
-#include "glsl/GrGLSLVertexGeoBuilder.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrRecordingContext.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrGpuCommandBuffer.h"
+#include "src/gpu/GrMemoryPool.h"
+#include "src/gpu/GrOpFlushState.h"
+#include "src/gpu/GrRecordingContextPriv.h"
+#include "src/gpu/GrRenderTargetContext.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h"
+#include "src/gpu/glsl/GrGLSLGeometryProcessor.h"
+#include "src/gpu/glsl/GrGLSLVarying.h"
+#include "src/gpu/glsl/GrGLSLVertexGeoBuilder.h"
 
 /**
  * This test ensures that fwidth() works properly on GPU configs by drawing a squircle.
diff --git a/gm/gamma.cpp b/gm/gamma.cpp
index 9cdd870..99e73f8 100644
--- a/gm/gamma.cpp
+++ b/gm/gamma.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkBlendModePriv.h"
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkBlendModePriv.h"
+#include "tools/Resources.h"
 
 DEF_SIMPLE_GM(gamma, canvas, 850, 200) {
     SkPaint p;
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index 17c795f..fc1ca4a 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkPath.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkShader> make_heatGradient(const SkPoint pts[2]) {
     const SkColor bw[] = { SK_ColorBLACK, SK_ColorWHITE };
diff --git a/gm/getpostextpath.cpp b/gm/getpostextpath.cpp
index f61aad6..c0911ec 100644
--- a/gm/getpostextpath.cpp
+++ b/gm/getpostextpath.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkCanvas.h"
-#include "SkFontPriv.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkTemplates.h"
-#include "SkTextBlob.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkTextBlob.h"
+#include "include/private/SkTemplates.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkFontPriv.h"
 
 static void strokePath(SkCanvas* canvas, const SkPath& path) {
     SkPaint paint;
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index 17b6063..fe8237d 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
 
 /*
  *  Want to ensure that our bitmap sampler (in bitmap shader) keeps plenty of
diff --git a/gm/glyph_pos.cpp b/gm/glyph_pos.cpp
index 54d5ff8..a0ef297 100644
--- a/gm/glyph_pos.cpp
+++ b/gm/glyph_pos.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkFont.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkTypeface.h"
+#include "tools/ToolUtils.h"
 
 /* This test tries to define the effect of using hairline strokes on text.
  * Provides non-hairline images for reference and consistency checks.
diff --git a/gm/gm.cpp b/gm/gm.cpp
index 1831aaa..7d52f1d 100644
--- a/gm/gm.cpp
+++ b/gm/gm.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
-#include "SkShader.h"
-#include "SkTraceEvent.h"
-#include "ToolUtils.h"
+#include "include/core/SkShader.h"
+#include "include/gpu/GrContext.h"
+#include "src/core/SkTraceEvent.h"
+#include "tools/ToolUtils.h"
 using namespace skiagm;
 
 constexpr char GM::kErrorMsg_DrawSkippedGpuOnly[];
diff --git a/gm/gm.h b/gm/gm.h
index e7dee35..b391a9c 100644
--- a/gm/gm.h
+++ b/gm/gm.h
@@ -8,14 +8,14 @@
 #ifndef skiagm_DEFINED
 #define skiagm_DEFINED
 
-#include "../tools/Registry.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkClipOpPriv.h"
-#include "SkMacros.h"
-#include "SkPaint.h"
-#include "SkSize.h"
-#include "SkString.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/private/SkMacros.h"
+#include "src/core/SkClipOpPriv.h"
+#include "tools/Registry.h"
 
 class AnimTimer;
 class SkMetaData;
diff --git a/gm/gradientDirtyLaundry.cpp b/gm/gradientDirtyLaundry.cpp
index f2e17fb..fa712e9 100644
--- a/gm/gradientDirtyLaundry.cpp
+++ b/gm/gradientDirtyLaundry.cpp
@@ -4,8 +4,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 using namespace skiagm;
 
diff --git a/gm/gradient_matrix.cpp b/gm/gradient_matrix.cpp
index 6f33502..f45ad8c 100644
--- a/gm/gradient_matrix.cpp
+++ b/gm/gradient_matrix.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkColor.h"
-#include "SkGradientShader.h"
-#include "SkMatrix.h"
-#include "SkPaint.h"
-#include "SkPoint.h"
-#include "SkRect.h"
-#include "SkRefCnt.h"
-#include "SkScalar.h"
-#include "SkSize.h"
-#include "SkString.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/effects/SkGradientShader.h"
 
-#include "gm.h"
+#include "gm/gm.h"
 
 constexpr SkColor gColors[] = {
     SK_ColorRED, SK_ColorYELLOW
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 3be8e77..09de0e8 100644
--- a/gm/gradients.cpp
+++ b/gm/gradients.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 namespace skiagm {
 
@@ -914,7 +914,7 @@
     draw_many_stops(canvas);
 }
 
-#include "SkPictureRecorder.h"
+#include "include/core/SkPictureRecorder.h"
 
 static void draw_circle_shader(SkCanvas* canvas, SkScalar cx, SkScalar cy, SkScalar r,
                                sk_sp<SkShader> (*shaderFunc)()) {
diff --git a/gm/gradients_2pt_conical.cpp b/gm/gradients_2pt_conical.cpp
index 27a1eef..5e33e1d 100644
--- a/gm/gradients_2pt_conical.cpp
+++ b/gm/gradients_2pt_conical.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 namespace skiagm {
 
diff --git a/gm/gradients_degenerate.cpp b/gm/gradients_degenerate.cpp
index 97ccc49..3f16f8b 100644
--- a/gm/gradients_degenerate.cpp
+++ b/gm/gradients_degenerate.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkFont.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/core/SkFont.h"
+#include "include/effects/SkGradientShader.h"
 
 // NOTE: The positions define hardstops for the red and green borders. For the repeating degenerate
 // gradients, that means the red and green are never visible, so the average color used should only
diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp
index 2814f3c..3515db9 100644
--- a/gm/gradients_no_texture.cpp
+++ b/gm/gradients_no_texture.cpp
@@ -4,8 +4,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 using namespace skiagm;
 
diff --git a/gm/gradtext.cpp b/gm/gradtext.cpp
index a4fd0b4..60e2df5 100644
--- a/gm/gradtext.cpp
+++ b/gm/gradtext.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 // test shader w/ transparency
 static sk_sp<SkShader> make_grad(SkScalar width) {
diff --git a/gm/grayscalejpg.cpp b/gm/grayscalejpg.cpp
index 851c8d0..38b18ac 100644
--- a/gm/grayscalejpg.cpp
+++ b/gm/grayscalejpg.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkImage.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "tools/Resources.h"
 
 /*
  *  Test decoding grayscale JPEG
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index 6d4b8d4..b4e2f92 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/private/SkTArray.h"
 
 namespace skiagm {
 
diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp
index 9793e93..9e46c1b 100644
--- a/gm/hairmodes.cpp
+++ b/gm/hairmodes.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
 
 constexpr SkBlendMode gModes[] = {
     SkBlendMode::kClear,
diff --git a/gm/hardstop_gradients.cpp b/gm/hardstop_gradients.cpp
index 64d42e8..9ac3086 100644
--- a/gm/hardstop_gradients.cpp
+++ b/gm/hardstop_gradients.cpp
@@ -36,9 +36,9 @@
  * 0, 0, 1 and 0, 1, 1). The final row has a single off-center hard stop.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 
 const int WIDTH  = 500;
 const int HEIGHT = 500;
diff --git a/gm/highcontrastfilter.cpp b/gm/highcontrastfilter.cpp
index cc7ef28..e0d7779 100644
--- a/gm/highcontrastfilter.cpp
+++ b/gm/highcontrastfilter.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkFont.h"
-#include "SkGradientShader.h"
-#include "SkHighContrastFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFont.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkHighContrastFilter.h"
+#include "tools/ToolUtils.h"
 
 using InvertStyle = SkHighContrastConfig::InvertStyle;
 
diff --git a/gm/hittestpath.cpp b/gm/hittestpath.cpp
index 5d0d1fc..6fbb5fa 100644
--- a/gm/hittestpath.cpp
+++ b/gm/hittestpath.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkRandom.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
 
 static void test_hittest(SkCanvas* canvas, const SkPath& path) {
     SkPaint paint;
diff --git a/gm/hsl.cpp b/gm/hsl.cpp
index 6839811..bee02c8 100644
--- a/gm/hsl.cpp
+++ b/gm/hsl.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
 // Hue, Saturation, Color, and Luminosity blend modes are oddballs.
 // They nominally convert their inputs to unpremul, then to HSL, then
diff --git a/gm/hugepath.cpp b/gm/hugepath.cpp
index 4a691b8..157111f 100644
--- a/gm/hugepath.cpp
+++ b/gm/hugepath.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkSurface.h"
 
 DEF_SIMPLE_GM(path_huge_crbug_800804, canvas, 50, 600) {
     SkPaint paint;
diff --git a/gm/image.cpp b/gm/image.cpp
index b6e438c..bc09b1c 100644
--- a/gm/image.cpp
+++ b/gm/image.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "GrContext.h"
-#include "SkAutoPixmapStorage.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkData.h"
-#include "SkRandom.h"
-#include "SkStream.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkData.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkSurface.h"
+#include "include/gpu/GrContext.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkAutoPixmapStorage.h"
+#include "tools/ToolUtils.h"
 
 #include <functional>
 
@@ -154,7 +154,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-#include "SkPictureRecorder.h"
+#include "include/core/SkPictureRecorder.h"
 
 static void draw_pixmap(SkCanvas* canvas, const SkPixmap& pmap) {
     SkBitmap bitmap;
@@ -383,8 +383,8 @@
     return SkImage::MakeFromEncoded(std::move(data));
 }
 
-#include "SkWriteBuffer.h"
-#include "SkReadBuffer.h"
+#include "src/core/SkReadBuffer.h"
+#include "src/core/SkWriteBuffer.h"
 static sk_sp<SkImage> serial_deserial(SkImage* img) {
     SkBinaryWriteBuffer writer;
     writer.writeImage(img);
diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp
index 6614c99..43a100f 100644
--- a/gm/image_pict.cpp
+++ b/gm/image_pict.cpp
@@ -5,20 +5,20 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkImage.h"
-#include "SkImageGenerator.h"
-#include "SkImage_Base.h"
-#include "SkMakeUnique.h"
-#include "SkPictureRecorder.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkImageGenerator.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
+#include "src/core/SkMakeUnique.h"
+#include "src/image/SkImage_Base.h"
 
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrSurfaceContext.h"
-#include "GrTextureProxy.h"
-#include "../src/image/SkImage_Gpu.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrTextureProxy.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrSurfaceContext.h"
+#include "src/image/SkImage_Gpu.h"
 
 static void draw_something(SkCanvas* canvas, const SkRect& bounds) {
     SkPaint paint;
diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp
index 37242d5..abac563 100644
--- a/gm/image_shader.cpp
+++ b/gm/image_shader.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkData.h"
-#include "SkImage.h"
-#include "SkPictureRecorder.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkData.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
 
 static void draw_something(SkCanvas* canvas, const SkRect& bounds) {
     SkPaint paint;
diff --git a/gm/imagealphathreshold.cpp b/gm/imagealphathreshold.cpp
index 1fe4dad..d4e7b27 100644
--- a/gm/imagealphathreshold.cpp
+++ b/gm/imagealphathreshold.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "SkAlphaThresholdFilter.h"
-#include "SkImageSource.h"
-#include "SkOffsetImageFilter.h"
-#include "SkRandom.h"
-#include "SkRegion.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkRegion.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkAlphaThresholdFilter.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 500
 #define HEIGHT 500
diff --git a/gm/imageblur.cpp b/gm/imageblur.cpp
index 5aca868..9bbfa1a 100644
--- a/gm/imageblur.cpp
+++ b/gm/imageblur.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 500
 #define HEIGHT 500
diff --git a/gm/imageblur2.cpp b/gm/imageblur2.cpp
index 1bed94c..dfdb295 100644
--- a/gm/imageblur2.cpp
+++ b/gm/imageblur2.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 // TODO deprecate imageblur
 
diff --git a/gm/imageblurclampmode.cpp b/gm/imageblurclampmode.cpp
index 2cd1723..f2dbbda 100644
--- a/gm/imageblurclampmode.cpp
+++ b/gm/imageblurclampmode.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image(SkCanvas* canvas) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(250, 200);
diff --git a/gm/imageblurrepeatmode.cpp b/gm/imageblurrepeatmode.cpp
index 9dafd1d..01835da 100644
--- a/gm/imageblurrepeatmode.cpp
+++ b/gm/imageblurrepeatmode.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image(SkCanvas* canvas, int direction) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(250, 200);
diff --git a/gm/imageblurtiled.cpp b/gm/imageblurtiled.cpp
index f1d15d0..46677c6 100644
--- a/gm/imageblurtiled.cpp
+++ b/gm/imageblurtiled.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 640
 #define HEIGHT 480
diff --git a/gm/imagefilters.cpp b/gm/imagefilters.cpp
index db11c18..dd5ef40 100644
--- a/gm/imagefilters.cpp
+++ b/gm/imagefilters.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkImage.h"
-#include "SkImageFilter.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkImageFilter.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "tools/ToolUtils.h"
 
 /**
  *  Test drawing a primitive w/ an imagefilter (in this case, just matrix w/ identity) to see
@@ -104,13 +104,13 @@
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-#include "Resources.h"
-#include "SkBlurImageFilter.h"
-#include "SkMatrixConvolutionImageFilter.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkRRect.h"
+#include "include/core/SkRRect.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkMatrixConvolutionImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "tools/Resources.h"
 
 static void draw_set(SkCanvas* canvas, sk_sp<SkImageFilter> filters[], int count) {
     const SkRect r = SkRect::MakeXYWH(30, 30, 200, 200);
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index cd5f9d2..02f85f8 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkColorPriv.h"
-#include "SkImageFilterPriv.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/core/SkImageFilterPriv.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBlurImageFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkSpecialImage.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "src/core/SkSpecialImage.h"
 
 class FailImageFilter : public SkImageFilter {
 public:
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index 16a7fc6..5afcb8c 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -5,23 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkColor.h"
-#include "SkDisplacementMapEffect.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkLightingImageFilter.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkPaintImageFilter.h"
-#include "SkPerlinNoiseShader.h"
-#include "SkPoint3.h"
-#include "SkScalar.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPoint3.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkDisplacementMapEffect.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkLightingImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "include/effects/SkPaintImageFilter.h"
+#include "include/effects/SkPerlinNoiseShader.h"
+#include "tools/ToolUtils.h"
 
 #define RESIZE_FACTOR_X SkIntToScalar(2)
 #define RESIZE_FACTOR_Y SkIntToScalar(5)
diff --git a/gm/imagefilterscropexpand.cpp b/gm/imagefilterscropexpand.cpp
index 94b301f..5274304 100644
--- a/gm/imagefilterscropexpand.cpp
+++ b/gm/imagefilterscropexpand.cpp
@@ -5,25 +5,25 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
 
-#include "SkBlurImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkDisplacementMapEffect.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkImageSource.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkLightingImageFilter.h"
-#include "SkMergeImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkPoint3.h"
-#include "SkSurface.h"
+#include "include/core/SkPoint3.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkDisplacementMapEffect.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkLightingImageFilter.h"
+#include "include/effects/SkMergeImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
 
 namespace {
 
diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp
index 2338aff..9c595af 100644
--- a/gm/imagefilterscropped.cpp
+++ b/gm/imagefilterscropped.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBlurImageFilter.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkMergeImageFilter.h"
-#include "SkOffsetImageFilter.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkMergeImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
 
 ///////////////////////////////////////////////////////////////////////////////
 
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 7955b52..f41be74 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -5,25 +5,25 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkArithmeticImageFilter.h"
-#include "SkBlurImageFilter.h"
-#include "SkColorFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkMatrixConvolutionImageFilter.h"
-#include "SkMergeImageFilter.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkReadBuffer.h"
-#include "SkSpecialImage.h"
-#include "SkSpecialSurface.h"
-#include "SkWriteBuffer.h"
-#include "SkXfermodeImageFilter.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkArithmeticImageFilter.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkMatrixConvolutionImageFilter.h"
+#include "include/effects/SkMergeImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "include/effects/SkXfermodeImageFilter.h"
+#include "src/core/SkReadBuffer.h"
+#include "src/core/SkSpecialImage.h"
+#include "src/core/SkSpecialSurface.h"
+#include "src/core/SkWriteBuffer.h"
 
 class ImageFiltersGraphGM : public skiagm::GM {
 public:
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index f3d354a..eee336c 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -5,23 +5,23 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkColor.h"
-#include "SkDisplacementMapEffect.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkLightingImageFilter.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkPaintImageFilter.h"
-#include "SkPerlinNoiseShader.h"
-#include "SkPoint3.h"
-#include "SkScalar.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPoint3.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkDisplacementMapEffect.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkLightingImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "include/effects/SkPaintImageFilter.h"
+#include "include/effects/SkPerlinNoiseShader.h"
+#include "tools/ToolUtils.h"
 
 #define RESIZE_FACTOR SkIntToScalar(4)
 
diff --git a/gm/imagefiltersstroked.cpp b/gm/imagefiltersstroked.cpp
index d69d486..0bebfd9 100644
--- a/gm/imagefiltersstroked.cpp
+++ b/gm/imagefiltersstroked.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkColor.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkScalar.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkScalar.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
 
 #define RESIZE_FACTOR_X SkIntToScalar(2)
 #define RESIZE_FACTOR_Y SkIntToScalar(5)
diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp
index 9d2ed28..292e68f 100644
--- a/gm/imagefilterstransformed.cpp
+++ b/gm/imagefilterstransformed.cpp
@@ -5,18 +5,18 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkColor.h"
-#include "SkDisplacementMapEffect.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkScalar.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkDisplacementMapEffect.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
@@ -117,7 +117,7 @@
 }
 
 //////////////////////////////////////////////////////////////////////////////
-#include "SkXfermodeImageFilter.h"
+#include "include/effects/SkXfermodeImageFilter.h"
 
 DEF_SIMPLE_GM(rotate_imagefilter, canvas, 500, 500) {
     SkPaint paint;
diff --git a/gm/imagefromyuvtextures.cpp b/gm/imagefromyuvtextures.cpp
index 47f86c6..72f4278 100644
--- a/gm/imagefromyuvtextures.cpp
+++ b/gm/imagefromyuvtextures.cpp
@@ -7,16 +7,16 @@
 
 // This test only works with the GPU backend.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrBackendSurface.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrGpu.h"
-#include "SkBitmap.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkTo.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrBackendSurface.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/SkTo.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrGpu.h"
 
 static sk_sp<SkColorFilter> yuv_to_rgb_colorfilter() {
     static const float kJPEGConversionMatrix[20] = {
diff --git a/gm/imagemagnifier.cpp b/gm/imagemagnifier.cpp
index b34dfb6..a9110bf 100644
--- a/gm/imagemagnifier.cpp
+++ b/gm/imagemagnifier.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkImageSource.h"
-#include "SkMagnifierImageFilter.h"
-#include "SkPixelRef.h"
-#include "SkRandom.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPixelRef.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkMagnifierImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 500
 #define HEIGHT 500
diff --git a/gm/imagemakewithfilter.cpp b/gm/imagemakewithfilter.cpp
index ef90f17..3ad2fd5 100644
--- a/gm/imagemakewithfilter.cpp
+++ b/gm/imagemakewithfilter.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkDropShadowImageFilter.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkDropShadowImageFilter.h"
+#include "tools/ToolUtils.h"
 
 ///////////////////////////////////////////////////////////////////////////////
 
diff --git a/gm/imagemasksubset.cpp b/gm/imagemasksubset.cpp
index 6998055..6e03f1e 100644
--- a/gm/imagemasksubset.cpp
+++ b/gm/imagemasksubset.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkImage.h"
-#include "SkImageGenerator.h"
-#include "SkMakeUnique.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkImageGenerator.h"
+#include "include/core/SkSurface.h"
+#include "src/core/SkMakeUnique.h"
+#include "tools/ToolUtils.h"
 
 namespace {
 
diff --git a/gm/imageresizetiled.cpp b/gm/imageresizetiled.cpp
index f85afd8..95c2d32 100644
--- a/gm/imageresizetiled.cpp
+++ b/gm/imageresizetiled.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkImageFilter.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImageFilter.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 640
 #define HEIGHT 480
diff --git a/gm/imagescalealigned.cpp b/gm/imagescalealigned.cpp
index a1f6741..e519082 100644
--- a/gm/imagescalealigned.cpp
+++ b/gm/imagescalealigned.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkImage.h"
-#include "SkSurface.h"
-#include "SkTArray.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkSurface.h"
+#include "include/private/SkTArray.h"
 
 class ImageScaleAlignedGM : public skiagm::GM {
 protected:
diff --git a/gm/imagesource.cpp b/gm/imagesource.cpp
index ea323e6..44dd71a 100644
--- a/gm/imagesource.cpp
+++ b/gm/imagesource.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkImage.h"
-#include "SkImageSource.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkImageSource.h"
 
 // This GM exercises the SkImageSource ImageFilter class.
 
diff --git a/gm/imagesource2.cpp b/gm/imagesource2.cpp
index 70a91da..61b9086 100644
--- a/gm/imagesource2.cpp
+++ b/gm/imagesource2.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkImageSource.h"
 
 namespace skiagm {
 
diff --git a/gm/internal_links.cpp b/gm/internal_links.cpp
index fc710a8..e71b488 100644
--- a/gm/internal_links.cpp
+++ b/gm/internal_links.cpp
@@ -4,11 +4,11 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkAnnotation.h"
-#include "SkData.h"
+#include "include/core/SkAnnotation.h"
+#include "include/core/SkData.h"
 
 namespace skiagm {
 
diff --git a/gm/inversepaths.cpp b/gm/inversepaths.cpp
index f9d3ac7..b6848d9 100644
--- a/gm/inversepaths.cpp
+++ b/gm/inversepaths.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkDashPathEffect.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkDashPathEffect.h"
 
 static SkPath generate_square(SkScalar cx, SkScalar cy, SkScalar w) {
     SkRect rect = SkRect::MakeXYWH(cx - w / 2, cy - w / 2, w, w);
diff --git a/gm/jpg_color_cube.cpp b/gm/jpg_color_cube.cpp
index 240259e..afe6eeb 100644
--- a/gm/jpg_color_cube.cpp
+++ b/gm/jpg_color_cube.cpp
@@ -4,12 +4,12 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkData.h"
-#include "SkImage.h"
-#include "SkImageEncoder.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkData.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkImageEncoder.h"
 
 namespace skiagm {
 
diff --git a/gm/largeglyphblur.cpp b/gm/largeglyphblur.cpp
index f1fe1d1..1041cb6 100644
--- a/gm/largeglyphblur.cpp
+++ b/gm/largeglyphblur.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
-#include "SkTextBlob.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkTextBlob.h"
+#include "src/core/SkBlurMask.h"
 
 // This test ensures that glyphs whose point size is less than the SkStrike's maxmium, but
 // who have a large blur, are still handled correctly
diff --git a/gm/lattice.cpp b/gm/lattice.cpp
index b56e980..c3f73b6 100644
--- a/gm/lattice.cpp
+++ b/gm/lattice.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkSurface> make_surface(SkCanvas* root, int N, int padLeft, int padTop,
                                      int padRight, int padBottom) {
diff --git a/gm/lcdblendmodes.cpp b/gm/lcdblendmodes.cpp
index d875a00..ad56231 100644
--- a/gm/lcdblendmodes.cpp
+++ b/gm/lcdblendmodes.cpp
@@ -10,11 +10,11 @@
  * Tests text rendering with LCD and the various blend modes.
  */
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/lcdoverlap.cpp b/gm/lcdoverlap.cpp
index 19e69f1..5bb6f18 100644
--- a/gm/lcdoverlap.cpp
+++ b/gm/lcdoverlap.cpp
@@ -10,11 +10,11 @@
  * Tests overlapping LCD text
  */
 
-#include "SkCanvas.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/lcdtext.cpp b/gm/lcdtext.cpp
index 0f7304e..e4ee3ba 100644
--- a/gm/lcdtext.cpp
+++ b/gm/lcdtext.cpp
@@ -9,13 +9,13 @@
 /* Tests text rendering with LCD and subpixel rendering turned on and off.
  */
 
-#include "SkCanvas.h"
-#include "SkPicture.h"
-#include "SkPictureImageFilter.h"
-#include "SkPictureRecorder.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkPictureImageFilter.h"
+#include "tools/ToolUtils.h"
 
 class LcdTextGM : public skiagm::GM {
 public:
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index 285cab7..26521e2 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "SkLightingImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkPoint3.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPoint3.h"
+#include "include/effects/SkLightingImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "tools/ToolUtils.h"
+#include "tools/timer/AnimTimer.h"
 
 #define WIDTH 330
 #define HEIGHT 660
diff --git a/gm/lightingshader.cpp b/gm/lightingshader.cpp
index a9c4383..eb012e8 100644
--- a/gm/lightingshader.cpp
+++ b/gm/lightingshader.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkLightingShader.h"
-#include "SkNormalSource.h"
-#include "SkPoint3.h"
-#include "SkShader.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPoint3.h"
+#include "include/core/SkShader.h"
+#include "src/core/SkNormalSource.h"
+#include "src/shaders/SkLightingShader.h"
+#include "tools/ToolUtils.h"
 
 // Create a hemispherical normal map
 static SkBitmap make_hemi_normalmap(int texSize) {
diff --git a/gm/lightingshader2.cpp b/gm/lightingshader2.cpp
index 883fbbf..2ce7e28 100644
--- a/gm/lightingshader2.cpp
+++ b/gm/lightingshader2.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkLightingShader.h"
-#include "SkNormalSource.h"
-#include "SkPoint3.h"
-#include "SkShader.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPoint3.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkTypeface.h"
+#include "src/core/SkNormalSource.h"
+#include "src/shaders/SkLightingShader.h"
+#include "tools/ToolUtils.h"
 
 // Create a truncated pyramid normal map
 static SkBitmap make_frustum_normalmap(int texSize) {
diff --git a/gm/linepaths.cpp b/gm/linepaths.cpp
index f6424a7..d1d3304 100644
--- a/gm/linepaths.cpp
+++ b/gm/linepaths.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 static void drawPath(SkPath& path,SkCanvas* canvas,SkColor color,
                      const SkRect& clip,SkPaint::Cap cap, SkPaint::Join join,
diff --git a/gm/localmatriximagefilter.cpp b/gm/localmatriximagefilter.cpp
index 4bb433c..a754748 100644
--- a/gm/localmatriximagefilter.cpp
+++ b/gm/localmatriximagefilter.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurImageFilter.h"
-#include "SkCanvas.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkModeColorFilter.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkOffsetImageFilter.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "src/core/SkModeColorFilter.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image(SkCanvas* rootCanvas) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100);
diff --git a/gm/localmatriximageshader.cpp b/gm/localmatriximageshader.cpp
index fc5f0f2..006f150 100644
--- a/gm/localmatriximageshader.cpp
+++ b/gm/localmatriximageshader.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image(SkCanvas* rootCanvas, SkColor color) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100);
diff --git a/gm/localmatrixshader.cpp b/gm/localmatrixshader.cpp
index ebb6997..deb762d 100644
--- a/gm/localmatrixshader.cpp
+++ b/gm/localmatrixshader.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkShader.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image(SkCanvas* rootCanvas) {
     static constexpr SkScalar kSize = 50;
diff --git a/gm/lumafilter.cpp b/gm/lumafilter.cpp
index 441986a..52f07a8 100644
--- a/gm/lumafilter.cpp
+++ b/gm/lumafilter.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlendModePriv.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkLumaColorFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkLumaColorFilter.h"
+#include "src/core/SkBlendModePriv.h"
+#include "tools/ToolUtils.h"
 
 static SkScalar kSize   = 80;
 static SkScalar kInset  = 10;
diff --git a/gm/mac_aa_explorer.cpp b/gm/mac_aa_explorer.cpp
index 463aa72..e95e5c9 100644
--- a/gm/mac_aa_explorer.cpp
+++ b/gm/mac_aa_explorer.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkFont.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkSurface.h"
 
 #ifdef SK_BUILD_FOR_MAC
 
diff --git a/gm/makeRasterImage.cpp b/gm/makeRasterImage.cpp
index 34a8cd2..72491a3 100644
--- a/gm/makeRasterImage.cpp
+++ b/gm/makeRasterImage.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkSurface.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "tools/Resources.h"
 
 DEF_SIMPLE_GM(makeRasterImage, canvas, 128,128) {
     if (auto img = GetResourceAsImage("images/color_wheel.png")) {
diff --git a/gm/makecolorspace.cpp b/gm/makecolorspace.cpp
index 3b8a5ae..82ece0c 100644
--- a/gm/makecolorspace.cpp
+++ b/gm/makecolorspace.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "Resources.h"
-#include "SkCodec.h"
-#include "SkColorSpace.h"
-#include "SkImage.h"
-#include "SkImagePriv.h"
+#include "gm/gm.h"
+#include "include/codec/SkCodec.h"
+#include "include/core/SkColorSpace.h"
+#include "include/core/SkImage.h"
+#include "src/core/SkImagePriv.h"
+#include "tools/Resources.h"
 
 sk_sp<SkImage> make_raster_image(const char* path) {
     sk_sp<SkData> resourceData = GetResourceAsData(path);
diff --git a/gm/mandoline.cpp b/gm/mandoline.cpp
index 2a024dd..4b4a344 100644
--- a/gm/mandoline.cpp
+++ b/gm/mandoline.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGeometry.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPoint.h"
-#include "SkRandom.h"
+#include "gm/gm.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPoint.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkGeometry.h"
 
 #include <math.h>
 
diff --git a/gm/manypaths.cpp b/gm/manypaths.cpp
index 00bdfad..845349a 100644
--- a/gm/manypaths.cpp
+++ b/gm/manypaths.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkRRect.h"
-#include "SkRandom.h"
-#include "SkRect.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkRect.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index a729e3f..9b4633b 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkColor.h"
-#include "SkGradientShader.h"
-#include "SkMatrixConvolutionImageFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkMatrixConvolutionImageFilter.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/matriximagefilter.cpp b/gm/matriximagefilter.cpp
index 6439de7..fb15a1f 100644
--- a/gm/matriximagefilter.cpp
+++ b/gm/matriximagefilter.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColor.h"
-#include "SkImageFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkImageFilter.h"
 
 static void draw(SkCanvas* canvas, const SkRect& rect, const SkBitmap& bitmap,
                  const SkMatrix& matrix, SkFilterQuality filter) {
diff --git a/gm/megalooper.cpp b/gm/megalooper.cpp
index 640fcfe..0660a6a 100644
--- a/gm/megalooper.cpp
+++ b/gm/megalooper.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkLayerDrawLooper.h"
-#include "SkMaskFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/effects/SkLayerDrawLooper.h"
+#include "src/core/SkBlurMask.h"
 
 // This GM tests 3 different ways of drawing four shadows around a square:
 //      just using 4 blurred rects
diff --git a/gm/mipmap.cpp b/gm/mipmap.cpp
index 7188cd30..5f1f5c8 100644
--- a/gm/mipmap.cpp
+++ b/gm/mipmap.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkImage.h"
-#include "SkRandom.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkSurface.h"
+#include "include/utils/SkRandom.h"
 
 static sk_sp<SkImage> make_image() {
     const SkImageInfo info = SkImageInfo::MakeN32Premul(319, 52);
diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp
index 788a98a..1c8ef35 100644
--- a/gm/mixedtextblobs.cpp
+++ b/gm/mixedtextblobs.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkStream.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 
diff --git a/gm/mixercolorfilter.cpp b/gm/mixercolorfilter.cpp
index 63fef70..603159a 100644
--- a/gm/mixercolorfilter.cpp
+++ b/gm/mixercolorfilter.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "AnimTimer.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "SkLumaColorFilter.h"
-#include "SkTableColorFilter.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkLumaColorFilter.h"
+#include "include/effects/SkTableColorFilter.h"
+#include "tools/timer/AnimTimer.h"
 
 // A tint filter maps colors to a given range (gradient), based on the input luminance:
 //
@@ -111,7 +111,7 @@
 } // namespace
 DEF_GM( return new MixerCFGM(SkSize::Make(200, 250), 5); )
 
-#include "Resources.h"
+#include "tools/Resources.h"
 
 static sk_sp<SkShader> make_resource_shader(const char path[], int size) {
     auto img = GetResourceAsImage(path);
diff --git a/gm/modecolorfilters.cpp b/gm/modecolorfilters.cpp
index 3950f1a..b062882 100644
--- a/gm/modecolorfilters.cpp
+++ b/gm/modecolorfilters.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 512
 #define HEIGHT 1024
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 063508c..b0759bd 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "SkMorphologyImageFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/effects/SkMorphologyImageFilter.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 700
 #define HEIGHT 560
diff --git a/gm/multipicturedraw.cpp b/gm/multipicturedraw.cpp
index cba275f..40e204b 100644
--- a/gm/multipicturedraw.cpp
+++ b/gm/multipicturedraw.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkColorFilter.h"
-#include "SkMultiPictureDraw.h"
-#include "SkPath.h"
-#include "SkPictureRecorder.h"
-#include "SkSurface.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMultiPictureDraw.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
 
 constexpr SkScalar kRoot3Over2 = 0.86602545f;  // sin(60)
 constexpr SkScalar kRoot3      = 1.73205081f;
diff --git a/gm/nested.cpp b/gm/nested.cpp
index 1b234f2..2da4d3c 100644
--- a/gm/nested.cpp
+++ b/gm/nested.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkRRect.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp
index c2b51f8..b366852 100644
--- a/gm/ninepatchstretch.cpp
+++ b/gm/ninepatchstretch.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkSurface> make_surface(SkCanvas* root, int N) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(N, N);
diff --git a/gm/nonclosedpaths.cpp b/gm/nonclosedpaths.cpp
index dc806f3..7698a20 100644
--- a/gm/nonclosedpaths.cpp
+++ b/gm/nonclosedpaths.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 namespace skiagm {
 
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index 4706157..f264eb7 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkOffsetImageFilter.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 600
 #define HEIGHT 100
diff --git a/gm/orientation.cpp b/gm/orientation.cpp
index aed07cc..9744c0e 100644
--- a/gm/orientation.cpp
+++ b/gm/orientation.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkCanvas.h"
-#include "SkColor.h"
-#include "SkImage.h"
-#include "Resources.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkImage.h"
+#include "tools/Resources.h"
 
 // This gm draws 8 images that are mostly the same when respecting the
 // EXIF orientation tag. Each one has four quadrants (red, blue, green,
diff --git a/gm/ovals.cpp b/gm/ovals.cpp
index d8f93ef..74f0d4e 100644
--- a/gm/ovals.cpp
+++ b/gm/ovals.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurDrawLooper.h"
-#include "SkBlurMaskFilter.h"
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "SkMatrix.h"
-#include "SkRandom.h"
-#include "SkRect.h"
-#include "SkTArray.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRect.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTArray.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/overdrawcanvas.cpp b/gm/overdrawcanvas.cpp
index 0b8fef0..1e75e8d 100644
--- a/gm/overdrawcanvas.cpp
+++ b/gm/overdrawcanvas.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkOverdrawCanvas.h"
-#include "SkOverdrawColorFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkOverdrawCanvas.h"
+#include "include/effects/SkOverdrawColorFilter.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 500
 #define HEIGHT 500
diff --git a/gm/overdrawcolorfilter.cpp b/gm/overdrawcolorfilter.cpp
index 73036cf..ba92bce 100644
--- a/gm/overdrawcolorfilter.cpp
+++ b/gm/overdrawcolorfilter.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkOverdrawColorFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkOverdrawColorFilter.h"
 
 static inline void set_bitmap(SkBitmap* bitmap, uint8_t alpha) {
     for (int y = 0; y < bitmap->height(); y++) {
diff --git a/gm/p3.cpp b/gm/p3.cpp
index 297a870..c8eae66 100644
--- a/gm/p3.cpp
+++ b/gm/p3.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkColorSpace.h"
-#include "SkColorSpaceXformSteps.h"
-#include "SkDashPathEffect.h"
-#include "SkFont.h"
-#include "SkGradientShader.h"
-#include "SkString.h"
+#include "include/core/SkColorSpace.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkString.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkColorSpaceXformSteps.h"
 
 static bool nearly_equal(SkColor4f x, SkColor4f y) {
     const float K = 0.01f;
diff --git a/gm/patch.cpp b/gm/patch.cpp
index 6f05142..1631c8f 100644
--- a/gm/patch.cpp
+++ b/gm/patch.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkPatchUtils.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/utils/SkPatchUtils.h"
 
 static sk_sp<SkShader> make_shader() {
     const SkColor colors[] = {
@@ -147,7 +147,7 @@
     };
     dopatch(canvas, colors);
 }
-#include "Resources.h"
+#include "tools/Resources.h"
 DEF_SIMPLE_GM(patch_image, canvas, 1500, 1100) {
     const SkColor colors[SkPatchUtils::kNumCorners] = {
         SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN
diff --git a/gm/path_stroke_with_zero_length.cpp b/gm/path_stroke_with_zero_length.cpp
index 3cb789f..48f54d2 100644
--- a/gm/path_stroke_with_zero_length.cpp
+++ b/gm/path_stroke_with_zero_length.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkAutoPixmapStorage.h"
-#include "SkColorPriv.h"
-#include "SkImage.h"
-#include "SkParsePath.h"
-#include "SkPath.h"
-#include "SkSurface.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkSurface.h"
+#include "include/utils/SkParsePath.h"
+#include "src/core/SkAutoPixmapStorage.h"
 
 // GM to test combinations of stroking zero length paths with different caps and other settings
 // Variables:
diff --git a/gm/pathcontourstart.cpp b/gm/pathcontourstart.cpp
index 0e85e38..e3c568a 100644
--- a/gm/pathcontourstart.cpp
+++ b/gm/pathcontourstart.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkDashPathEffect.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRRect.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
+#include "include/effects/SkDashPathEffect.h"
 
 namespace skiagm {
 
diff --git a/gm/patheffects.cpp b/gm/patheffects.cpp
index 79e90d7..8669c3e 100644
--- a/gm/patheffects.cpp
+++ b/gm/patheffects.cpp
@@ -4,14 +4,14 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "Sk1DPathEffect.h"
-#include "Sk2DPathEffect.h"
-#include "SkCornerPathEffect.h"
-#include "SkDashPathEffect.h"
-#include "SkDiscretePathEffect.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/effects/Sk1DPathEffect.h"
+#include "include/effects/Sk2DPathEffect.h"
+#include "include/effects/SkCornerPathEffect.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "include/effects/SkDiscretePathEffect.h"
 
 namespace skiagm {
 
@@ -165,7 +165,7 @@
 }
 
 //////////////////////////////////////////////////////////////////////////////
-#include "SkOpPathEffect.h"
+#include "include/effects/SkOpPathEffect.h"
 
 class ComboPathEfectsGM : public skiagm::GM {
 public:
diff --git a/gm/pathfill.cpp b/gm/pathfill.cpp
index 7626bd6..17caae5 100644
--- a/gm/pathfill.cpp
+++ b/gm/pathfill.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
 
 typedef SkScalar (*MakePathProc)(SkPath*);
 
diff --git a/gm/pathinterior.cpp b/gm/pathinterior.cpp
index d53cffb..06feb53 100644
--- a/gm/pathinterior.cpp
+++ b/gm/pathinterior.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMaskFilter.h"
-#include "SkCanvas.h"
-#include "SkGraphics.h"
-#include "SkLayerDrawLooper.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/effects/SkLayerDrawLooper.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 static SkRect inset(const SkRect& r) {
     SkRect rect = r;
diff --git a/gm/pathmaskcache.cpp b/gm/pathmaskcache.cpp
index 0952033..a6d60b4 100644
--- a/gm/pathmaskcache.cpp
+++ b/gm/pathmaskcache.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
-#include "GrContextOptions.h"
-#include "SkPath.h"
+#include "include/core/SkPath.h"
+#include "include/gpu/GrContext.h"
+#include "include/gpu/GrContextOptions.h"
 
 /** This tests the GPU backend's caching of path coverage masks */
 class PathMaskCache : public skiagm::GM {
diff --git a/gm/pathmeasure.cpp b/gm/pathmeasure.cpp
index aa7de87..7402a73 100644
--- a/gm/pathmeasure.cpp
+++ b/gm/pathmeasure.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkBitmap.h"
-#include "SkDashPathEffect.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkDashPathEffect.h"
 
 // Repro case for skia:7674.  Requires lots of RAM to run, and currently triggers UB:
 // ../include/private/SkTDArray.h:382:26:
diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp
index 3e2d08c..a09237c 100644
--- a/gm/pathopsinverse.cpp
+++ b/gm/pathopsinverse.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkBitmap.h"
-#include "SkPath.h"
-#include "SkPathOps.h"
-#include "SkRect.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRect.h"
+#include "include/pathops/SkPathOps.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/pathopsskpclip.cpp b/gm/pathopsskpclip.cpp
index e6ebc9b..74846df 100644
--- a/gm/pathopsskpclip.cpp
+++ b/gm/pathopsskpclip.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkClipStack.h"
-#include "SkPath.h"
-#include "SkPathOps.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkRect.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkRect.h"
+#include "include/pathops/SkPathOps.h"
+#include "src/core/SkClipStack.h"
 
 namespace skiagm {
 
diff --git a/gm/pathreverse.cpp b/gm/pathreverse.cpp
index f0ce051..de8bcc0 100644
--- a/gm/pathreverse.cpp
+++ b/gm/pathreverse.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkTypeface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkTypeface.h"
 
 /* The hiragino_maru_goth_pro_e path was generated with Mac-specific code:
  *
diff --git a/gm/pdf_never_embed.cpp b/gm/pdf_never_embed.cpp
index 9c5188f..e54f9df 100644
--- a/gm/pdf_never_embed.cpp
+++ b/gm/pdf_never_embed.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkTextBlob.h"
-#include "SkTo.h"
-#include "SkTypeface.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/private/SkTo.h"
+#include "tools/Resources.h"
 
 static void excercise_draw_pos_text(SkCanvas* canvas,
                                     const char* text,
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
index d8a3abc..4261faa 100644
--- a/gm/perlinnoise.cpp
+++ b/gm/perlinnoise.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPerlinNoiseShader.h"
-#include "SkShader.h"
+#include "gm/gm.h"
+#include "include/core/SkShader.h"
+#include "include/effects/SkPerlinNoiseShader.h"
 
 namespace {
 
diff --git a/gm/perspimages.cpp b/gm/perspimages.cpp
index ebce9e9..7bada24 100644
--- a/gm/perspimages.cpp
+++ b/gm/perspimages.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkPath.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image1() { return GetResourceAsImage("images/mandrill_128.png"); }
 
diff --git a/gm/perspshaders.cpp b/gm/perspshaders.cpp
index aaecad8..8a5786d 100644
--- a/gm/perspshaders.cpp
+++ b/gm/perspshaders.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkPath.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 static sk_sp<SkImage> make_image(SkCanvas* origCanvas, int w, int h) {
     SkImageInfo info = SkImageInfo::MakeN32Premul(w, h);
diff --git a/gm/picture.cpp b/gm/picture.cpp
index 2ffdcc5..0fdec1c 100644
--- a/gm/picture.cpp
+++ b/gm/picture.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPictureRecorder.h"
+#include "gm/gm.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPictureRecorder.h"
 
 static sk_sp<SkPicture> make_picture() {
     SkPictureRecorder rec;
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 7e5210e..6324714 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkPictureImageFilter.h"
-#include "SkPictureRecorder.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/effects/SkPictureImageFilter.h"
 
-#include "SkImage.h"
-#include "SkImageSource.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkImageSource.h"
 
 // This GM exercises the SkPictureImageFilter ImageFilter class.
 
diff --git a/gm/pictureimagegenerator.cpp b/gm/pictureimagegenerator.cpp
index 70076e0..2cc2d6d 100644
--- a/gm/pictureimagegenerator.cpp
+++ b/gm/pictureimagegenerator.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkFontPriv.h"
-#include "SkGradientShader.h"
-#include "SkImageGenerator.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPathOps.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImageGenerator.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/pathops/SkPathOps.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/core/SkFontPriv.h"
+#include "tools/ToolUtils.h"
 
 static void draw_vector_logo(SkCanvas* canvas, const SkRect& viewBox) {
     constexpr char kSkiaStr[] = "SKIA";
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp
index bfadac1..2f72979 100644
--- a/gm/pictureshader.cpp
+++ b/gm/pictureshader.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBitmap.h"
-#include "SkPaint.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkShader.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkShader.h"
 
 static struct {
     SkTileMode tmx;
diff --git a/gm/pictureshadercache.cpp b/gm/pictureshadercache.cpp
index f847732..3273a4a 100644
--- a/gm/pictureshadercache.cpp
+++ b/gm/pictureshadercache.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkPaint.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkShader.h"
-#include "SkSurface.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkSurface.h"
 
 class PictureShaderCacheGM : public skiagm::GM {
 public:
diff --git a/gm/pictureshadertile.cpp b/gm/pictureshadertile.cpp
index 753a67b..94abf8d 100644
--- a/gm/pictureshadertile.cpp
+++ b/gm/pictureshadertile.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkPaint.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkShader.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkShader.h"
 
 constexpr SkScalar kPictureSize = SK_Scalar1;
 constexpr SkScalar kFillSize = 100;
diff --git a/gm/pixelsnap.cpp b/gm/pixelsnap.cpp
index 671045f..01a3272 100644
--- a/gm/pixelsnap.cpp
+++ b/gm/pixelsnap.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkShader.h"
+#include "include/core/SkShader.h"
 
 // This class of GMs test how edges/verts snap near rounding boundaries in device space without
 // anti-aliaing.
diff --git a/gm/plus.cpp b/gm/plus.cpp
index 51ac2cb..94c5d7f 100644
--- a/gm/plus.cpp
+++ b/gm/plus.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
 
 DEF_SIMPLE_GM(PlusMergesAA, canvas, 256, 256) {
     SkPaint p;
diff --git a/gm/points.cpp b/gm/points.cpp
index 8315a2a..c9d52c8 100644
--- a/gm/points.cpp
+++ b/gm/points.cpp
@@ -4,8 +4,8 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "gm.h"
-#include "SkRandom.h"
+#include "gm/gm.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index 4f1dae9..f5f5db3 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkFontMetrics.h"
-#include "SkPath.h"
-#include "SkTextUtils.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkFontMetrics.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkTypeface.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 class Poly2PolyGM : public skiagm::GM {
 public:
diff --git a/gm/polygonoffset.cpp b/gm/polygonoffset.cpp
index 2775215..909dddc 100644
--- a/gm/polygonoffset.cpp
+++ b/gm/polygonoffset.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkPathPriv.h"
-#include "SkPolyUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "src/core/SkPathPriv.h"
+#include "src/utils/SkPolyUtils.h"
+#include "tools/ToolUtils.h"
 
 static void create_ngon(int n, SkPoint* pts, SkScalar w, SkScalar h, SkPath::Direction dir) {
     float angleStep = 360.0f / n, angle = 0.0f;
diff --git a/gm/polygons.cpp b/gm/polygons.cpp
index 00fe336..876b17d 100644
--- a/gm/polygons.cpp
+++ b/gm/polygons.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkScalar.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkScalar.h"
+#include "include/private/SkTArray.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp
index 3f3d861..46763a9 100644
--- a/gm/quadpaths.cpp
+++ b/gm/quadpaths.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/radial_gradient_precision.cpp b/gm/radial_gradient_precision.cpp
index bb4e155..e51370d 100644
--- a/gm/radial_gradient_precision.cpp
+++ b/gm/radial_gradient_precision.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 // All we're looking for here is that we see a smooth gradient.
 DEF_SIMPLE_GM(radial_gradient_precision, canvas, 200, 200) {
diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp
index ac53784..44bda99 100644
--- a/gm/readpixels.cpp
+++ b/gm/readpixels.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "Resources.h"
-#include "SkCodec.h"
-#include "SkColorSpace.h"
-#include "SkColorSpacePriv.h"
-#include "SkHalf.h"
-#include "SkImage.h"
-#include "SkImageInfoPriv.h"
-#include "SkPictureRecorder.h"
+#include "gm/gm.h"
+#include "include/codec/SkCodec.h"
+#include "include/core/SkColorSpace.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/private/SkHalf.h"
+#include "include/private/SkImageInfoPriv.h"
+#include "src/core/SkColorSpacePriv.h"
+#include "tools/Resources.h"
 
 static const int kWidth = 64;
 static const int kHeight = 64;
diff --git a/gm/recordopts.cpp b/gm/recordopts.cpp
index c860620..db553f9 100644
--- a/gm/recordopts.cpp
+++ b/gm/recordopts.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "GrContext.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkPictureRecorder.h"
-#include "SkTableColorFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkPictureImageFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkPictureImageFilter.h"
+#include "include/effects/SkTableColorFilter.h"
+#include "include/gpu/GrContext.h"
 
 constexpr int kTestRectSize = 50;
 constexpr int kDetectorGreenValue = 50;
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index fa92d5f..c32b3f9 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -7,16 +7,16 @@
 
 // This test only works with the GPU backend.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrBackendSurface.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrGpu.h"
-#include "gl/GrGLContext.h"
-#include "SkBitmap.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrBackendSurface.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrGpu.h"
+#include "src/gpu/gl/GrGLContext.h"
 
 namespace skiagm {
 class RectangleTexture : public GpuGM {
diff --git a/gm/rects.cpp b/gm/rects.cpp
index b875d83..2bf3e7b 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurDrawLooper.h"
-#include "SkBlurMask.h"
-#include "SkBlurMaskFilter.h"
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "SkMatrix.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMatrix.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTArray.h"
+#include "src/core/SkBlurMask.h"
 
 namespace skiagm {
 
diff --git a/gm/repeated_bitmap.cpp b/gm/repeated_bitmap.cpp
index 154810d..cc95266 100644
--- a/gm/repeated_bitmap.cpp
+++ b/gm/repeated_bitmap.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkImage.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 static skiagm::DrawResult draw_rotated_image(SkCanvas* canvas, const SkImage* image,
                                              SkString* errorMsg) {
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index 625e098..7d64f4c 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColor.h"
-#include "SkImageSource.h"
-#include "SkRefCnt.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkImageSource.h"
 
 namespace skiagm {
 
diff --git a/gm/roundrects.cpp b/gm/roundrects.cpp
index dccfd36..61cf2c9 100644
--- a/gm/roundrects.cpp
+++ b/gm/roundrects.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurDrawLooper.h"
-#include "SkBlurMaskFilter.h"
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "SkMatrix.h"
-#include "SkRRect.h"
-#include "SkRandom.h"
-#include "SkRect.h"
-#include "SkTArray.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMatrix.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkRect.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTArray.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/rrect.cpp b/gm/rrect.cpp
index c7d9cca..51dd501 100644
--- a/gm/rrect.cpp
+++ b/gm/rrect.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkRRect.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
+#include "tools/ToolUtils.h"
 
 typedef void (*InsetProc)(const SkRRect&, SkScalar dx, SkScalar dy, SkRRect*);
 
diff --git a/gm/rrectclipdrawpaint.cpp b/gm/rrectclipdrawpaint.cpp
index 0636a2b..86b2c5f 100644
--- a/gm/rrectclipdrawpaint.cpp
+++ b/gm/rrectclipdrawpaint.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkGradientShader.h"
 
 // Exercises code in GrRenderTargetContext that attempts to replace a rrect clip/draw paint with
 // draw rrect.
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index 52df12a..a0b56ce 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "GrCaps.h"
-#include "GrContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "effects/GrRRectEffect.h"
-#include "ops/GrDrawOp.h"
-#include "ops/GrFillRectOp.h"
-#include "SkRRect.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrCaps.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/effects/GrRRectEffect.h"
+#include "src/gpu/ops/GrDrawOp.h"
+#include "src/gpu/ops/GrFillRectOp.h"
 
 namespace skiagm {
 
diff --git a/gm/runtimecolorfilter.cpp b/gm/runtimecolorfilter.cpp
index 70b7ee9..a15dcc9 100644
--- a/gm/runtimecolorfilter.cpp
+++ b/gm/runtimecolorfilter.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkColorFilterPriv.h"
-#include "SkImage.h"
-#include "SkReadBuffer.h"
-#include "ToolUtils.h"
-#include "effects/GrSkSLFP.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "src/core/SkColorFilterPriv.h"
+#include "src/core/SkReadBuffer.h"
+#include "src/gpu/effects/GrSkSLFP.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 const char* SKSL_TEST_SRC = R"(
     layout(ctype=float) in uniform half b;
diff --git a/gm/samplelocations.cpp b/gm/samplelocations.cpp
index a9a787a..017a1c3 100644
--- a/gm/samplelocations.cpp
+++ b/gm/samplelocations.cpp
@@ -5,24 +5,24 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 #if SK_SUPPORT_GPU
 
-#include "GrClip.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrMemoryPool.h"
-#include "GrOpFlushState.h"
-#include "GrRecordingContext.h"
-#include "GrRecordingContextPriv.h"
-#include "GrRenderTargetContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "glsl/GrGLSLFragmentShaderBuilder.h"
-#include "glsl/GrGLSLGeometryProcessor.h"
-#include "glsl/GrGLSLProgramBuilder.h"
-#include "glsl/GrGLSLVarying.h"
-#include "glsl/GrGLSLVertexGeoBuilder.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrRecordingContext.h"
+#include "src/gpu/GrClip.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrMemoryPool.h"
+#include "src/gpu/GrOpFlushState.h"
+#include "src/gpu/GrRecordingContextPriv.h"
+#include "src/gpu/GrRenderTargetContext.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h"
+#include "src/gpu/glsl/GrGLSLGeometryProcessor.h"
+#include "src/gpu/glsl/GrGLSLProgramBuilder.h"
+#include "src/gpu/glsl/GrGLSLVarying.h"
+#include "src/gpu/glsl/GrGLSLVertexGeoBuilder.h"
 
 namespace skiagm {
 
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index 3653bfd..ed829df 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
-#include "SkShader.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkShader.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/savelayer.cpp b/gm/savelayer.cpp
index 2707422..43bf0c9 100644
--- a/gm/savelayer.cpp
+++ b/gm/savelayer.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvasPriv.h"
-#include "SkShaderMaskFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/effects/SkShaderMaskFilter.h"
+#include "src/core/SkCanvasPriv.h"
+#include "tools/ToolUtils.h"
 
 // This GM tests out the deprecated Android-specific unclipped saveLayer "feature".
 // In particular, it attempts to compare the performance of unclipped saveLayers with alternatives.
@@ -103,7 +103,7 @@
     }
 };
 
-#include "Resources.h"
+#include "tools/Resources.h"
 
 // Test kInitWithPrevious_SaveLayerFlag by drawing an image, save a layer with the flag, which
 // should seed the layer with the image (from below). Then we punch a hole in the layer and
@@ -123,11 +123,11 @@
     canvas->restore();
 };
 
-#include "SkBlurImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkSurface.h"
+#include "include/core/SkPicture.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
+#include "include/effects/SkGradientShader.h"
 
 static void draw_mask(SkCanvas* canvas, int size) {
     const SkScalar cx = size * SK_ScalarHalf,
@@ -334,9 +334,9 @@
     canvas->restore();
 }
 
-#include "SkFont.h"
-#include "SkGradientShader.h"
-#include "SkTextBlob.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkTextBlob.h"
+#include "include/effects/SkGradientShader.h"
 
 static void draw_cell(SkCanvas* canvas, sk_sp<SkTextBlob> blob, SkColor c, SkScalar w, SkScalar h,
                       bool useDrawBehind) {
diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp
index c082dcd..365d915 100644
--- a/gm/scaledemoji.cpp
+++ b/gm/scaledemoji.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkFontMetrics.h"
-#include "SkStream.h"
-#include "SkTextBlob.h"
-#include "SkTo.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFontMetrics.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/private/SkTo.h"
+#include "tools/Resources.h"
 
 static sk_sp<SkTextBlob> make_hpos_test_blob_utf8(const char* text, const SkFont& font) {
     constexpr SkTextEncoding enc = SkTextEncoding::kUTF8;
diff --git a/gm/scaledemoji_rendering.cpp b/gm/scaledemoji_rendering.cpp
index 3440bc6..f64e7cc 100644
--- a/gm/scaledemoji_rendering.cpp
+++ b/gm/scaledemoji_rendering.cpp
@@ -5,15 +5,15 @@
 * found in the LICENSE file.
 */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkFontMetrics.h"
-#include "SkStream.h"
-#include "SkTo.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFontMetrics.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTypeface.h"
+#include "include/private/SkTo.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 class ScaledEmojiRenderingGM : public GM {
diff --git a/gm/scaledstrokes.cpp b/gm/scaledstrokes.cpp
index 1096fcb..e83ec4f 100644
--- a/gm/scaledstrokes.cpp
+++ b/gm/scaledstrokes.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkRRect.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRRect.h"
 
 class ScaledStrokesGM : public skiagm::GM {
 public:
diff --git a/gm/shadermaskfilter.cpp b/gm/shadermaskfilter.cpp
index 362a46a..5ea72b4 100644
--- a/gm/shadermaskfilter.cpp
+++ b/gm/shadermaskfilter.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlendModePriv.h"
-#include "SkCanvas.h"
-#include "SkImage.h"
-#include "SkMaskFilter.h"
-#include "SkPictureRecorder.h"
-#include "SkShaderMaskFilter.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/effects/SkShaderMaskFilter.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/core/SkBlendModePriv.h"
+#include "tools/ToolUtils.h"
 
 static void draw_masked_image(SkCanvas* canvas, const SkImage* image, SkScalar x, SkScalar y,
                               const SkImage* mask, sk_sp<SkMaskFilter> outer, SkBlendMode mode) {
@@ -33,7 +33,7 @@
     canvas->drawImage(image, x, y, &paint);
 }
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 static sk_sp<SkShader> make_shader(const SkRect& r) {
     const SkPoint pts[] = {
         { r.fLeft, r.fTop }, { r.fRight, r.fBottom },
@@ -57,7 +57,7 @@
     canvas->drawOval(r, paint);
 }
 
-#include "Resources.h"
+#include "tools/Resources.h"
 DEF_SIMPLE_GM_CAN_FAIL(shadermaskfilter_image, canvas, errorMsg, 560, 370) {
     canvas->scale(1.25f, 1.25f);
 
@@ -86,8 +86,8 @@
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-#include "SkPictureRecorder.h"
-#include "SkPath.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPictureRecorder.h"
 
 static sk_sp<SkMaskFilter> make_path_mf(const SkPath& path, unsigned alpha) {
     SkPaint paint;
@@ -172,9 +172,9 @@
     canvas->restore();
 }
 
-#include "SkSurface.h"
-#include "SkBlurImageFilter.h"
-#include "SkMaskFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
 static sk_sp<SkImage> make_circle_image(SkCanvas* canvas, SkScalar radius, int margin) {
     const int n = SkScalarCeilToInt(radius) * 2 + margin * 2;
     auto      surf = ToolUtils::makeSurface(canvas, SkImageInfo::MakeN32Premul(n, n));
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index 1e54adc..37b6485 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/shadows.cpp b/gm/shadows.cpp
index 4cd1076..f1ef671 100644
--- a/gm/shadows.cpp
+++ b/gm/shadows.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkBlurDrawLooper.h"
-#include "SkBlurMask.h"
-#include "SkColorFilter.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "src/core/SkBlurMask.h"
 
 namespace skiagm {
 
diff --git a/gm/shadowutils.cpp b/gm/shadowutils.cpp
index b623acb..0c7bbc1 100644
--- a/gm/shadowutils.cpp
+++ b/gm/shadowutils.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkResourceCache.h"
-#include "SkShadowUtils.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/utils/SkShadowUtils.h"
+#include "src/core/SkResourceCache.h"
 
 void draw_shadow(SkCanvas* canvas, const SkPath& path, SkScalar height, SkColor color,
                  SkPoint3 lightPos, SkScalar lightR, bool isAmbient, uint32_t flags) {
diff --git a/gm/shallowgradient.cpp b/gm/shallowgradient.cpp
index 2cca3c1..bc565c8 100644
--- a/gm/shallowgradient.cpp
+++ b/gm/shallowgradient.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 typedef sk_sp<SkShader> (*MakeShaderProc)(const SkColor[], int count, const SkSize&);
 
diff --git a/gm/shapes.cpp b/gm/shapes.cpp
index 63ddf2a..55afb62 100644
--- a/gm/shapes.cpp
+++ b/gm/shapes.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkRandom.h"
-#include "SkRRect.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/sharedcorners.cpp b/gm/sharedcorners.cpp
index 8d0e434..64b74d7 100644
--- a/gm/sharedcorners.cpp
+++ b/gm/sharedcorners.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPoint.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPoint.h"
+#include "tools/ToolUtils.h"
 
 #include <array>
 #include <vector>
diff --git a/gm/showmiplevels.cpp b/gm/showmiplevels.cpp
index ce3c119..7d072b2 100644
--- a/gm/showmiplevels.cpp
+++ b/gm/showmiplevels.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkColorPriv.h"
-#include "SkGradientShader.h"
-#include "SkTypeface.h"
-#include "SkStream.h"
-#include "SkPaint.h"
-#include "SkMipMap.h"
-#include "Resources.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "src/core/SkMipMap.h"
+#include "tools/Resources.h"
+#include "tools/Resources.h"
 
 #define SHOW_MIP_COLOR  0xFF000000
 
@@ -51,7 +51,7 @@
     return bm;
 }
 
-#include "SkNx.h"
+#include "include/private/SkNx.h"
 static SkBitmap make_bitmap3(int w, int h) {
     SkBitmap bm;
     bm.allocN32Pixels(w, h);
diff --git a/gm/simple_magnification.cpp b/gm/simple_magnification.cpp
index 3311f85..b942632 100644
--- a/gm/simple_magnification.cpp
+++ b/gm/simple_magnification.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColorPriv.h"
-#include "SkImageSource.h"
-#include "SkMagnifierImageFilter.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkMagnifierImageFilter.h"
 
 static sk_sp<SkImage> make_image(GrContext* context, int size, GrSurfaceOrigin origin) {
     if (context) {
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index b534b84..b9fc5bf 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkAAClip.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "src/core/SkAAClip.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/simplerect.cpp b/gm/simplerect.cpp
index 8076bc9..6e7550d 100644
--- a/gm/simplerect.cpp
+++ b/gm/simplerect.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkBlurMask.h"
-#include "SkBlurMaskFilter.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "src/core/SkBlurMask.h"
+#include "tools/ToolUtils.h"
 
 class SimpleRectGM : public skiagm::GM {
 public:
diff --git a/gm/skbug1719.cpp b/gm/skbug1719.cpp
index 0d0b3f2..1c09e57 100644
--- a/gm/skbug1719.cpp
+++ b/gm/skbug1719.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkColorFilter.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "tools/ToolUtils.h"
 
 /**
  * This test exercises bug 1719. An anti-aliased blurred path is rendered through a soft clip. On
diff --git a/gm/skbug_257.cpp b/gm/skbug_257.cpp
index 296babf..c70ccc1 100644
--- a/gm/skbug_257.cpp
+++ b/gm/skbug_257.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkImage.h"
-#include "SkRRect.h"
-#include "SkTextBlob.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkRRect.h"
+#include "include/core/SkTextBlob.h"
+#include "tools/ToolUtils.h"
 
 static void rotated_checkerboard_shader(SkPaint* paint,
                                         SkColor c1,
diff --git a/gm/skbug_4868.cpp b/gm/skbug_4868.cpp
index 4f33715..89eb4c2 100644
--- a/gm/skbug_4868.cpp
+++ b/gm/skbug_4868.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 // clipRect and drawLine should line up exactly when they use the same point.
 // When SkPDF rounds large floats, this doesn't always happen.
diff --git a/gm/skbug_5321.cpp b/gm/skbug_5321.cpp
index 00021c8..73fb268 100644
--- a/gm/skbug_5321.cpp
+++ b/gm/skbug_5321.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkTextBlob.h"
+#include "gm/gm.h"
+#include "include/core/SkTextBlob.h"
 
 // https://bugs.skia.org/5321
 // two strings should draw the same.  PDF did not.
diff --git a/gm/skbug_8664.cpp b/gm/skbug_8664.cpp
index 4feba4b..4b24b80 100644
--- a/gm/skbug_8664.cpp
+++ b/gm/skbug_8664.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "Resources.h"
+#include "tools/Resources.h"
 
 DEF_SIMPLE_GM(skbug_8664, canvas, 830, 550) {
     const struct {
diff --git a/gm/skbug_8955.cpp b/gm/skbug_8955.cpp
index 82c94c2..a3c33f7 100644
--- a/gm/skbug_8955.cpp
+++ b/gm/skbug_8955.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkFont.h"
-#include "SkPaint.h"
-#include "SkTextBlob.h"
+#include "include/core/SkFont.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkTextBlob.h"
 
 DEF_SIMPLE_GM(skbug_8955, canvas, 100, 100) {
     SkPaint p;
diff --git a/gm/skinning.cpp b/gm/skinning.cpp
index a3eb71b..7b98653 100644
--- a/gm/skinning.cpp
+++ b/gm/skinning.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkVertices.h"
-#include "SkPoint.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkVertices.h"
 
 #include <iostream>
 #include <vector>
diff --git a/gm/smallarc.cpp b/gm/smallarc.cpp
index 25755ac..c81120d 100644
--- a/gm/smallarc.cpp
+++ b/gm/smallarc.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
 
 // this draws a small arc scaled up
 // see https://code.google.com/p/chromium/issues/detail?id=102411
diff --git a/gm/smallpaths.cpp b/gm/smallpaths.cpp
index 69d7c08..430c1b2 100644
--- a/gm/smallpaths.cpp
+++ b/gm/smallpaths.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
 
 typedef SkScalar (*MakePathProc)(SkPath*);
 
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp
index 38fe9f4..5459943 100644
--- a/gm/spritebitmap.cpp
+++ b/gm/spritebitmap.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkBlurImageFilter.h"
-#include "SkRSXform.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkRSXform.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkBlurImageFilter.h"
 
 static void make_bm(SkBitmap* bm) {
     bm->allocN32Pixels(100, 100);
diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp
index fb9b434..2ba977f 100644
--- a/gm/srcmode.cpp
+++ b/gm/srcmode.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkPath.h"
-#include "SkSurface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 #define W   SkIntToScalar(80)
 #define H   SkIntToScalar(60)
diff --git a/gm/srgb.cpp b/gm/srgb.cpp
index 3808563..4968a67 100644
--- a/gm/srgb.cpp
+++ b/gm/srgb.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkImage.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkImage.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 DEF_SIMPLE_GM(srgb_colorfilter, canvas, 512, 256*3) {
     auto img = GetResourceAsImage("images/mandrill_256.png");
diff --git a/gm/stlouisarch.cpp b/gm/stlouisarch.cpp
index 80d6a4a..931af55 100644
--- a/gm/stlouisarch.cpp
+++ b/gm/stlouisarch.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkTArray.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/private/SkTArray.h"
 
 namespace skiagm {
 
diff --git a/gm/stringart.cpp b/gm/stringart.cpp
index ccd84f8..850298b 100644
--- a/gm/stringart.cpp
+++ b/gm/stringart.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "AnimTimer.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "tools/ToolUtils.h"
+#include "tools/timer/AnimTimer.h"
 
 // Reproduces https://code.google.com/p/chromium/issues/detail?id=279014
 
@@ -87,7 +87,7 @@
 /////////////////////////////////////////////////////////////////////////////////////////////////
 
 #if 0
-#include "Skottie.h"
+#include "modules/skottie/include/Skottie.h"
 
 class SkottieGM : public skiagm::GM {
     enum {
diff --git a/gm/stroke_rect_shader.cpp b/gm/stroke_rect_shader.cpp
index 4833741..a648c98 100644
--- a/gm/stroke_rect_shader.cpp
+++ b/gm/stroke_rect_shader.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkGradientShader.h"
+#include "gm/gm.h"
+#include "include/effects/SkGradientShader.h"
 
 namespace skiagm {
 
diff --git a/gm/strokedlines.cpp b/gm/strokedlines.cpp
index 13862bc..7d35138 100644
--- a/gm/strokedlines.cpp
+++ b/gm/strokedlines.cpp
@@ -5,14 +5,14 @@
  * found in the LICENSE file.
  */
 
-#include "SkDashPathEffect.h"
-#include "SkGradientShader.h"
-#include "SkMaskFilter.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkPoint3.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPoint3.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/ToolUtils.h"
 
 constexpr int kNumColumns = 6;
 constexpr int kNumRows = 8;
diff --git a/gm/strokefill.cpp b/gm/strokefill.cpp
index afce0c4..abf0d8e 100644
--- a/gm/strokefill.cpp
+++ b/gm/strokefill.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPathPriv.h"
-#include "SkTextFormatParams.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkTypeface.h"
+#include "src/core/SkPathPriv.h"
+#include "src/core/SkTextFormatParams.h"
+#include "tools/ToolUtils.h"
 
 /* Generated on a Mac with:
  * paint.setTypeface(SkTypeface::CreateByName("Papyrus"));
diff --git a/gm/strokerect.cpp b/gm/strokerect.cpp
index 7978f66..3511664 100644
--- a/gm/strokerect.cpp
+++ b/gm/strokerect.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 #define STROKE_WIDTH    SkIntToScalar(20)
 
diff --git a/gm/strokerects.cpp b/gm/strokerects.cpp
index 3b1db5e..1415a1d 100644
--- a/gm/strokerects.cpp
+++ b/gm/strokerects.cpp
@@ -7,8 +7,8 @@
 
 
 
-#include "gm.h"
-#include "SkRandom.h"
+#include "gm/gm.h"
+#include "include/utils/SkRandom.h"
 
 namespace skiagm {
 
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 588ea06..2f5339d 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkDashPathEffect.h"
-#include "SkParsePath.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "include/utils/SkParsePath.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 #define W   400
 #define H   400
diff --git a/gm/stroketext.cpp b/gm/stroketext.cpp
index bff1228..15fb798 100644
--- a/gm/stroketext.cpp
+++ b/gm/stroketext.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkDashPathEffect.h"
-#include "SkTextBlob.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkTextBlob.h"
+#include "include/effects/SkDashPathEffect.h"
+#include "tools/ToolUtils.h"
 
 static void test_nulldev(SkCanvas* canvas) {
     SkBitmap bm;
diff --git a/gm/subsetshader.cpp b/gm/subsetshader.cpp
index aa27c79..a54234e 100644
--- a/gm/subsetshader.cpp
+++ b/gm/subsetshader.cpp
@@ -5,10 +5,10 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkBitmap.h"
-#include "SkShader.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkShader.h"
+#include "tools/Resources.h"
 
 DEF_SIMPLE_GM_CAN_FAIL(bitmap_subset_shader, canvas, errorMsg, 256, 256) {
     canvas->clear(SK_ColorWHITE);
diff --git a/gm/surface.cpp b/gm/surface.cpp
index 8606206..f39e1a4 100644
--- a/gm/surface.cpp
+++ b/gm/surface.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkGradientShader.h"
-#include "SkSurface.h"
-#include "SkSurfaceProps.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkSurfaceProps.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
 #define W 200
 #define H 100
diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp
index 6fe2aeb..1b47936 100644
--- a/gm/tablecolorfilter.cpp
+++ b/gm/tablecolorfilter.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkGradientShader.h"
-#include "SkTableColorFilter.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkTableColorFilter.h"
 
 static sk_sp<SkShader> make_shader0(int w, int h) {
     SkPoint pts[] = { {0, 0}, {SkIntToScalar(w), SkIntToScalar(h)} };
diff --git a/gm/tallstretchedbitmaps.cpp b/gm/tallstretchedbitmaps.cpp
index a16f54a..550efed 100644
--- a/gm/tallstretchedbitmaps.cpp
+++ b/gm/tallstretchedbitmaps.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkTo.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTo.h"
+#include "include/utils/SkRandom.h"
 
 int make_bm(SkBitmap* bm, int height) {
     constexpr int kRadius = 22;
diff --git a/gm/testgradient.cpp b/gm/testgradient.cpp
index b2a4508..3d1c4d1 100644
--- a/gm/testgradient.cpp
+++ b/gm/testgradient.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkRRect.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkRRect.h"
+#include "include/effects/SkGradientShader.h"
 
 class TestGradientGM : public skiagm::GM {
 public:
diff --git a/gm/text_scale_skew.cpp b/gm/text_scale_skew.cpp
index 977f9e3..36711fd 100644
--- a/gm/text_scale_skew.cpp
+++ b/gm/text_scale_skew.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkTextUtils.h"
+#include "gm/gm.h"
+#include "include/utils/SkTextUtils.h"
 
 // http://bug.skia.org/7315
 DEF_SIMPLE_GM(text_scale_skew, canvas, 256, 128) {
diff --git a/gm/textblob.cpp b/gm/textblob.cpp
index 6d6bfab..22cad6d 100644
--- a/gm/textblob.cpp
+++ b/gm/textblob.cpp
@@ -5,22 +5,22 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkColor.h"
-#include "SkFontStyle.h"
-#include "SkPaint.h"
-#include "SkPoint.h"
-#include "SkRect.h"
-#include "SkRefCnt.h"
-#include "SkScalar.h"
-#include "SkSize.h"
-#include "SkString.h"
-#include "SkTDArray.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
-#include "SkTypes.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColor.h"
+#include "include/core/SkFontStyle.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkRect.h"
+#include "include/core/SkRefCnt.h"
+#include "include/core/SkScalar.h"
+#include "include/core/SkSize.h"
+#include "include/core/SkString.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/core/SkTypes.h"
+#include "include/private/SkTDArray.h"
+#include "tools/ToolUtils.h"
 
 #include <cstring>
 
diff --git a/gm/textblobblockreordering.cpp b/gm/textblobblockreordering.cpp
index b847c29..e0a1778 100644
--- a/gm/textblobblockreordering.cpp
+++ b/gm/textblobblockreordering.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkCanvas.h"
-#include "SkTextBlob.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkTextBlob.h"
 
 namespace skiagm {
 class TextBlobBlockReordering : public GM {
diff --git a/gm/textblobcolortrans.cpp b/gm/textblobcolortrans.cpp
index faaf936..6bd0903 100644
--- a/gm/textblobcolortrans.cpp
+++ b/gm/textblobcolortrans.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkStream.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 class TextBlobColorTrans : public GM {
diff --git a/gm/textblobgeometrychange.cpp b/gm/textblobgeometrychange.cpp
index 97dc6fc..7d6c94e 100644
--- a/gm/textblobgeometrychange.cpp
+++ b/gm/textblobgeometrychange.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkCanvas.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
 
 // This tests that we don't try to reuse textblobs from the GPU textblob cache across pixel geometry
 // changes when we have LCD.  crbug/486744
diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp
index 23b726c..9b082ba 100644
--- a/gm/textbloblooper.cpp
+++ b/gm/textbloblooper.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Sk2DPathEffect.h"
-#include "SkBlurMask.h"
-#include "SkColorMatrixFilter.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkGraphics.h"
-#include "SkLayerDrawLooper.h"
-#include "SkMaskFilter.h"
-#include "SkRandom.h"
-#include "SkTextBlob.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkGraphics.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkTextBlob.h"
+#include "include/effects/Sk2DPathEffect.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/effects/SkLayerDrawLooper.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkBlurMask.h"
 
 namespace skiagm {
 
diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp
index 51e560d..704b063 100644
--- a/gm/textblobmixedsizes.cpp
+++ b/gm/textblobmixedsizes.cpp
@@ -5,20 +5,20 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkBlurMask.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkImage.h"
-#include "SkMaskFilter.h"
-#include "SkRandom.h"
-#include "SkStream.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkImage.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/utils/SkRandom.h"
+#include "src/core/SkBlurMask.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 class TextBlobMixedSizes : public GM {
diff --git a/gm/textblobrandomfont.cpp b/gm/textblobrandomfont.cpp
index cebc0bf..2963997 100644
--- a/gm/textblobrandomfont.cpp
+++ b/gm/textblobrandomfont.cpp
@@ -5,19 +5,19 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "RandomScalerContext.h"
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkStream.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
+#include "tools/fonts/RandomScalerContext.h"
 
-#include "GrContext.h"
+#include "include/gpu/GrContext.h"
 
 namespace skiagm {
 class TextBlobRandomFont : public GpuGM {
diff --git a/gm/textblobshader.cpp b/gm/textblobshader.cpp
index 358005a..49e98c3 100644
--- a/gm/textblobshader.cpp
+++ b/gm/textblobshader.cpp
@@ -5,16 +5,16 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkPoint.h"
-#include "SkShader.h"
-#include "SkTextBlob.h"
-#include "SkTDArray.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPoint.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/private/SkTDArray.h"
 
 // This GM exercises drawTextBlob offset vs. shader space behavior.
 class TextBlobShaderGM : public skiagm::GM {
diff --git a/gm/textblobtransforms.cpp b/gm/textblobtransforms.cpp
index 6977070..10e21c9 100644
--- a/gm/textblobtransforms.cpp
+++ b/gm/textblobtransforms.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "Resources.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkStream.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkStream.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/effects/SkGradientShader.h"
+#include "tools/Resources.h"
 
 namespace skiagm {
 class TextBlobTransforms : public GM {
diff --git a/gm/textblobuseaftergpufree.cpp b/gm/textblobuseaftergpufree.cpp
index 4c70561..fd3f36f 100644
--- a/gm/textblobuseaftergpufree.cpp
+++ b/gm/textblobuseaftergpufree.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkCanvas.h"
-#include "SkSurface.h"
-#include "SkTextBlob.h"
-#include "GrContext.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkSurface.h"
+#include "include/core/SkTextBlob.h"
+#include "include/gpu/GrContext.h"
 
 // This tests that we correctly regenerate textblobs after freeing all gpu resources crbug/491350
 namespace skiagm {
diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp
index eafa0cf..1570d0d 100644
--- a/gm/texteffects.cpp
+++ b/gm/texteffects.cpp
@@ -5,17 +5,17 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkBlurMask.h"
-#include "SkBlurMaskFilter.h"
-#include "SkReadBuffer.h"
-#include "SkTextBlob.h"
-#include "SkTo.h"
-#include "SkWriteBuffer.h"
+#include "include/core/SkTextBlob.h"
+#include "include/effects/SkBlurMaskFilter.h"
+#include "include/private/SkTo.h"
+#include "src/core/SkBlurMask.h"
+#include "src/core/SkReadBuffer.h"
+#include "src/core/SkWriteBuffer.h"
 
-#include "Sk2DPathEffect.h"
+#include "include/effects/Sk2DPathEffect.h"
 
 static SkPath create_underline(const SkTDArray<SkScalar>& intersections,
         SkScalar last, SkScalar finalPos,
diff --git a/gm/texturedomaineffect.cpp b/gm/texturedomaineffect.cpp
index 0a6361a..86794eb 100644
--- a/gm/texturedomaineffect.cpp
+++ b/gm/texturedomaineffect.cpp
@@ -7,18 +7,18 @@
 
 // This test only works with the GPU backend.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrProxyProvider.h"
-#include "GrRenderTargetContextPriv.h"
-#include "SkBitmap.h"
-#include "SkGradientShader.h"
-#include "SkSurface.h"
-#include "effects/GrTextureDomain.h"
-#include "ops/GrDrawOp.h"
-#include "ops/GrFillRectOp.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrContext.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrProxyProvider.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/effects/GrTextureDomain.h"
+#include "src/gpu/ops/GrDrawOp.h"
+#include "src/gpu/ops/GrFillRectOp.h"
 
 namespace skiagm {
 /**
diff --git a/gm/thinconcavepaths.cpp b/gm/thinconcavepaths.cpp
index 161333e..7494bb0 100644
--- a/gm/thinconcavepaths.cpp
+++ b/gm/thinconcavepaths.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkPath.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
 
 namespace {
 // Test thin stroked rect (stroked "by hand", not by stroking).
diff --git a/gm/thinrects.cpp b/gm/thinrects.cpp
index e3d25fe..e66b71f 100644
--- a/gm/thinrects.cpp
+++ b/gm/thinrects.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 namespace skiagm {
 
diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp
index a4f2f13..3d243d6 100644
--- a/gm/thinstrokedrects.cpp
+++ b/gm/thinstrokedrects.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
 namespace skiagm {
 
diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp
index 4bf827f..89430e0 100644
--- a/gm/tiledscaledbitmap.cpp
+++ b/gm/tiledscaledbitmap.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "Resources.h"
-#include "SkBitmap.h"
-#include "SkPaint.h"
-#include "SkShader.h"
-#include "SkStream.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkShader.h"
+#include "include/core/SkStream.h"
+#include "tools/Resources.h"
 
  /***
   *
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index c61b655..a3f4f1e 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkColorFilterImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkTileImageFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkColorFilterImageFilter.h"
+#include "include/effects/SkColorMatrixFilter.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkTileImageFilter.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 400
 #define HEIGHT 200
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index e9af37b..79e9f20 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -4,20 +4,20 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkColorFilter.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
-#include "SkRegion.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "SkUTF.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRegion.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/utils/SkUTF.h"
+#include "tools/ToolUtils.h"
 // effects
-#include "SkGradientShader.h"
-#include "SkBlurDrawLooper.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "include/effects/SkGradientShader.h"
 
-#include "Resources.h"
+#include "tools/Resources.h"
 
 static void makebm(SkBitmap* bm, SkColorType ct, int w, int h) {
     bm->allocPixels(SkImageInfo::Make(w, h, ct, kPremul_SkAlphaType));
@@ -258,7 +258,7 @@
 
 ////////////////////
 
-#include "SkGradientShader.h"
+#include "include/effects/SkGradientShader.h"
 
 DEF_SIMPLE_GM(tilemode_decal, canvas, 720, 1100) {
     auto img = GetResourceAsImage("images/mandrill_128.png");
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 21d4754..720ba00 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -4,19 +4,19 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkColorFilter.h"
-#include "SkMaskFilter.h"
-#include "SkPath.h"
-#include "SkRegion.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "SkUTF.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkRegion.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/utils/SkUTF.h"
+#include "tools/ToolUtils.h"
 
 // effects
-#include "SkGradientShader.h"
-#include "SkBlurDrawLooper.h"
+#include "include/effects/SkBlurDrawLooper.h"
+#include "include/effects/SkGradientShader.h"
 
 static void makebm(SkBitmap* bm, SkColorType ct, int w, int h) {
     bm->allocPixels(SkImageInfo::Make(w, h, ct, kPremul_SkAlphaType));
diff --git a/gm/tinybitmap.cpp b/gm/tinybitmap.cpp
index 0d99f9e..c8ee8b3 100644
--- a/gm/tinybitmap.cpp
+++ b/gm/tinybitmap.cpp
@@ -4,12 +4,12 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
-#include "SkUTF.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
+#include "src/utils/SkUTF.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/transparency.cpp b/gm/transparency.cpp
index 645dfb9..a2f5f81 100644
--- a/gm/transparency.cpp
+++ b/gm/transparency.cpp
@@ -5,9 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "SkGradientShader.h"
-#include "SkSurface.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
 
 static void make_transparency(SkCanvas* canvas, SkScalar width, SkScalar height) {
     SkPoint pts[2];
diff --git a/gm/trickycubicstrokes.cpp b/gm/trickycubicstrokes.cpp
index 636aaf1..781601f 100644
--- a/gm/trickycubicstrokes.cpp
+++ b/gm/trickycubicstrokes.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkGeometry.h"
-#include "SkPath.h"
-#include "SkPaint.h"
-#include "SkStrokeRec.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPaint.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkStrokeRec.h"
+#include "src/core/SkGeometry.h"
 
 static constexpr float kStrokeWidth = 40;
 static constexpr int kCellSize = 200;
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index 35aec97..d9a702f 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -5,18 +5,18 @@
  * found in the LICENSE file.
  */
 
-#include "Resources.h"
-#include "SkBlurTypes.h"
-#include "SkCanvas.h"
-#include "SkFontStyle.h"
-#include "SkMaskFilter.h"
-#include "SkString.h"
-#include "SkSurfaceProps.h"
-#include "SkTextBlob.h"
-#include "SkTypeface.h"
-#include "SkTypes.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBlurTypes.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkFontStyle.h"
+#include "include/core/SkMaskFilter.h"
+#include "include/core/SkString.h"
+#include "include/core/SkSurfaceProps.h"
+#include "include/core/SkTextBlob.h"
+#include "include/core/SkTypeface.h"
+#include "include/core/SkTypes.h"
+#include "tools/Resources.h"
+#include "tools/ToolUtils.h"
 
 static void getGlyphPositions(const SkFont& font, const uint16_t glyphs[],
                              int count, SkScalar x, SkScalar y, SkPoint pos[]) {
diff --git a/gm/unpremul.cpp b/gm/unpremul.cpp
index 445a6ef..3d1bbaa 100644
--- a/gm/unpremul.cpp
+++ b/gm/unpremul.cpp
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkColor.h"
+#include "gm/gm.h"
+#include "include/core/SkColor.h"
 
 DEF_SIMPLE_GM(unpremul, canvas, 200, 200) {
     const SkColor color = 0xbf400000;
diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp
index 0aea8d8..21ff63d 100644
--- a/gm/variedtext.cpp
+++ b/gm/variedtext.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "SkCanvas.h"
-#include "SkPath.h"
-#include "SkRandom.h"
-#include "SkTypeface.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkTypeface.h"
+#include "include/utils/SkRandom.h"
+#include "tools/ToolUtils.h"
 
 /**
  * Draws text with random parameters. The text draws each get their own clip rect. It is also
diff --git a/gm/vertices.cpp b/gm/vertices.cpp
index bf5e884..796de47 100644
--- a/gm/vertices.cpp
+++ b/gm/vertices.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkGradientShader.h"
-#include "SkLocalMatrixShader.h"
-#include "SkRandom.h"
-#include "SkVertices.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkColorFilter.h"
+#include "include/core/SkVertices.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/utils/SkRandom.h"
+#include "src/shaders/SkLocalMatrixShader.h"
 
 static constexpr SkScalar kShaderSize = 40;
 static sk_sp<SkShader> make_shader1(SkScalar shaderScale) {
diff --git a/gm/verylargebitmap.cpp b/gm/verylargebitmap.cpp
index d6e3d96..0673b4d 100644
--- a/gm/verylargebitmap.cpp
+++ b/gm/verylargebitmap.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
-#include "gm.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkPath.h"
-#include "SkPictureRecorder.h"
-#include "SkSurface.h"
+#include "gm/gm.h"
+#include "include/core/SkCanvas.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkPictureRecorder.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
 
 static void draw(SkCanvas* canvas, int width, int height, SkColor colors[2]) {
     const SkPoint center = { SkIntToScalar(width)/2, SkIntToScalar(height)/2 };
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index 332abcc..77a1919 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -5,20 +5,20 @@
  * found in the LICENSE file.
  */
 
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "tools/ToolUtils.h"
 
-#include "SkColorPriv.h"
-#include "SkImageGenerator.h"
-#include "SkPath.h"
-#include "SkTextUtils.h"
-#include "SkYUVAIndex.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkImageGenerator.h"
+#include "include/core/SkPath.h"
+#include "include/core/SkYUVAIndex.h"
+#include "include/utils/SkTextUtils.h"
 
 #if SK_SUPPORT_GPU
-#include "GrBackendSurface.h"
-#include "GrContextPriv.h"
-#include "GrGpu.h"
-#include "SkImage_GpuYUVA.h"
+#include "include/gpu/GrBackendSurface.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrGpu.h"
+#include "src/image/SkImage_GpuYUVA.h"
 #endif
 
 static const int kTileWidthHeight = 128;
diff --git a/gm/windowrectangles.cpp b/gm/windowrectangles.cpp
index d2ec7e6..308d67b 100644
--- a/gm/windowrectangles.cpp
+++ b/gm/windowrectangles.cpp
@@ -5,21 +5,21 @@
  * found in the LICENSE file.
  */
 
-#include "SkClipStack.h"
-#include "SkRRect.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkRRect.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/core/SkClipStack.h"
+#include "tools/ToolUtils.h"
 
-#include "GrAppliedClip.h"
-#include "GrCaps.h"
-#include "GrContextPriv.h"
-#include "GrReducedClip.h"
-#include "GrRenderTargetContext.h"
-#include "GrRenderTargetContextPriv.h"
-#include "GrResourceProvider.h"
-#include "GrStencilClip.h"
-#include "effects/GrTextureDomain.h"
+#include "src/gpu/GrAppliedClip.h"
+#include "src/gpu/GrCaps.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrReducedClip.h"
+#include "src/gpu/GrRenderTargetContext.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/GrResourceProvider.h"
+#include "src/gpu/GrStencilClip.h"
+#include "src/gpu/effects/GrTextureDomain.h"
 
 constexpr static SkIRect kDeviceRect = {0, 0, 600, 600};
 constexpr static SkIRect kCoverRect = {50, 50, 550, 550};
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index a0d1da8..ac781e5 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -5,13 +5,13 @@
  * found in the LICENSE file.
  */
 
-#include "SkArithmeticImageFilter.h"
-#include "SkImage.h"
-#include "SkImageSource.h"
-#include "SkOffsetImageFilter.h"
-#include "SkXfermodeImageFilter.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkImage.h"
+#include "include/effects/SkArithmeticImageFilter.h"
+#include "include/effects/SkImageSource.h"
+#include "include/effects/SkOffsetImageFilter.h"
+#include "include/effects/SkXfermodeImageFilter.h"
+#include "tools/ToolUtils.h"
 
 #define WIDTH 600
 #define HEIGHT 700
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index df58a84..72118b5 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -5,11 +5,11 @@
  * found in the LICENSE file.
  */
 
-#include "SkBitmap.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "tools/ToolUtils.h"
 
 enum SrcType {
     //! A WxH image with a rectangle in the lower right.
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index df6127c..4df9e57 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -4,13 +4,13 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
-#include "SkBitmap.h"
-#include "SkBlendModePriv.h"
-#include "SkColorPriv.h"
-#include "SkShader.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkShader.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/core/SkBlendModePriv.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 45eb568..eb70e02 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -5,15 +5,15 @@
  * found in the LICENSE file.
  */
 
-#include "GrContext.h"
-#include "SkBitmap.h"
-#include "SkBlendModePriv.h"
-#include "SkColorPriv.h"
-#include "SkGradientShader.h"
-#include "SkSurface.h"
-#include "SkTextUtils.h"
-#include "ToolUtils.h"
-#include "gm.h"
+#include "gm/gm.h"
+#include "include/core/SkBitmap.h"
+#include "include/core/SkColorPriv.h"
+#include "include/core/SkSurface.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrContext.h"
+#include "include/utils/SkTextUtils.h"
+#include "src/core/SkBlendModePriv.h"
+#include "tools/ToolUtils.h"
 
 namespace skiagm {
 
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp
index 30d9129..badf4e2 100644
--- a/gm/yuvtorgbeffect.cpp
+++ b/gm/yuvtorgbeffect.cpp
@@ -7,20 +7,20 @@
 
 // This test only works with the GPU backend.
 
-#include "gm.h"
+#include "gm/gm.h"
 
-#include "GrClip.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
-#include "GrProxyProvider.h"
-#include "GrRenderTargetContextPriv.h"
-#include "GrTextureProxy.h"
-#include "SkBitmap.h"
-#include "SkGr.h"
-#include "SkGradientShader.h"
-#include "effects/GrYUVtoRGBEffect.h"
-#include "ops/GrDrawOp.h"
-#include "ops/GrFillRectOp.h"
+#include "include/core/SkBitmap.h"
+#include "include/effects/SkGradientShader.h"
+#include "include/gpu/GrContext.h"
+#include "include/private/GrTextureProxy.h"
+#include "src/gpu/GrClip.h"
+#include "src/gpu/GrContextPriv.h"
+#include "src/gpu/GrProxyProvider.h"
+#include "src/gpu/GrRenderTargetContextPriv.h"
+#include "src/gpu/SkGr.h"
+#include "src/gpu/effects/GrYUVtoRGBEffect.h"
+#include "src/gpu/ops/GrDrawOp.h"
+#include "src/gpu/ops/GrFillRectOp.h"
 
 #define YSIZE 8
 #define USIZE 4