Remove a lot of unnecessary include files and break include chains.

This should speed up incremental compile times when modifying headers, by reducing the number of dependencies.

TRAC #22518

Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Jamie Madill

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1937 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/common/debug.cpp b/src/common/debug.cpp
index 5939960..2333740 100644
--- a/src/common/debug.cpp
+++ b/src/common/debug.cpp
@@ -7,10 +7,6 @@
 // debug.cpp: Debugging utilities.
 
 #include "common/debug.h"
-
-#include <stdio.h>
-#include <stdarg.h>
-
 #include "common/system.h"
 #include <d3d9.h>
 
diff --git a/src/libEGL/Display.cpp b/src/libEGL/Display.cpp
index 731f7f2..ce42990 100644
--- a/src/libEGL/Display.cpp
+++ b/src/libEGL/Display.cpp
@@ -17,8 +17,10 @@
 #include "common/debug.h"
 #include "libGLESv2/mathutil.h"
 #include "libGLESv2/main.h"
+#include "libGLESv2/Context.h"
 
 #include "libEGL/main.h"
+#include "libEGL/Surface.h"
 
 namespace egl
 {
diff --git a/src/libEGL/Display.h b/src/libEGL/Display.h
index 1c99ea0..131a7e8 100644
--- a/src/libEGL/Display.h
+++ b/src/libEGL/Display.h
@@ -16,14 +16,17 @@
 #include <set>
 #include <vector>
 
-#include "libGLESv2/Context.h"
-#include "libGLESv2/renderer/Renderer.h"
-
 #include "libEGL/Config.h"
-#include "libEGL/Surface.h"
+
+namespace gl
+{
+class Context;
+}
 
 namespace egl
 {
+class Surface;
+
 class Display
 {
   public:
diff --git a/src/libEGL/libEGL.cpp b/src/libEGL/libEGL.cpp
index 178ffe9..0a094c2 100644
--- a/src/libEGL/libEGL.cpp
+++ b/src/libEGL/libEGL.cpp
@@ -17,7 +17,7 @@
 
 #include "libEGL/main.h"
 #include "libEGL/Display.h"
-
+#include "libEGL/Surface.h"
 
 bool validateDisplay(egl::Display *display)
 {
diff --git a/src/libGLESv2/Buffer.cpp b/src/libGLESv2/Buffer.cpp
index 5fc3d74..87cfde7 100644
--- a/src/libGLESv2/Buffer.cpp
+++ b/src/libGLESv2/Buffer.cpp
@@ -10,10 +10,10 @@
 
 #include "libGLESv2/Buffer.h"
 
-#include "libGLESv2/main.h"
 #include "libGLESv2/renderer/VertexBuffer.h"
 #include "libGLESv2/renderer/IndexBuffer.h"
 #include "libGLESv2/renderer/BufferStorage.h"
+#include "libGLESv2/renderer/Renderer.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 0a8480f..ab4948e 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -9,24 +9,24 @@
 
 #include "libGLESv2/Context.h"
 
-#include <algorithm>
 #include <sstream>
 
 #include "libGLESv2/main.h"
-#include "libGLESv2/mathutil.h"
 #include "libGLESv2/utilities.h"
-#include "libGLESv2/ResourceManager.h"
 #include "libGLESv2/Buffer.h"
 #include "libGLESv2/Fence.h"
 #include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/Program.h"
 #include "libGLESv2/ProgramBinary.h"
 #include "libGLESv2/Query.h"
-#include "libGLESv2/Renderbuffer.h"
-#include "libGLESv2/Shader.h"
 #include "libGLESv2/Texture.h"
+#include "libGLESv2/ResourceManager.h"
 #include "libGLESv2/renderer/IndexDataManager.h"
 #include "libGLESv2/renderer/RenderTarget.h"
+#include "libGLESv2/renderer/Renderer.h"
+
+#include "libEGL/Surface.h"
 
 #undef near
 #undef far
diff --git a/src/libGLESv2/Fence.cpp b/src/libGLESv2/Fence.cpp
index 9f0e351..0bacd42 100644
--- a/src/libGLESv2/Fence.cpp
+++ b/src/libGLESv2/Fence.cpp
@@ -8,6 +8,7 @@
 
 #include "libGLESv2/Fence.h"
 #include "libGLESv2/renderer/FenceImpl.h"
+#include "libGLESv2/renderer/Renderer.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Fence.h b/src/libGLESv2/Fence.h
index 1d981fa..a9237d3 100644
--- a/src/libGLESv2/Fence.h
+++ b/src/libGLESv2/Fence.h
@@ -13,7 +13,12 @@
 #include <GLES2/gl2.h>
 
 #include "common/angleutils.h"
-#include "libGLESv2/renderer/Renderer.h"
+
+namespace rx
+{
+class Renderer;
+class FenceImpl;
+}
 
 namespace gl
 {
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index bbb2d61..f0dd5f2 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -10,9 +10,11 @@
 #include "libGLESv2/Framebuffer.h"
 
 #include "libGLESv2/main.h"
-#include "libGLESv2/Renderbuffer.h"
-#include "libGLESv2/Texture.h"
 #include "libGLESv2/utilities.h"
+#include "libGLESv2/Texture.h"
+#include "libGLESv2/Context.h"
+#include "libGLESv2/renderer/Renderer.h"
+#include "libGLESv2/Renderbuffer.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index 2a72e02..983495b 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -9,14 +9,7 @@
 
 #include "libGLESv2/Program.h"
 #include "libGLESv2/ProgramBinary.h"
-
-#include "common/debug.h"
-
-#include "libGLESv2/main.h"
-#include "libGLESv2/Shader.h"
-#include "libGLESv2/utilities.h"
-
-#include <string>
+#include "libGLESv2/ResourceManager.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Program.h b/src/libGLESv2/Program.h
index 909de67..a9db834 100644
--- a/src/libGLESv2/Program.h
+++ b/src/libGLESv2/Program.h
@@ -13,14 +13,22 @@
 #include <string>
 #include <set>
 
-#include "libGLESv2/Shader.h"
-#include "libGLESv2/Context.h"
+#include "common/angleutils.h"
+#include "common/RefCountObject.h"
+#include "libGLESv2/Constants.h"
+
+namespace rx
+{
+class Renderer;
+}
 
 namespace gl
 {
 class ResourceManager;
 class FragmentShader;
 class VertexShader;
+class ProgramBinary;
+class Shader;
 
 extern const char * const g_fakepath;
 
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 3cf1b6d..4651dbd 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -18,6 +18,7 @@
 #include "libGLESv2/main.h"
 #include "libGLESv2/Shader.h"
 #include "libGLESv2/Program.h"
+#include "libGLESv2/renderer/Renderer.h"
 
 #include "libGLESv2/renderer/Renderer.h"
 #include "libGLESv2/renderer/VertexDataManager.h"
diff --git a/src/libGLESv2/ProgramBinary.h b/src/libGLESv2/ProgramBinary.h
index 5209f25..2386c0b 100644
--- a/src/libGLESv2/ProgramBinary.h
+++ b/src/libGLESv2/ProgramBinary.h
@@ -22,7 +22,7 @@
 #include "libGLESv2/mathutil.h"
 #include "libGLESv2/Uniform.h"
 #include "libGLESv2/Shader.h"
-#include "Context.h"
+#include "libGLESv2/Constants.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/Query.cpp b/src/libGLESv2/Query.cpp
index d0d9000..79fec10 100644
--- a/src/libGLESv2/Query.cpp
+++ b/src/libGLESv2/Query.cpp
@@ -8,6 +8,7 @@
 
 #include "libGLESv2/Query.h"
 #include "libGLESv2/renderer/QueryImpl.h"
+#include "libGLESv2/renderer/Renderer.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Query.h b/src/libGLESv2/Query.h
index 5ec0a4c..e9b95b7 100644
--- a/src/libGLESv2/Query.h
+++ b/src/libGLESv2/Query.h
@@ -14,7 +14,12 @@
 
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
-#include "libGLESv2/renderer/Renderer.h"
+
+namespace rx
+{
+class Renderer;
+class QueryImpl;
+}
 
 namespace gl
 {
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index 5b559b7..e67f6c9 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -11,8 +11,8 @@
 #include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/renderer/RenderTarget.h"
 
-#include "libGLESv2/main.h"
 #include "libGLESv2/Texture.h"
+#include "libGLESv2/renderer/Renderer.h"
 #include "libGLESv2/utilities.h"
 
 namespace gl
diff --git a/src/libGLESv2/ResourceManager.cpp b/src/libGLESv2/ResourceManager.cpp
index 4de0060..6b388a9 100644
--- a/src/libGLESv2/ResourceManager.cpp
+++ b/src/libGLESv2/ResourceManager.cpp
@@ -14,7 +14,6 @@
 #include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/Shader.h"
 #include "libGLESv2/Texture.h"
-#include "libGLESv2/renderer/Renderer.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index 5b3ea1c..d3ff6e1 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -10,11 +10,11 @@
 
 #include "libGLESv2/Shader.h"
 
-#include <string>
-
 #include "GLSLANG/ShaderLang.h"
-#include "libGLESv2/main.h"
 #include "libGLESv2/utilities.h"
+#include "libGLESv2/renderer/Renderer.h"
+#include "libGLESv2/Constants.h"
+#include "libGLESv2/ResourceManager.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Shader.h b/src/libGLESv2/Shader.h
index 5f50b6e..2d87205 100644
--- a/src/libGLESv2/Shader.h
+++ b/src/libGLESv2/Shader.h
@@ -18,8 +18,8 @@
 #include <list>
 #include <vector>
 
-#include "libGLESv2/ResourceManager.h"
 #include "compiler/Uniform.h"
+#include "common/angleutils.h"
 
 namespace rx
 {
@@ -28,6 +28,8 @@
 
 namespace gl
 {
+class ResourceManager;
+
 struct Varying
 {
     Varying(GLenum type, const std::string &name, int size, bool array)
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 95c0be8..5704764 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -10,16 +10,15 @@
 
 #include "libGLESv2/Texture.h"
 
-#include <algorithm>
-
-#include "common/debug.h"
-
 #include "libGLESv2/main.h"
 #include "libGLESv2/mathutil.h"
 #include "libGLESv2/utilities.h"
 #include "libGLESv2/renderer/Blit.h"
-#include "libGLESv2/renderer/SwapChain.h"
-#include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Renderbuffer.h"
+#include "libGLESv2/renderer/Image.h"
+#include "libGLESv2/renderer/Renderer.h"
+#include "libGLESv2/renderer/TextureStorage.h"
+#include "libEGL/Surface.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Texture.h b/src/libGLESv2/Texture.h
index d54aee4..6b55613 100644
--- a/src/libGLESv2/Texture.h
+++ b/src/libGLESv2/Texture.h
@@ -18,10 +18,6 @@
 
 #include "common/debug.h"
 #include "common/RefCountObject.h"
-#include "libGLESv2/renderer/Image.h"
-#include "libGLESv2/renderer/TextureStorage.h"
-#include "libGLESv2/Renderbuffer.h"
-#include "libGLESv2/utilities.h"
 #include "libGLESv2/angletypes.h"
 
 namespace egl
@@ -32,11 +28,17 @@
 namespace rx
 {
 class Renderer;
+class TextureStorageInterface;
+class TextureStorageInterface2D;
+class TextureStorageInterfaceCube;
+class RenderTarget;
+class Image;
 }
 
 namespace gl
 {
 class Framebuffer;
+class Renderbuffer;
 
 enum
 {
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index dfa9795..9ec402a 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -10,25 +10,19 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 
-#include <exception>
-#include <limits>
-
-#include "common/debug.h"
 #include "common/version.h"
 
 #include "libGLESv2/main.h"
-#include "libGLESv2/mathutil.h"
 #include "libGLESv2/utilities.h"
 #include "libGLESv2/Buffer.h"
-#include "libGLESv2/Context.h"
 #include "libGLESv2/Fence.h"
 #include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/Program.h"
 #include "libGLESv2/ProgramBinary.h"
-#include "libGLESv2/Renderbuffer.h"
-#include "libGLESv2/Shader.h"
 #include "libGLESv2/Texture.h"
 #include "libGLESv2/Query.h"
+#include "libGLESv2/Context.h"
 
 bool validImageSize(GLint level, GLsizei width, GLsizei height)
 {
diff --git a/src/libGLESv2/main.cpp b/src/libGLESv2/main.cpp
index 09d64ec..97b9956 100644
--- a/src/libGLESv2/main.cpp
+++ b/src/libGLESv2/main.cpp
@@ -7,11 +7,8 @@
 // main.cpp: DLL entry point and management of thread-local data.
 
 #include "libGLESv2/main.h"
-#include "libGLESv2/utilities.h"
 
-#include "common/debug.h"
-
-#include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Context.h"
 
 static DWORD currentTLS = TLS_OUT_OF_INDEXES;
 
diff --git a/src/libGLESv2/main.h b/src/libGLESv2/main.h
index 99a956e..42ad32c 100644
--- a/src/libGLESv2/main.h
+++ b/src/libGLESv2/main.h
@@ -13,13 +13,22 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 
-#include "common/debug.h"
-#include "libEGL/Display.h"
+#define EGLAPI
+#include <EGL/egl.h>
 
-#include "libGLESv2/Context.h"
+#include "common/debug.h"
+#include "common/system.h"
+
+namespace egl
+{
+class Display;
+class Surface;
+}
 
 namespace gl
 {
+class Context;
+    
 struct Current
 {
     Context *context;
@@ -44,6 +53,11 @@
 
 }
 
+namespace rx
+{
+class Renderer;
+}
+
 extern "C"
 {
 // Exported functions for use by EGL
diff --git a/src/libGLESv2/renderer/Blit.cpp b/src/libGLESv2/renderer/Blit.cpp
index 81e2a6b..6d56fd1 100644
--- a/src/libGLESv2/renderer/Blit.cpp
+++ b/src/libGLESv2/renderer/Blit.cpp
@@ -8,13 +8,11 @@
 
 #include "libGLESv2/renderer/Blit.h"
 
-#include "common/debug.h"
-
 #include "libGLESv2/main.h"
-#include "libGLESv2/utilities.h"
 #include "libGLESv2/renderer/renderer9_utils.h"
 #include "libGLESv2/renderer/TextureStorage9.h"
 #include "libGLESv2/renderer/RenderTarget9.h"
+#include "libGLESv2/renderer/Renderer9.h"
 #include "libGLESv2/Framebuffer.h"
 #include "libGLESv2/Renderbuffer.h"
 
diff --git a/src/libGLESv2/renderer/Blit.h b/src/libGLESv2/renderer/Blit.h
index eb377b1..108b895 100644
--- a/src/libGLESv2/renderer/Blit.h
+++ b/src/libGLESv2/renderer/Blit.h
@@ -18,11 +18,17 @@
 
 #include "common/angleutils.h"
 
-#include "libGLESv2/Context.h"
-#include "libGLESv2/renderer/Renderer9.h"
+namespace gl
+{
+class Framebuffer;
+}
 
 namespace rx
 {
+class Renderer9;
+class TextureStorageInterface2D;
+class TextureStorageInterfaceCube;
+
 class Blit
 {
   public:
diff --git a/src/libGLESv2/renderer/BufferStorage11.cpp b/src/libGLESv2/renderer/BufferStorage11.cpp
index 0111ff0..1b09942 100644
--- a/src/libGLESv2/renderer/BufferStorage11.cpp
+++ b/src/libGLESv2/renderer/BufferStorage11.cpp
@@ -8,6 +8,7 @@
 
 #include "libGLESv2/renderer/BufferStorage11.h"
 #include "libGLESv2/main.h"
+#include "libGLESv2/renderer/Renderer11.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/BufferStorage11.h b/src/libGLESv2/renderer/BufferStorage11.h
index 1225972..4a5556f 100644
--- a/src/libGLESv2/renderer/BufferStorage11.h
+++ b/src/libGLESv2/renderer/BufferStorage11.h
@@ -10,12 +10,12 @@
 #define LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_
 
 #include "libGLESv2/renderer/BufferStorage.h"
-#include "libGLESv2/renderer/Renderer11.h"
 
 #include <D3D11.h>
 
 namespace rx
 {
+class Renderer11;
 
 class BufferStorage11 : public BufferStorage
 {
diff --git a/src/libGLESv2/renderer/BufferStorage9.cpp b/src/libGLESv2/renderer/BufferStorage9.cpp
index b7cafd2..fd4fce8 100644
--- a/src/libGLESv2/renderer/BufferStorage9.cpp
+++ b/src/libGLESv2/renderer/BufferStorage9.cpp
@@ -7,10 +7,8 @@
 // BufferStorage9.cpp Defines the BufferStorage9 class.
 
 #include "libGLESv2/renderer/BufferStorage9.h"
-#include "libGLESv2/main.h"
 #include "common/debug.h"
-#include <stdlib.h>
-#include <string.h>
+#include <algorithm> // for std::min and std::max
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/Fence11.cpp b/src/libGLESv2/renderer/Fence11.cpp
index 2ed7975..92bd3a4 100644
--- a/src/libGLESv2/renderer/Fence11.cpp
+++ b/src/libGLESv2/renderer/Fence11.cpp
@@ -8,6 +8,7 @@
 
 #include "libGLESv2/renderer/Fence11.h"
 #include "libGLESv2/main.h"
+#include "libGLESv2/renderer/Renderer11.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/Fence11.h b/src/libGLESv2/renderer/Fence11.h
index bb33401..37fa534 100644
--- a/src/libGLESv2/renderer/Fence11.h
+++ b/src/libGLESv2/renderer/Fence11.h
@@ -10,10 +10,12 @@
 #define LIBGLESV2_RENDERER_Fence11_H_
 
 #include "libGLESv2/renderer/FenceImpl.h"
-#include "libGLESv2/renderer/Renderer11.h"
+
+#include <D3D11.h>
 
 namespace rx
 {
+class Renderer11;
 
 class Fence11 : public FenceImpl
 {
diff --git a/src/libGLESv2/renderer/Fence9.cpp b/src/libGLESv2/renderer/Fence9.cpp
index 74abfcf..165fe52 100644
--- a/src/libGLESv2/renderer/Fence9.cpp
+++ b/src/libGLESv2/renderer/Fence9.cpp
@@ -9,6 +9,7 @@
 #include "libGLESv2/renderer/Fence9.h"
 #include "libGLESv2/main.h"
 #include "libGLESv2/renderer/renderer9_utils.h"
+#include "libGLESv2/renderer/Renderer9.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/Fence9.h b/src/libGLESv2/renderer/Fence9.h
index 28b2694..6d17263 100644
--- a/src/libGLESv2/renderer/Fence9.h
+++ b/src/libGLESv2/renderer/Fence9.h
@@ -10,10 +10,12 @@
 #define LIBGLESV2_RENDERER_FENCE9_H_
 
 #include "libGLESv2/renderer/FenceImpl.h"
-#include "libGLESv2/renderer/Renderer9.h"
+
+#include <d3d9.h>
 
 namespace rx
 {
+class Renderer9;
 
 class Fence9 : public FenceImpl
 {
diff --git a/src/libGLESv2/renderer/Image11.cpp b/src/libGLESv2/renderer/Image11.cpp
index 5eb58cb..53a726b 100644
--- a/src/libGLESv2/renderer/Image11.cpp
+++ b/src/libGLESv2/renderer/Image11.cpp
@@ -11,9 +11,10 @@
 #include "libGLESv2/renderer/Image11.h"
 #include "libGLESv2/renderer/TextureStorage11.h"
 #include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Renderbuffer.h"
 
 #include "libGLESv2/main.h"
-#include "libGLESv2/mathutil.h"
+#include "libGLESv2/utilities.h"
 #include "libGLESv2/renderer/renderer11_utils.h"
 #include "libGLESv2/renderer/generatemip.h"
 
diff --git a/src/libGLESv2/renderer/Image9.cpp b/src/libGLESv2/renderer/Image9.cpp
index 060fa20..e0b1cde 100644
--- a/src/libGLESv2/renderer/Image9.cpp
+++ b/src/libGLESv2/renderer/Image9.cpp
@@ -10,10 +10,8 @@
 #include "libGLESv2/renderer/Image9.h"
 
 #include "libGLESv2/main.h"
-#include "libGLESv2/mathutil.h"
-#include "libGLESv2/utilities.h"
-#include "libGLESv2/Texture.h"
 #include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/renderer/Renderer9.h"
 #include "libGLESv2/renderer/RenderTarget9.h"
 #include "libGLESv2/renderer/TextureStorage9.h"
diff --git a/src/libGLESv2/renderer/IndexBuffer.cpp b/src/libGLESv2/renderer/IndexBuffer.cpp
index ba076f8..9059579 100644
--- a/src/libGLESv2/renderer/IndexBuffer.cpp
+++ b/src/libGLESv2/renderer/IndexBuffer.cpp
@@ -8,6 +8,7 @@
 // class with derivations, classes that perform graphics API agnostic index buffer operations.
 
 #include "libGLESv2/renderer/IndexBuffer.h"
+#include "libGLESv2/renderer/Renderer.h"
 
 namespace rx
 {
@@ -173,7 +174,7 @@
     }
 }
 
-UINT StaticIndexBufferInterface::lookupRange(intptr_t offset, GLsizei count, UINT *minIndex, UINT *maxIndex)
+unsigned int StaticIndexBufferInterface::lookupRange(intptr_t offset, GLsizei count, unsigned int *minIndex, unsigned int *maxIndex)
 {
     IndexRange range = {offset, count};
 
@@ -189,7 +190,7 @@
     return res->second.streamOffset;
 }
 
-void StaticIndexBufferInterface::addRange(intptr_t offset, GLsizei count, UINT minIndex, UINT maxIndex, UINT streamOffset)
+void StaticIndexBufferInterface::addRange(intptr_t offset, GLsizei count, unsigned int minIndex, unsigned int maxIndex, unsigned int streamOffset)
 {
     IndexRange indexRange = {offset, count};
     IndexResult indexResult = {minIndex, maxIndex, streamOffset};
diff --git a/src/libGLESv2/renderer/IndexBuffer.h b/src/libGLESv2/renderer/IndexBuffer.h
index a518d37..85418d4 100644
--- a/src/libGLESv2/renderer/IndexBuffer.h
+++ b/src/libGLESv2/renderer/IndexBuffer.h
@@ -15,10 +15,11 @@
 
 #include <map>
 
-#include "libGLESv2/renderer/Renderer.h"
+#include "common/angleutils.h"
 
 namespace rx
 {
+class Renderer;
 
 class IndexBuffer
 {
@@ -103,8 +104,8 @@
 
     virtual bool reserveBufferSpace(unsigned int size, GLenum indexType);
 
-    UINT lookupRange(intptr_t offset, GLsizei count, UINT *minIndex, UINT *maxIndex);   // Returns the offset into the index buffer, or -1 if not found
-    void addRange(intptr_t offset, GLsizei count, UINT minIndex, UINT maxIndex, UINT streamOffset);
+    unsigned int lookupRange(intptr_t offset, GLsizei count, unsigned int *minIndex, unsigned int *maxIndex);   // Returns the offset into the index buffer, or -1 if not found
+    void addRange(intptr_t offset, GLsizei count, unsigned int minIndex, unsigned int maxIndex, unsigned int streamOffset);
 
   private:
     struct IndexRange
@@ -128,9 +129,9 @@
 
     struct IndexResult
     {
-        UINT minIndex;
-        UINT maxIndex;
-        UINT streamOffset;
+        unsigned int minIndex;
+        unsigned int maxIndex;
+        unsigned int streamOffset;
     };
 
     std::map<IndexRange, IndexResult> mCache;
diff --git a/src/libGLESv2/renderer/IndexBuffer11.cpp b/src/libGLESv2/renderer/IndexBuffer11.cpp
index 5936b13..9b3d2e6 100644
--- a/src/libGLESv2/renderer/IndexBuffer11.cpp
+++ b/src/libGLESv2/renderer/IndexBuffer11.cpp
@@ -7,6 +7,7 @@
 // IndexBuffer11.cpp: Defines the D3D11 IndexBuffer implementation.
 
 #include "libGLESv2/renderer/IndexBuffer11.h"
+#include "libGLESv2/renderer/Renderer11.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/IndexBuffer11.h b/src/libGLESv2/renderer/IndexBuffer11.h
index 658f1bc..169189d 100644
--- a/src/libGLESv2/renderer/IndexBuffer11.h
+++ b/src/libGLESv2/renderer/IndexBuffer11.h
@@ -10,12 +10,12 @@
 #define LIBGLESV2_RENDERER_INDEXBUFFER11_H_
 
 #include "libGLESv2/renderer/IndexBuffer.h"
-#include "libGLESv2/renderer/Renderer11.h"
 
 #include <d3d11.h>
 
 namespace rx
 {
+class Renderer11;
 
 class IndexBuffer11 : public IndexBuffer
 {
diff --git a/src/libGLESv2/renderer/IndexBuffer9.cpp b/src/libGLESv2/renderer/IndexBuffer9.cpp
index 0472a13..e59efaf 100644
--- a/src/libGLESv2/renderer/IndexBuffer9.cpp
+++ b/src/libGLESv2/renderer/IndexBuffer9.cpp
@@ -7,6 +7,7 @@
 // Indexffer9.cpp: Defines the D3D9 IndexBuffer implementation.
 
 #include "libGLESv2/renderer/IndexBuffer9.h"
+#include "libGLESv2/renderer/Renderer9.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/IndexBuffer9.h b/src/libGLESv2/renderer/IndexBuffer9.h
index 2edf476..e00f1c7 100644
--- a/src/libGLESv2/renderer/IndexBuffer9.h
+++ b/src/libGLESv2/renderer/IndexBuffer9.h
@@ -10,12 +10,12 @@
 #define LIBGLESV2_RENDERER_INDEXBUFFER9_H_
 
 #include "libGLESv2/renderer/IndexBuffer.h"
-#include "libGLESv2/renderer/Renderer9.h"
 
 #include <d3d9.h>
 
 namespace rx
 {
+class Renderer9;
 
 class IndexBuffer9 : public IndexBuffer
 {
diff --git a/src/libGLESv2/renderer/IndexDataManager.cpp b/src/libGLESv2/renderer/IndexDataManager.cpp
index 8f077c2..6d45f87 100644
--- a/src/libGLESv2/renderer/IndexDataManager.cpp
+++ b/src/libGLESv2/renderer/IndexDataManager.cpp
@@ -10,11 +10,9 @@
 #include "libGLESv2/renderer/IndexDataManager.h"
 #include "libGLESv2/renderer/BufferStorage.h"
 
-#include "common/debug.h"
-
 #include "libGLESv2/Buffer.h"
-#include "libGLESv2/mathutil.h"
 #include "libGLESv2/main.h"
+#include "libGLESv2/renderer/IndexBuffer.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/IndexDataManager.h b/src/libGLESv2/renderer/IndexDataManager.h
index fe9ca60..506cfdb 100644
--- a/src/libGLESv2/renderer/IndexDataManager.h
+++ b/src/libGLESv2/renderer/IndexDataManager.h
@@ -16,23 +16,32 @@
 #define GL_APICALL
 #include <GLES2/gl2.h>
 
-#include "libGLESv2/renderer/Renderer.h"
-#include "libGLESv2/renderer/IndexBuffer.h"
+#include "common/angleutils.h"
 
 namespace
 {
     enum { INITIAL_INDEX_BUFFER_SIZE = 4096 * sizeof(GLuint) };
 }
 
+namespace gl
+{
+class Buffer;
+}
+
 namespace rx
 {
+class StaticIndexBufferInterface;
+class StreamingIndexBufferInterface;
+class IndexBuffer;
+class BufferStorage;
+class Renderer;
 
 struct TranslatedIndexData
 {
-    UINT minIndex;
-    UINT maxIndex;
-    UINT startIndex;
-    UINT startOffset;   // In bytes
+    unsigned int minIndex;
+    unsigned int maxIndex;
+    unsigned int startIndex;
+    unsigned int startOffset;   // In bytes
 
     IndexBuffer *indexBuffer;
     BufferStorage *storage;
diff --git a/src/libGLESv2/renderer/InputLayoutCache.cpp b/src/libGLESv2/renderer/InputLayoutCache.cpp
index 965f2b9..3ac0995 100644
--- a/src/libGLESv2/renderer/InputLayoutCache.cpp
+++ b/src/libGLESv2/renderer/InputLayoutCache.cpp
@@ -12,6 +12,8 @@
 #include "libGLESv2/renderer/BufferStorage11.h"
 #include "libGLESv2/renderer/ShaderExecutable11.h"
 #include "libGLESv2/ProgramBinary.h"
+#include "libGLESv2/Context.h"
+#include "libGLESv2/renderer/VertexDataManager.h"
 
 #include "third_party/murmurhash/MurmurHash3.h"
 
diff --git a/src/libGLESv2/renderer/InputLayoutCache.h b/src/libGLESv2/renderer/InputLayoutCache.h
index 375d4f8..cc952ab 100644
--- a/src/libGLESv2/renderer/InputLayoutCache.h
+++ b/src/libGLESv2/renderer/InputLayoutCache.h
@@ -10,15 +10,23 @@
 #ifndef LIBGLESV2_RENDERER_INPUTLAYOUTCACHE_H_
 #define LIBGLESV2_RENDERER_INPUTLAYOUTCACHE_H_
 
-#include "libGLESv2/Context.h"
+#include "libGLESv2/Constants.h"
+#include "common/angleutils.h"
 
-#include "libGLESv2/renderer/VertexDataManager.h"
+#define GL_APICALL
+#include <GLES2/gl2.h>
 
 #include <D3D11.h>
 #include <unordered_map>
 
+namespace gl
+{
+class ProgramBinary;
+}
+
 namespace rx
 {
+struct TranslatedAttribute;
 
 class InputLayoutCache
 {
diff --git a/src/libGLESv2/renderer/Query11.cpp b/src/libGLESv2/renderer/Query11.cpp
index 629b27d..06fbf76 100644
--- a/src/libGLESv2/renderer/Query11.cpp
+++ b/src/libGLESv2/renderer/Query11.cpp
@@ -7,6 +7,7 @@
 // Query11.cpp: Defines the rx::Query11 class which implements rx::QueryImpl.
 
 #include "libGLESv2/renderer/Query11.h"
+#include "libGLESv2/renderer/Renderer11.h"
 #include "libGLESv2/main.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/Query11.h b/src/libGLESv2/renderer/Query11.h
index 88994a5..da2d4c8 100644
--- a/src/libGLESv2/renderer/Query11.h
+++ b/src/libGLESv2/renderer/Query11.h
@@ -10,10 +10,11 @@
 #define LIBGLESV2_RENDERER_QUERY11_H_
 
 #include "libGLESv2/renderer/QueryImpl.h"
-#include "libGLESv2/renderer/Renderer11.h"
+#include <D3D11.h>
 
 namespace rx
 {
+class Renderer11;
 
 class Query11 : public QueryImpl
 {
diff --git a/src/libGLESv2/renderer/Query9.cpp b/src/libGLESv2/renderer/Query9.cpp
index 0d1b9a9..e34424f 100644
--- a/src/libGLESv2/renderer/Query9.cpp
+++ b/src/libGLESv2/renderer/Query9.cpp
@@ -10,6 +10,7 @@
 #include "libGLESv2/renderer/Query9.h"
 #include "libGLESv2/main.h"
 #include "libGLESv2/renderer/renderer9_utils.h"
+#include "libGLESv2/renderer/Renderer9.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/Query9.h b/src/libGLESv2/renderer/Query9.h
index b177fdf..1573211 100644
--- a/src/libGLESv2/renderer/Query9.h
+++ b/src/libGLESv2/renderer/Query9.h
@@ -10,10 +10,12 @@
 #define LIBGLESV2_RENDERER_QUERY9_H_
 
 #include "libGLESv2/renderer/QueryImpl.h"
-#include "libGLESv2/renderer/Renderer9.h"
+
+#include <d3d9.h>
 
 namespace rx
 {
+class Renderer9;
 
 class Query9 : public QueryImpl
 {
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 4ca5285..da561c2 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -8,14 +8,12 @@
 
 #include <D3Dcompiler.h>
 
-#include "common/debug.h"
 #include "libGLESv2/main.h"
 #include "libGLESv2/utilities.h"
-#include "libGLESv2/mathutil.h"
 #include "libGLESv2/Buffer.h"
-#include "libGLESv2/Program.h"
 #include "libGLESv2/ProgramBinary.h"
 #include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/RenderBuffer.h"
 #include "libGLESv2/renderer/Renderer11.h"
 #include "libGLESv2/renderer/RenderTarget11.h"
 #include "libGLESv2/renderer/renderer11_utils.h"
@@ -40,6 +38,8 @@
 #include "libGLESv2/renderer/shaders/compiled/clear11vs.h"
 #include "libGLESv2/renderer/shaders/compiled/clear11ps.h"
 
+#include "libEGL/Display.h"
+
 #include <sstream>
 
 namespace rx
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index d399288..a863a79 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -8,17 +8,13 @@
 
 #include <D3Dcompiler.h>
 
-#include "common/debug.h"
 #include "libGLESv2/main.h"
-#include "libGLESv2/utilities.h"
-#include "libGLESv2/mathutil.h"
 #include "libGLESv2/Buffer.h"
 #include "libGLESv2/Texture.h"
 #include "libGLESv2/Framebuffer.h"
-#include "libGLESv2/Program.h"
+#include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/ProgramBinary.h"
 #include "libGLESv2/renderer/IndexDataManager.h"
-#include "libGLESv2/renderer/VertexDataManager.h"
 #include "libGLESv2/renderer/Renderer9.h"
 #include "libGLESv2/renderer/renderer9_utils.h"
 #include "libGLESv2/renderer/ShaderExecutable9.h"
@@ -33,6 +29,8 @@
 #include "libGLESv2/renderer/Query9.h"
 #include "libGLESv2/renderer/Fence9.h"
 
+#include "libEGL/Display.h"
+
 #include <sstream>
 
 // Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index c36ab4a..5ea2305 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -23,16 +23,20 @@
 
 #include "common/angleutils.h"
 #include "libGLESv2/mathutil.h"
-#include "libGLESv2/Context.h"
 #include "libGLESv2/renderer/ShaderCache.h"
 #include "libGLESv2/renderer/VertexDeclarationCache.h"
 #include "libGLESv2/renderer/Renderer.h"
-#include "libGLESv2/renderer/IndexDataManager.h"
 #include "libGLESv2/renderer/RenderTarget.h"
 
+namespace gl
+{
+class Renderbuffer;
+}
+
 namespace rx
 {
 class VertexDataManager;
+class IndexDataManager;
 class StreamingIndexBufferInterface;
 struct TranslatedAttribute;
 
diff --git a/src/libGLESv2/renderer/SwapChain11.cpp b/src/libGLESv2/renderer/SwapChain11.cpp
index cb927e1..275bf7a 100644
--- a/src/libGLESv2/renderer/SwapChain11.cpp
+++ b/src/libGLESv2/renderer/SwapChain11.cpp
@@ -8,13 +8,8 @@
 
 #include "libGLESv2/renderer/SwapChain11.h"
 
-#include "common/debug.h"
-#include "libGLESv2/utilities.h"
 #include "libGLESv2/renderer/renderer11_utils.h"
 #include "libGLESv2/renderer/Renderer11.h"
-#include "libGLESv2/Context.h"
-#include "libGLESv2/main.h"
-
 #include "libGLESv2/renderer/shaders/compiled/passthrough11vs.h"
 #include "libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h"
 
diff --git a/src/libGLESv2/renderer/SwapChain9.cpp b/src/libGLESv2/renderer/SwapChain9.cpp
index 8b3223d..4e6b637 100644
--- a/src/libGLESv2/renderer/SwapChain9.cpp
+++ b/src/libGLESv2/renderer/SwapChain9.cpp
@@ -7,14 +7,8 @@
 // SwapChain9.cpp: Implements a back-end specific class for the D3D9 swap chain.
 
 #include "libGLESv2/renderer/SwapChain9.h"
-
-#include "common/debug.h"
-#include "libGLESv2/utilities.h"
 #include "libGLESv2/renderer/renderer9_utils.h"
 #include "libGLESv2/renderer/Renderer9.h"
-#include "libGLESv2/renderer/RenderTarget9.h"
-#include "libGLESv2/Context.h"
-#include "libGLESv2/main.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/TextureStorage.cpp b/src/libGLESv2/renderer/TextureStorage.cpp
index b473615..32d560e 100644
--- a/src/libGLESv2/renderer/TextureStorage.cpp
+++ b/src/libGLESv2/renderer/TextureStorage.cpp
@@ -8,11 +8,8 @@
 // classes TextureStorageInterface2D and TextureStorageInterfaceCube, which act as the interface to the
 // GPU-side texture.
 
-#include "libGLESv2/main.h"
 #include "libGLESv2/renderer/TextureStorage.h"
-#include "libGLESv2/renderer/SwapChain.h"
-#include "libGLESv2/renderer/Blit.h"
-#include "libGLESv2/renderer/RenderTarget.h"
+#include "libGLESv2/renderer/Renderer.h"
 #include "libGLESv2/Renderbuffer.h"
 #include "libGLESv2/Texture.h"
 
diff --git a/src/libGLESv2/renderer/TextureStorage11.cpp b/src/libGLESv2/renderer/TextureStorage11.cpp
index ecb2b3a..899267a 100644
--- a/src/libGLESv2/renderer/TextureStorage11.cpp
+++ b/src/libGLESv2/renderer/TextureStorage11.cpp
@@ -14,6 +14,7 @@
 #include "libGLESv2/renderer/SwapChain11.h"
 #include "libGLESv2/renderer/renderer11_utils.h"
 
+#include "libGLESv2/utilities.h"
 #include "libGLESv2/main.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/TextureStorage9.cpp b/src/libGLESv2/renderer/TextureStorage9.cpp
index b240c46..74dcda9 100644
--- a/src/libGLESv2/renderer/TextureStorage9.cpp
+++ b/src/libGLESv2/renderer/TextureStorage9.cpp
@@ -9,15 +9,13 @@
 // D3D9 texture.
 
 #include "libGLESv2/main.h"
+#include "libGLESv2/renderer/Renderer9.h"
 #include "libGLESv2/renderer/TextureStorage9.h"
 #include "libGLESv2/renderer/SwapChain9.h"
-#include "libGLESv2/renderer/Blit.h"
 #include "libGLESv2/renderer/RenderTarget9.h"
 #include "libGLESv2/renderer/renderer9_utils.h"
 #include "libGLESv2/Texture.h"
 
-#include "common/debug.h"
-
 namespace rx
 {
 TextureStorage9::TextureStorage9(Renderer *renderer, DWORD usage)
diff --git a/src/libGLESv2/renderer/VertexBuffer11.cpp b/src/libGLESv2/renderer/VertexBuffer11.cpp
index cc788cf..e8e09d5 100644
--- a/src/libGLESv2/renderer/VertexBuffer11.cpp
+++ b/src/libGLESv2/renderer/VertexBuffer11.cpp
@@ -10,6 +10,8 @@
 #include "libGLESv2/renderer/BufferStorage.h"
 
 #include "libGLESv2/Buffer.h"
+#include "libGLESv2/renderer/Renderer11.h"
+#include "libGLESv2/Context.h"
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/VertexBuffer11.h b/src/libGLESv2/renderer/VertexBuffer11.h
index 416b5c5..66a2ea0 100644
--- a/src/libGLESv2/renderer/VertexBuffer11.h
+++ b/src/libGLESv2/renderer/VertexBuffer11.h
@@ -10,12 +10,12 @@
 #define LIBGLESV2_RENDERER_VERTEXBUFFER11_H_
 
 #include "libGLESv2/renderer/VertexBuffer.h"
-#include "libGLESv2/renderer/Renderer11.h"
 
 #include <d3d11.h>
 
 namespace rx
 {
+class Renderer11;
 
 class VertexBuffer11 : public VertexBuffer
 {
diff --git a/src/libGLESv2/renderer/VertexBuffer9.cpp b/src/libGLESv2/renderer/VertexBuffer9.cpp
index 72f57e6..46133c8 100644
--- a/src/libGLESv2/renderer/VertexBuffer9.cpp
+++ b/src/libGLESv2/renderer/VertexBuffer9.cpp
@@ -9,11 +9,11 @@
 #include "libGLESv2/renderer/VertexBuffer9.h"
 #include "libGLESv2/renderer/vertexconversion.h"
 #include "libGLESv2/renderer/BufferStorage.h"
+#include "libGLESv2/Context.h"
+#include "libGLESv2/renderer/Renderer9.h"
 
 #include "libGLESv2/Buffer.h"
 
-#include <limits>
-
 namespace rx
 {
 
diff --git a/src/libGLESv2/renderer/VertexBuffer9.h b/src/libGLESv2/renderer/VertexBuffer9.h
index f3409d4..348eff8 100644
--- a/src/libGLESv2/renderer/VertexBuffer9.h
+++ b/src/libGLESv2/renderer/VertexBuffer9.h
@@ -10,12 +10,12 @@
 #define LIBGLESV2_RENDERER_VERTEXBUFFER9_H_
 
 #include "libGLESv2/renderer/VertexBuffer.h"
-#include "libGLESv2/renderer/Renderer9.h"
 
 #include <d3d9.h>
 
 namespace rx
 {
+class Renderer9;
 
 class VertexBuffer9 : public VertexBuffer
 {
diff --git a/src/libGLESv2/renderer/VertexDataManager.cpp b/src/libGLESv2/renderer/VertexDataManager.cpp
index 46a6175..c39ca65 100644
--- a/src/libGLESv2/renderer/VertexDataManager.cpp
+++ b/src/libGLESv2/renderer/VertexDataManager.cpp
@@ -10,19 +10,11 @@
 #include "libGLESv2/renderer/VertexDataManager.h"
 #include "libGLESv2/renderer/BufferStorage.h"
 
-#include "common/debug.h"
-
-#include "libGLESv2/renderer/Renderer9.h"
 #include "libGLESv2/Buffer.h"
 #include "libGLESv2/ProgramBinary.h"
-#include "libGLESv2/main.h"
-
-#include "libGLESv2/renderer/vertexconversion.h"
-#include "libGLESv2/renderer/IndexDataManager.h"
+#include "libGLESv2/Context.h"
 #include "libGLESv2/renderer/VertexBuffer.h"
 
-#include <limits>
-
 namespace
 {
     enum { INITIAL_STREAM_BUFFER_SIZE = 1024*1024 };
diff --git a/src/libGLESv2/renderer/VertexDataManager.h b/src/libGLESv2/renderer/VertexDataManager.h
index 1395f2b..e37aade 100644
--- a/src/libGLESv2/renderer/VertexDataManager.h
+++ b/src/libGLESv2/renderer/VertexDataManager.h
@@ -16,13 +16,23 @@
 #define GL_APICALL
 #include <GLES2/gl2.h>
 
-#include "libGLESv2/Context.h"
+#include "libGLESv2/Constants.h"
+#include "common/angleutils.h"
+
+#include <D3D11.h>
+
+namespace gl
+{
+class VertexAttribute;
+class ProgramBinary;
+}
 
 namespace rx
 {
 class BufferStorage;
 class StreamingVertexBufferInterface;
 class VertexBuffer;
+class Renderer;
 
 struct TranslatedAttribute
 {
diff --git a/src/libGLESv2/renderer/VertexDeclarationCache.cpp b/src/libGLESv2/renderer/VertexDeclarationCache.cpp
index a65a158..3f63073 100644
--- a/src/libGLESv2/renderer/VertexDeclarationCache.cpp
+++ b/src/libGLESv2/renderer/VertexDeclarationCache.cpp
@@ -7,8 +7,8 @@
 // VertexDeclarationCache.cpp: Implements a helper class to construct and cache vertex declarations.
 
 #include "libGLESv2/ProgramBinary.h"
+#include "libGLESv2/Context.h"
 #include "libGLESv2/renderer/VertexBuffer9.h"
-#include "libGLESv2/renderer/VertexDataManager.h"
 #include "libGLESv2/renderer/VertexDeclarationCache.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/VertexDeclarationCache.h b/src/libGLESv2/renderer/VertexDeclarationCache.h
index 4bfd0c6..3fc024a 100644
--- a/src/libGLESv2/renderer/VertexDeclarationCache.h
+++ b/src/libGLESv2/renderer/VertexDeclarationCache.h
@@ -9,7 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_
 #define LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_
 
-#include "libGLESv2/Context.h"
 #include "libGLESv2/renderer/VertexDataManager.h"
 
 namespace gl
diff --git a/src/libGLESv2/renderer/renderer9_utils.h b/src/libGLESv2/renderer/renderer9_utils.h
index 6dedf01..02828da 100644
--- a/src/libGLESv2/renderer/renderer9_utils.h
+++ b/src/libGLESv2/renderer/renderer9_utils.h
@@ -16,7 +16,6 @@
 #include <d3d9.h>
 
 #include "libGLESv2/utilities.h"
-#include "libGLESv2/main.h"
 
 const D3DFORMAT D3DFMT_INTZ = ((D3DFORMAT)(MAKEFOURCC('I','N','T','Z')));
 const D3DFORMAT D3DFMT_NULL = ((D3DFORMAT)(MAKEFOURCC('N','U','L','L')));
diff --git a/src/libGLESv2/renderer/vertexconversion.h b/src/libGLESv2/renderer/vertexconversion.h
index d3d373b..2178ba2 100644
--- a/src/libGLESv2/renderer/vertexconversion.h
+++ b/src/libGLESv2/renderer/vertexconversion.h
@@ -13,8 +13,6 @@
 #include <cstddef>
 #include <limits>
 
-#include "libGLESv2/Context.h" // Defines Index
-
 namespace rx
 {
 
diff --git a/src/libGLESv2/utilities.cpp b/src/libGLESv2/utilities.cpp
index 6838395..1fb0994 100644
--- a/src/libGLESv2/utilities.cpp
+++ b/src/libGLESv2/utilities.cpp
@@ -7,14 +7,7 @@
 // utilities.cpp: Conversion functions and other utility routines.
 
 #include "libGLESv2/utilities.h"
-
-#include <limits>
-#include <stdio.h>
-
-#include "common/debug.h"
-#include "common/system.h"
 #include "libGLESv2/mathutil.h"
-#include "libGLESv2/Context.h"
 
 namespace gl
 {