Clean up physical coupling

Narrow the use of #include directives in hwui, replacing with forward
declarations where straightforward. Speeds compiles; doesn't do any
restructuring of code.

Change-Id: Icac2baffb5896f55d8c6718e9bd9d4bfa02d3ca0
diff --git a/libs/hwui/AmbientShadow.cpp b/libs/hwui/AmbientShadow.cpp
index cb3a002..278ed29 100644
--- a/libs/hwui/AmbientShadow.cpp
+++ b/libs/hwui/AmbientShadow.cpp
@@ -60,6 +60,7 @@
 #include "AmbientShadow.h"
 #include "ShadowTessellator.h"
 #include "Vertex.h"
+#include "VertexBuffer.h"
 #include "utils/MathUtils.h"
 
 namespace android {
diff --git a/libs/hwui/AmbientShadow.h b/libs/hwui/AmbientShadow.h
index 9660dc0..8eb1048f 100644
--- a/libs/hwui/AmbientShadow.h
+++ b/libs/hwui/AmbientShadow.h
@@ -19,13 +19,13 @@
 #define ANDROID_HWUI_AMBIENT_SHADOW_H
 
 #include "Debug.h"
-#include "OpenGLRenderer.h"
 #include "Vector.h"
-#include "VertexBuffer.h"
 
 namespace android {
 namespace uirenderer {
 
+class VertexBuffer;
+
 /**
  * AmbientShadow is used to calculate the ambient shadow value around a polygon.
  */
diff --git a/libs/hwui/Animator.cpp b/libs/hwui/Animator.cpp
index 8bf2107..a1bbc06 100644
--- a/libs/hwui/Animator.cpp
+++ b/libs/hwui/Animator.cpp
@@ -20,6 +20,7 @@
 #include <set>
 
 #include "AnimationContext.h"
+#include "Interpolator.h"
 #include "RenderNode.h"
 #include "RenderProperties.h"
 
diff --git a/libs/hwui/Animator.h b/libs/hwui/Animator.h
index 35a4a09..99f8956 100644
--- a/libs/hwui/Animator.h
+++ b/libs/hwui/Animator.h
@@ -19,10 +19,8 @@
 #include <cutils/compiler.h>
 #include <utils/RefBase.h>
 #include <utils/StrongPointer.h>
+#include <utils/Timers.h>
 
-#include "CanvasProperty.h"
-#include "Interpolator.h"
-#include "TreeInfo.h"
 #include "utils/Macros.h"
 
 namespace android {
@@ -30,6 +28,9 @@
 
 class AnimationContext;
 class BaseRenderNodeAnimator;
+class CanvasPropertyPrimitive;
+class CanvasPropertyPaint;
+class Interpolator;
 class RenderNode;
 class RenderProperties;
 
diff --git a/libs/hwui/AnimatorManager.cpp b/libs/hwui/AnimatorManager.cpp
index c28fb88..9a4ba21 100644
--- a/libs/hwui/AnimatorManager.cpp
+++ b/libs/hwui/AnimatorManager.cpp
@@ -17,7 +17,9 @@
 
 #include <algorithm>
 
+#include "Animator.h"
 #include "AnimationContext.h"
+#include "DamageAccumulator.h"
 #include "RenderNode.h"
 
 namespace android {
diff --git a/libs/hwui/AnimatorManager.h b/libs/hwui/AnimatorManager.h
index d03d427..fb75eb8 100644
--- a/libs/hwui/AnimatorManager.h
+++ b/libs/hwui/AnimatorManager.h
@@ -21,7 +21,6 @@
 #include <cutils/compiler.h>
 #include <utils/StrongPointer.h>
 
-#include "TreeInfo.h"
 #include "utils/Macros.h"
 
 namespace android {
@@ -30,6 +29,7 @@
 class AnimationHandle;
 class BaseRenderNodeAnimator;
 class RenderNode;
+class TreeInfo;
 
 // Responsible for managing the animators for a single RenderNode
 class AnimatorManager {
diff --git a/libs/hwui/AssetAtlas.cpp b/libs/hwui/AssetAtlas.cpp
index fc86e4f..faec5d2 100644
--- a/libs/hwui/AssetAtlas.cpp
+++ b/libs/hwui/AssetAtlas.cpp
@@ -18,6 +18,7 @@
 
 #include "AssetAtlas.h"
 #include "Caches.h"
+#include "Image.h"
 
 #include <GLES2/gl2ext.h>
 
diff --git a/libs/hwui/AssetAtlas.h b/libs/hwui/AssetAtlas.h
index 2ec556e..6f72793 100644
--- a/libs/hwui/AssetAtlas.h
+++ b/libs/hwui/AssetAtlas.h
@@ -27,7 +27,6 @@
 
 #include <SkBitmap.h>
 
-#include "Image.h"
 #include "Texture.h"
 #include "UvMapper.h"
 
@@ -35,6 +34,7 @@
 namespace uirenderer {
 
 class Caches;
+class Image;
 
 /**
  * An asset atlas holds a collection of framework bitmaps in a single OpenGL
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index f0bf7b2..478a3ec 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -21,6 +21,7 @@
 
 #include "Caches.h"
 #include "DisplayListRenderer.h"
+#include "GammaFontRenderer.h"
 #include "Properties.h"
 #include "LayerRenderer.h"
 #include "ShadowTessellator.h"
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 7aa628c..7bb5c4a 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -31,13 +31,13 @@
 
 #include <cutils/compiler.h>
 
+#include <SkPath.h>
+
 #include "thread/TaskProcessor.h"
 #include "thread/TaskManager.h"
 
 #include "AssetAtlas.h"
 #include "Extensions.h"
-#include "FontRenderer.h"
-#include "GammaFontRenderer.h"
 #include "TextureCache.h"
 #include "LayerCache.h"
 #include "RenderBufferCache.h"
@@ -55,6 +55,8 @@
 namespace android {
 namespace uirenderer {
 
+class GammaFontRenderer;
+
 ///////////////////////////////////////////////////////////////////////////////
 // Globals
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/DeferredLayerUpdater.h b/libs/hwui/DeferredLayerUpdater.h
index dda3e89..6ccffe1 100644
--- a/libs/hwui/DeferredLayerUpdater.h
+++ b/libs/hwui/DeferredLayerUpdater.h
@@ -24,7 +24,6 @@
 
 #include "Layer.h"
 #include "Rect.h"
-#include "RenderNode.h"
 #include "renderthread/RenderThread.h"
 
 namespace android {
diff --git a/libs/hwui/DisplayList.h b/libs/hwui/DisplayList.h
index dea109c..1777e11 100644
--- a/libs/hwui/DisplayList.h
+++ b/libs/hwui/DisplayList.h
@@ -38,8 +38,9 @@
 #include <androidfw/ResourceTypes.h>
 
 #include "Debug.h"
-#include "Matrix.h"
+#include "CanvasProperty.h"
 #include "DeferredDisplayList.h"
+#include "Matrix.h"
 #include "RenderProperties.h"
 
 class SkBitmap;
diff --git a/libs/hwui/DisplayListOp.h b/libs/hwui/DisplayListOp.h
index d78c1cb..39f89e5 100644
--- a/libs/hwui/DisplayListOp.h
+++ b/libs/hwui/DisplayListOp.h
@@ -32,6 +32,9 @@
 #include "AssetAtlas.h"
 #include "DeferredDisplayList.h"
 #include "DisplayListRenderer.h"
+#include "GammaFontRenderer.h"
+#include "Patch.h"
+#include "RenderNode.h"
 #include "UvMapper.h"
 #include "utils/LinearAllocator.h"
 
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index 7be8c45..0012080 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -20,10 +20,12 @@
 #include <SkMatrix.h>
 #include <SkPaint.h>
 #include <SkPath.h>
+#include <SkRegion.h>
 #include <cutils/compiler.h>
 
+#include "DisplayList.h"
 #include "DisplayListLogBuffer.h"
-#include "RenderNode.h"
+#include "StatefulBaseRenderer.h"
 
 namespace android {
 namespace uirenderer {
@@ -44,9 +46,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 class DeferredDisplayList;
-class DisplayListRenderer;
 class DisplayListOp;
+class DisplayListRenderer;
 class DrawOp;
+class RenderNode;
 class StateOp;
 
 /**
diff --git a/libs/hwui/Dither.h b/libs/hwui/Dither.h
index 546236be..092ebf2 100644
--- a/libs/hwui/Dither.h
+++ b/libs/hwui/Dither.h
@@ -19,12 +19,11 @@
 
 #include <GLES3/gl3.h>
 
-#include "Program.h"
-
 namespace android {
 namespace uirenderer {
 
 class Caches;
+class Program;
 
 // Must be a power of two
 #define DITHER_KERNEL_SIZE 4
diff --git a/libs/hwui/FontRenderer.h b/libs/hwui/FontRenderer.h
index 5c96c6b4..e11128c 100644
--- a/libs/hwui/FontRenderer.h
+++ b/libs/hwui/FontRenderer.h
@@ -31,8 +31,6 @@
 #include "font/CachedGlyphInfo.h"
 #include "font/Font.h"
 #include "utils/SortedList.h"
-#include "Matrix.h"
-#include "Properties.h"
 
 #ifdef ANDROID_ENABLE_RENDERSCRIPT
 #include "RenderScript.h"
diff --git a/libs/hwui/GradientCache.h b/libs/hwui/GradientCache.h
index 6a783b1..c94b6f0 100644
--- a/libs/hwui/GradientCache.h
+++ b/libs/hwui/GradientCache.h
@@ -25,11 +25,11 @@
 #include <utils/Mutex.h>
 #include <utils/Vector.h>
 
-#include "Texture.h"
-
 namespace android {
 namespace uirenderer {
 
+class Texture;
+
 struct GradientCacheEntry {
     GradientCacheEntry() {
         count = 0;
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 7a094fd..b691019 100755
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -36,14 +36,17 @@
 #include "DeferredDisplayList.h"
 #include "DisplayListRenderer.h"
 #include "Fence.h"
-#include "RenderState.h"
+#include "GammaFontRenderer.h"
+#include "Patch.h"
 #include "PathTessellator.h"
 #include "Properties.h"
+#include "RenderNode.h"
+#include "RenderState.h"
 #include "ShadowTessellator.h"
 #include "SkiaShader.h"
-#include "utils/GLUtils.h"
 #include "Vector.h"
 #include "VertexBuffer.h"
+#include "utils/GLUtils.h"
 
 #if DEBUG_DETAILED_EVENTS
     #define EVENT_LOGD(...) eventMarkDEBUG(__VA_ARGS__)
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 47ef1a9..4b92900 100755
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -43,13 +43,11 @@
 #include "Matrix.h"
 #include "Program.h"
 #include "Rect.h"
-#include "Renderer.h"
 #include "Snapshot.h"
 #include "StatefulBaseRenderer.h"
 #include "UvMapper.h"
 #include "Vertex.h"
 #include "Caches.h"
-#include "CanvasProperty.h"
 
 class SkShader;
 
diff --git a/libs/hwui/Patch.h b/libs/hwui/Patch.h
index 1ba045d..d5bbfa6 100644
--- a/libs/hwui/Patch.h
+++ b/libs/hwui/Patch.h
@@ -27,11 +27,12 @@
 
 #include "Rect.h"
 #include "UvMapper.h"
-#include "Vertex.h"
 
 namespace android {
 namespace uirenderer {
 
+class TextureVertex;
+
 ///////////////////////////////////////////////////////////////////////////////
 // 9-patch structures
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/PatchCache.cpp b/libs/hwui/PatchCache.cpp
index 2f2debc..1920fcf 100644
--- a/libs/hwui/PatchCache.cpp
+++ b/libs/hwui/PatchCache.cpp
@@ -20,6 +20,7 @@
 #include <utils/Log.h>
 
 #include "Caches.h"
+#include "Patch.h"
 #include "PatchCache.h"
 #include "Properties.h"
 
diff --git a/libs/hwui/PatchCache.h b/libs/hwui/PatchCache.h
index 9f2c9a5..1e40997 100644
--- a/libs/hwui/PatchCache.h
+++ b/libs/hwui/PatchCache.h
@@ -25,12 +25,13 @@
 
 #include "AssetAtlas.h"
 #include "Debug.h"
-#include "Patch.h"
 #include "utils/Pair.h"
 
 namespace android {
 namespace uirenderer {
 
+class Patch;
+
 ///////////////////////////////////////////////////////////////////////////////
 // Defines
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/PathCache.h b/libs/hwui/PathCache.h
index bc34188..b0f00c7 100644
--- a/libs/hwui/PathCache.h
+++ b/libs/hwui/PathCache.h
@@ -24,7 +24,6 @@
 #include <utils/Vector.h>
 
 #include "Debug.h"
-#include "Properties.h"
 #include "Texture.h"
 #include "utils/Macros.h"
 #include "utils/Pair.h"
diff --git a/libs/hwui/ProgramCache.h b/libs/hwui/ProgramCache.h
index 38f6f99..9aadba6 100644
--- a/libs/hwui/ProgramCache.h
+++ b/libs/hwui/ProgramCache.h
@@ -25,7 +25,6 @@
 
 #include "Debug.h"
 #include "Program.h"
-#include "Properties.h"
 
 namespace android {
 namespace uirenderer {
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 70ff6e5..5139020 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -33,6 +33,7 @@
 #include "DisplayListLogBuffer.h"
 #include "LayerRenderer.h"
 #include "OpenGLRenderer.h"
+#include "TreeInfo.h"
 #include "utils/MathUtils.h"
 #include "renderthread/CanvasContext.h"
 
diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h
index f329283..93e2bb3 100644
--- a/libs/hwui/RenderNode.h
+++ b/libs/hwui/RenderNode.h
@@ -33,13 +33,10 @@
 #include <androidfw/ResourceTypes.h>
 
 #include "AnimatorManager.h"
-#include "DamageAccumulator.h"
 #include "Debug.h"
 #include "Matrix.h"
-#include "DeferredDisplayList.h"
 #include "DisplayList.h"
 #include "RenderProperties.h"
-#include "TreeInfo.h"
 
 class SkBitmap;
 class SkPaint;
@@ -61,6 +58,7 @@
 class SaveOp;
 class RestoreToCountOp;
 class DrawRenderNodeOp;
+class TreeInfo;
 
 /**
  * Primary class for storing recorded canvas commands, as well as per-View/ViewGroup display properties.
diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h
index b936d4b..2b5b811 100644
--- a/libs/hwui/RenderProperties.h
+++ b/libs/hwui/RenderProperties.h
@@ -26,8 +26,8 @@
 #include <SkCamera.h>
 #include <SkMatrix.h>
 #include <SkRegion.h>
+#include <SkXfermode.h>
 
-#include "Animator.h"
 #include "Rect.h"
 #include "RevealClip.h"
 #include "Outline.h"
diff --git a/libs/hwui/RenderState.h b/libs/hwui/RenderState.h
index cbe7cfc..107f9bb 100644
--- a/libs/hwui/RenderState.h
+++ b/libs/hwui/RenderState.h
@@ -20,15 +20,18 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 #include <utils/Mutex.h>
+#include <utils/Functor.h>
 
 #include <private/hwui/DrawGlInfo.h>
 
-#include "Caches.h"
 #include "utils/Macros.h"
 
 namespace android {
 namespace uirenderer {
 
+class Caches;
+class Layer;
+
 namespace renderthread {
 class CanvasContext;
 class RenderThread;
diff --git a/libs/hwui/ResourceCache.h b/libs/hwui/ResourceCache.h
index 3864d4b..c43a056 100644
--- a/libs/hwui/ResourceCache.h
+++ b/libs/hwui/ResourceCache.h
@@ -20,16 +20,17 @@
 #include <cutils/compiler.h>
 
 #include <SkBitmap.h>
+#include <SkPath.h>
 
 #include <utils/KeyedVector.h>
 
 #include <androidfw/ResourceTypes.h>
 
-#include "Layer.h"
-
 namespace android {
 namespace uirenderer {
 
+class Layer;
+
 /**
  * Type of Resource being cached
  */
diff --git a/libs/hwui/ShadowTessellator.h b/libs/hwui/ShadowTessellator.h
index 8f19b5c..16ad91d 100644
--- a/libs/hwui/ShadowTessellator.h
+++ b/libs/hwui/ShadowTessellator.h
@@ -18,14 +18,16 @@
 #ifndef ANDROID_HWUI_SHADOW_TESSELLATOR_H
 #define ANDROID_HWUI_SHADOW_TESSELLATOR_H
 
+#include <SkPath.h>
+
 #include "Debug.h"
 #include "Matrix.h"
-#include "OpenGLRenderer.h"
-#include "VertexBuffer.h"
 
 namespace android {
 namespace uirenderer {
 
+class VertexBuffer;
+
 // All SHADOW_* are used to define all the geometry property of shadows.
 // Use a simplified example to illustrate the geometry setup here.
 // Assuming we use 6 rays and only 1 layer, Then we will have 2 hexagons, which
diff --git a/libs/hwui/SkiaShader.cpp b/libs/hwui/SkiaShader.cpp
index c672bc4..dff19a9 100644
--- a/libs/hwui/SkiaShader.cpp
+++ b/libs/hwui/SkiaShader.cpp
@@ -21,6 +21,7 @@
 #include <SkMatrix.h>
 
 #include "Caches.h"
+#include "Extensions.h"
 #include "Layer.h"
 #include "Matrix.h"
 #include "SkiaShader.h"
diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h
index 034c3f6..a3755425 100644
--- a/libs/hwui/SkiaShader.h
+++ b/libs/hwui/SkiaShader.h
@@ -24,15 +24,11 @@
 
 #include <cutils/compiler.h>
 
-#include "Extensions.h"
-#include "ProgramCache.h"
-#include "TextureCache.h"
-#include "GradientCache.h"
-
 namespace android {
 namespace uirenderer {
 
 class Caches;
+class Extensions;
 class Layer;
 
 /**
diff --git a/libs/hwui/SpotShadow.cpp b/libs/hwui/SpotShadow.cpp
index df28ae8..a8452c9 100644
--- a/libs/hwui/SpotShadow.cpp
+++ b/libs/hwui/SpotShadow.cpp
@@ -52,6 +52,7 @@
 #include "ShadowTessellator.h"
 #include "SpotShadow.h"
 #include "Vertex.h"
+#include "VertexBuffer.h"
 #include "utils/MathUtils.h"
 
 // TODO: After we settle down the new algorithm, we can remove the old one and
diff --git a/libs/hwui/SpotShadow.h b/libs/hwui/SpotShadow.h
index 6fa2028f..51c1c2d 100644
--- a/libs/hwui/SpotShadow.h
+++ b/libs/hwui/SpotShadow.h
@@ -19,11 +19,12 @@
 
 #include "Debug.h"
 #include "Vector.h"
-#include "VertexBuffer.h"
 
 namespace android {
 namespace uirenderer {
 
+class VertexBuffer;
+
 class SpotShadow {
 public:
     static void createSpotShadow(bool isCasterOpaque, const Vector3& lightCenter,
diff --git a/libs/hwui/TessellationCache.h b/libs/hwui/TessellationCache.h
index 688a699..a7c50eb 100644
--- a/libs/hwui/TessellationCache.h
+++ b/libs/hwui/TessellationCache.h
@@ -24,7 +24,6 @@
 #include "Debug.h"
 #include "utils/Macros.h"
 #include "utils/Pair.h"
-#include "VertexBuffer.h"
 
 class SkBitmap;
 class SkCanvas;
@@ -36,6 +35,7 @@
 namespace uirenderer {
 
 class Caches;
+class VertexBuffer;
 
 ///////////////////////////////////////////////////////////////////////////////
 // Classes
diff --git a/libs/hwui/TextDropShadowCache.cpp b/libs/hwui/TextDropShadowCache.cpp
index 4eec462..9e02a30 100644
--- a/libs/hwui/TextDropShadowCache.cpp
+++ b/libs/hwui/TextDropShadowCache.cpp
@@ -20,6 +20,7 @@
 
 #include "Caches.h"
 #include "Debug.h"
+#include "FontRenderer.h"
 #include "TextDropShadowCache.h"
 #include "Properties.h"
 
diff --git a/libs/hwui/TextDropShadowCache.h b/libs/hwui/TextDropShadowCache.h
index 54b930b..bb53a23 100644
--- a/libs/hwui/TextDropShadowCache.h
+++ b/libs/hwui/TextDropShadowCache.h
@@ -24,13 +24,14 @@
 #include <utils/LruCache.h>
 #include <utils/String16.h>
 
-#include "FontRenderer.h"
+#include "font/Font.h"
 #include "Texture.h"
 
 namespace android {
 namespace uirenderer {
 
 class Caches;
+class FontRenderer;
 
 struct ShadowText {
     ShadowText(): len(0), radius(0.0f), textSize(0.0f), typeface(NULL),
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index 3b8a9a4..0cd120a 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -24,6 +24,7 @@
 #include <utils/Mutex.h>
 
 #include "Caches.h"
+#include "Texture.h"
 #include "TextureCache.h"
 #include "Properties.h"
 
diff --git a/libs/hwui/TextureCache.h b/libs/hwui/TextureCache.h
index 61db5b0..668defc 100644
--- a/libs/hwui/TextureCache.h
+++ b/libs/hwui/TextureCache.h
@@ -24,11 +24,12 @@
 #include <utils/Vector.h>
 
 #include "Debug.h"
-#include "Texture.h"
 
 namespace android {
 namespace uirenderer {
 
+class Texture;
+
 ///////////////////////////////////////////////////////////////////////////////
 // Defines
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/TreeInfo.h b/libs/hwui/TreeInfo.h
index ae6ea94..e820b22 100644
--- a/libs/hwui/TreeInfo.h
+++ b/libs/hwui/TreeInfo.h
@@ -20,7 +20,6 @@
 
 #include <utils/Timers.h>
 
-#include "DamageAccumulator.h"
 #include "utils/Macros.h"
 
 namespace android {
@@ -30,6 +29,7 @@
 class CanvasContext;
 }
 
+class DamageAccumulator;
 class OpenGLRenderer;
 class RenderState;
 
diff --git a/libs/hwui/font/CacheTexture.cpp b/libs/hwui/font/CacheTexture.cpp
index 24ffb80..380c0ed 100644
--- a/libs/hwui/font/CacheTexture.cpp
+++ b/libs/hwui/font/CacheTexture.cpp
@@ -17,6 +17,7 @@
 #include <SkGlyph.h>
 
 #include "CacheTexture.h"
+#include "FontUtil.h"
 #include "../Caches.h"
 #include "../Debug.h"
 #include "../Extensions.h"
diff --git a/libs/hwui/font/CacheTexture.h b/libs/hwui/font/CacheTexture.h
index 4cc4f22..a107c7a 100644
--- a/libs/hwui/font/CacheTexture.h
+++ b/libs/hwui/font/CacheTexture.h
@@ -23,7 +23,6 @@
 
 #include <utils/Log.h>
 
-#include "FontUtil.h"
 #include "../PixelBuffer.h"
 #include "../Rect.h"
 #include "../Vertex.h"
diff --git a/libs/hwui/font/CachedGlyphInfo.h b/libs/hwui/font/CachedGlyphInfo.h
index 6680a00..0642d59 100644
--- a/libs/hwui/font/CachedGlyphInfo.h
+++ b/libs/hwui/font/CachedGlyphInfo.h
@@ -19,11 +19,11 @@
 
 #include <SkFixed.h>
 
-#include "CacheTexture.h"
-
 namespace android {
 namespace uirenderer {
 
+class CacheTexture;
+
 struct CachedGlyphInfo {
     // Has the cache been invalidated?
     bool mIsValid;
diff --git a/libs/hwui/font/Font.h b/libs/hwui/font/Font.h
index 0f10464..af9bb50 100644
--- a/libs/hwui/font/Font.h
+++ b/libs/hwui/font/Font.h
@@ -28,7 +28,7 @@
 #include <SkPaint.h>
 #include <SkPathMeasure.h>
 
-#include "CachedGlyphInfo.h"
+#include "FontUtil.h"
 #include "../Rect.h"
 #include "../Matrix.h"
 
@@ -39,6 +39,8 @@
 // Font
 ///////////////////////////////////////////////////////////////////////////////
 
+class CachedGlyphInfo;
+class CacheTexture;
 class FontRenderer;
 
 /**
diff --git a/libs/hwui/font/FontUtil.h b/libs/hwui/font/FontUtil.h
index c2fd5f5..e302afb 100644
--- a/libs/hwui/font/FontUtil.h
+++ b/libs/hwui/font/FontUtil.h
@@ -19,8 +19,6 @@
 
 #include <SkUtils.h>
 
-#include "Properties.h"
-
 ///////////////////////////////////////////////////////////////////////////////
 // Defines
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp
index a87834e..dd6211b 100644
--- a/libs/hwui/renderthread/EglManager.cpp
+++ b/libs/hwui/renderthread/EglManager.cpp
@@ -19,6 +19,7 @@
 #include <cutils/log.h>
 #include <cutils/properties.h>
 
+#include "../Caches.h"
 #include "../RenderState.h"
 #include "RenderThread.h"