Add precompiled header support for the libGLESv2 project.

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@1938 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/BinaryStream.h b/src/libGLESv2/BinaryStream.h
index 5f7213b..21c2f86 100644
--- a/src/libGLESv2/BinaryStream.h
+++ b/src/libGLESv2/BinaryStream.h
@@ -9,9 +9,6 @@
 #ifndef LIBGLESV2_BINARYSTREAM_H_
 #define LIBGLESV2_BINARYSTREAM_H_
 
-#include <string>
-#include <vector>
-
 #include "common/angleutils.h"
 
 namespace gl
diff --git a/src/libGLESv2/Buffer.cpp b/src/libGLESv2/Buffer.cpp
index 87cfde7..8d5b4ef 100644
--- a/src/libGLESv2/Buffer.cpp
+++ b/src/libGLESv2/Buffer.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Buffer.h b/src/libGLESv2/Buffer.h
index e22c8f4..4376ada 100644
--- a/src/libGLESv2/Buffer.h
+++ b/src/libGLESv2/Buffer.h
@@ -11,12 +11,6 @@
 #ifndef LIBGLESV2_BUFFER_H_
 #define LIBGLESV2_BUFFER_H_
 
-#include <cstddef>
-#include <vector>
-
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
 
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index ab4948e..22666af 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -9,8 +10,6 @@
 
 #include "libGLESv2/Context.h"
 
-#include <sstream>
-
 #include "libGLESv2/main.h"
 #include "libGLESv2/utilities.h"
 #include "libGLESv2/Buffer.h"
diff --git a/src/libGLESv2/Fence.cpp b/src/libGLESv2/Fence.cpp
index 0bacd42..e4218bb 100644
--- a/src/libGLESv2/Fence.cpp
+++ b/src/libGLESv2/Fence.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Fence.h b/src/libGLESv2/Fence.h
index a9237d3..1cedebb 100644
--- a/src/libGLESv2/Fence.h
+++ b/src/libGLESv2/Fence.h
@@ -9,9 +9,6 @@
 #ifndef LIBGLESV2_FENCE_H_
 #define LIBGLESV2_FENCE_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 
 namespace rx
diff --git a/src/libGLESv2/Float16ToFloat32.cpp b/src/libGLESv2/Float16ToFloat32.cpp
index 5bf7b3f..b90d2f6 100644
--- a/src/libGLESv2/Float16ToFloat32.cpp
+++ b/src/libGLESv2/Float16ToFloat32.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index f0dd5f2..a37af9d 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Framebuffer.h b/src/libGLESv2/Framebuffer.h
index 4b29949..3673a6e 100644
--- a/src/libGLESv2/Framebuffer.h
+++ b/src/libGLESv2/Framebuffer.h
@@ -10,9 +10,6 @@
 #ifndef LIBGLESV2_FRAMEBUFFER_H_
 #define LIBGLESV2_FRAMEBUFFER_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
 
diff --git a/src/libGLESv2/HandleAllocator.cpp b/src/libGLESv2/HandleAllocator.cpp
index c498f8a..37da99a 100644
--- a/src/libGLESv2/HandleAllocator.cpp
+++ b/src/libGLESv2/HandleAllocator.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index 983495b..48a0850 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 4651dbd..5bfd01a 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -19,12 +20,8 @@
 #include "libGLESv2/Shader.h"
 #include "libGLESv2/Program.h"
 #include "libGLESv2/renderer/Renderer.h"
-
-#include "libGLESv2/renderer/Renderer.h"
 #include "libGLESv2/renderer/VertexDataManager.h"
 
-#include <algorithm>
-
 #undef near
 #undef far
 
diff --git a/src/libGLESv2/Query.cpp b/src/libGLESv2/Query.cpp
index 79fec10..bd98795 100644
--- a/src/libGLESv2/Query.cpp
+++ b/src/libGLESv2/Query.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index e67f6c9..1275137 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/ResourceManager.cpp b/src/libGLESv2/ResourceManager.cpp
index 6b388a9..58dd44f 100644
--- a/src/libGLESv2/ResourceManager.cpp
+++ b/src/libGLESv2/ResourceManager.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index d3ff6e1..ab66cc2 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 5704764..840816f 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/Uniform.cpp b/src/libGLESv2/Uniform.cpp
index ac869c9..42606e1 100644
--- a/src/libGLESv2/Uniform.cpp
+++ b/src/libGLESv2/Uniform.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //

 // Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved.

 // Use of this source code is governed by a BSD-style license that can be

diff --git a/src/libGLESv2/angletypes.h b/src/libGLESv2/angletypes.h
index 8a29e9b..37f67f4 100644
--- a/src/libGLESv2/angletypes.h
+++ b/src/libGLESv2/angletypes.h
@@ -9,9 +9,6 @@
 #ifndef LIBGLESV2_ANGLETYPES_H_
 #define LIBGLESV2_ANGLETYPES_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 namespace gl
 {
 
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 9ec402a..d3b1aa4 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -6,10 +7,6 @@
 
 // libGLESv2.cpp: Implements the exported OpenGL ES 2.0 functions.
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
 #include "common/version.h"
 
 #include "libGLESv2/main.h"
diff --git a/src/libGLESv2/libGLESv2.vcxproj b/src/libGLESv2/libGLESv2.vcxproj
index 8838d99..b38c28d 100644
--- a/src/libGLESv2/libGLESv2.vcxproj
+++ b/src/libGLESv2/libGLESv2.vcxproj
@@ -84,17 +84,17 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

       <Optimization>Disabled</Optimization>

-      <AdditionalIncludeDirectories>$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <MinimalRebuild>true</MinimalRebuild>

       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

+      <PrecompiledHeader>Use</PrecompiledHeader>

       <WarningLevel>Level4</WarningLevel>

       <TreatWarningAsError>true</TreatWarningAsError>

       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

       <DisableSpecificWarnings>4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <PrecompiledHeaderFile>precompiled.h</PrecompiledHeaderFile>

     </ClCompile>

     <Link>

       <AdditionalDependencies>d3d9.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>

@@ -119,15 +119,15 @@
     <ClCompile>

       <Optimization>MaxSpeed</Optimization>

       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>

-      <AdditionalIncludeDirectories>$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

+      <PrecompiledHeader>Use</PrecompiledHeader>

       <WarningLevel>Level4</WarningLevel>

       <TreatWarningAsError>true</TreatWarningAsError>

       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

       <DisableSpecificWarnings>4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <PrecompiledHeaderFile>precompiled.h</PrecompiledHeaderFile>

     </ClCompile>

     <Link>

       <AdditionalDependencies>d3d9.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>

@@ -162,12 +162,12 @@
       <MinimalRebuild>true</MinimalRebuild>

       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

+      <PrecompiledHeader>Use</PrecompiledHeader>

       <WarningLevel>Level4</WarningLevel>

       <DisableSpecificWarnings>4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings)</DisableSpecificWarnings>

       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

       <TreatWarningAsError>true</TreatWarningAsError>

+      <PrecompiledHeaderFile>precompiled.h</PrecompiledHeaderFile>

     </ClCompile>

     <Link>

       <AdditionalDependencies>d3d9.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>

@@ -198,12 +198,12 @@
       <AdditionalIncludeDirectories>$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

+      <PrecompiledHeader>Use</PrecompiledHeader>

       <WarningLevel>Level4</WarningLevel>

       <DisableSpecificWarnings>4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings)</DisableSpecificWarnings>

       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

       <TreatWarningAsError>true</TreatWarningAsError>

+      <PrecompiledHeaderFile>precompiled.h</PrecompiledHeaderFile>

     </ClCompile>

     <Link>

       <AdditionalDependencies>d3d9.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>

@@ -228,16 +228,32 @@
     </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

-    <ClCompile Include="..\third_party\murmurhash\MurmurHash3.cpp" />

+    <ClCompile Include="..\third_party\murmurhash\MurmurHash3.cpp">

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>

+    </ClCompile>

     <ClCompile Include="Buffer.cpp" />

     <ClCompile Include="Context.cpp" />

-    <ClCompile Include="..\common\debug.cpp" />

+    <ClCompile Include="..\common\debug.cpp">

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>

+    </ClCompile>

     <ClCompile Include="Fence.cpp" />

     <ClCompile Include="Float16ToFloat32.cpp" />

     <ClCompile Include="Framebuffer.cpp" />

     <ClCompile Include="HandleAllocator.cpp" />

     <ClCompile Include="libGLESv2.cpp" />

     <ClCompile Include="main.cpp" />

+    <ClCompile Include="precompiled.cpp">

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>

+    </ClCompile>

     <ClCompile Include="Program.cpp" />

     <ClCompile Include="ProgramBinary.cpp" />

     <ClCompile Include="Query.cpp" />

@@ -303,6 +319,7 @@
     <ClInclude Include="HandleAllocator.h" />

     <ClInclude Include="main.h" />

     <ClInclude Include="mathutil.h" />

+    <ClInclude Include="precompiled.h" />

     <ClInclude Include="Program.h" />

     <ClInclude Include="ProgramBinary.h" />

     <ClInclude Include="Query.h" />

diff --git a/src/libGLESv2/libGLESv2.vcxproj.filters b/src/libGLESv2/libGLESv2.vcxproj.filters
index 5044c9d..ebbd6c5 100644
--- a/src/libGLESv2/libGLESv2.vcxproj.filters
+++ b/src/libGLESv2/libGLESv2.vcxproj.filters
@@ -215,6 +215,9 @@
     <ClCompile Include="renderer\VertexDeclarationCache.cpp">

       <Filter>Source Files\Renderer9</Filter>

     </ClCompile>

+    <ClCompile Include="precompiled.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="BinaryStream.h">

@@ -475,6 +478,9 @@
     <ClInclude Include="constants.h">

       <Filter>Header Files</Filter>

     </ClInclude>

+    <ClInclude Include="precompiled.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

   </ItemGroup>

   <ItemGroup>

     <None Include="renderer\shaders\Blit.ps">

diff --git a/src/libGLESv2/main.cpp b/src/libGLESv2/main.cpp
index 97b9956..6d7a241 100644
--- a/src/libGLESv2/main.cpp
+++ b/src/libGLESv2/main.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/main.h b/src/libGLESv2/main.h
index 42ad32c..9168a22 100644
--- a/src/libGLESv2/main.h
+++ b/src/libGLESv2/main.h
@@ -9,13 +9,6 @@
 #ifndef LIBGLESV2_MAIN_H_
 #define LIBGLESV2_MAIN_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-#define EGLAPI
-#include <EGL/egl.h>
-
 #include "common/debug.h"
 #include "common/system.h"
 
diff --git a/src/libGLESv2/mathutil.h b/src/libGLESv2/mathutil.h
index 8a93874..672c443 100644
--- a/src/libGLESv2/mathutil.h
+++ b/src/libGLESv2/mathutil.h
@@ -9,9 +9,6 @@
 #ifndef LIBGLESV2_MATHUTIL_H_
 #define LIBGLESV2_MATHUTIL_H_
 
-#include <intrin.h>
-#include <math.h>
-
 #include "common/system.h"
 #include "common/debug.h"
 
diff --git a/src/libGLESv2/precompiled.cpp b/src/libGLESv2/precompiled.cpp
new file mode 100644
index 0000000..2621cd6
--- /dev/null
+++ b/src/libGLESv2/precompiled.cpp
@@ -0,0 +1,9 @@
+//
+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// precompiled.cpp: Precompiled header source file for libGLESv2.
+
+#include "precompiled.h"
diff --git a/src/libGLESv2/precompiled.h b/src/libGLESv2/precompiled.h
new file mode 100644
index 0000000..a850d57
--- /dev/null
+++ b/src/libGLESv2/precompiled.h
@@ -0,0 +1,42 @@
+//
+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// precompiled.h: Precompiled header file for libGLESv2.
+
+#define GL_APICALL
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#define EGLAPI
+#include <EGL/egl.h>
+
+#include <assert.h>
+#include <cstddef>
+#include <float.h>
+#include <intrin.h>
+#include <math.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <algorithm> // for std::min and std::max
+#include <limits>
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include <d3d9.h>
+#include <D3D11.h>
+#include <dxgi.h>
+#include <D3Dcompiler.h>
+
+#ifdef _MSC_VER
+#include <hash_map>
+#endif
diff --git a/src/libGLESv2/renderer/Blit.cpp b/src/libGLESv2/renderer/Blit.cpp
index 6d56fd1..17fa283 100644
--- a/src/libGLESv2/renderer/Blit.cpp
+++ b/src/libGLESv2/renderer/Blit.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Blit.h b/src/libGLESv2/renderer/Blit.h
index 108b895..3718028 100644
--- a/src/libGLESv2/renderer/Blit.h
+++ b/src/libGLESv2/renderer/Blit.h
@@ -9,13 +9,6 @@
 #ifndef LIBGLESV2_BLIT_H_
 #define LIBGLESV2_BLIT_H_
 
-#include <map>
-
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
-#include <d3d9.h>
-
 #include "common/angleutils.h"
 
 namespace gl
diff --git a/src/libGLESv2/renderer/BufferStorage.cpp b/src/libGLESv2/renderer/BufferStorage.cpp
index 38eb6a1..a49b7ba 100644
--- a/src/libGLESv2/renderer/BufferStorage.cpp
+++ b/src/libGLESv2/renderer/BufferStorage.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/BufferStorage11.cpp b/src/libGLESv2/renderer/BufferStorage11.cpp
index 1b09942..4c37bdb 100644
--- a/src/libGLESv2/renderer/BufferStorage11.cpp
+++ b/src/libGLESv2/renderer/BufferStorage11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/BufferStorage11.h b/src/libGLESv2/renderer/BufferStorage11.h
index 4a5556f..b62348b 100644
--- a/src/libGLESv2/renderer/BufferStorage11.h
+++ b/src/libGLESv2/renderer/BufferStorage11.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/BufferStorage.h"
 
-#include <D3D11.h>
-
 namespace rx
 {
 class Renderer11;
diff --git a/src/libGLESv2/renderer/BufferStorage9.cpp b/src/libGLESv2/renderer/BufferStorage9.cpp
index fd4fce8..7fc14fc 100644
--- a/src/libGLESv2/renderer/BufferStorage9.cpp
+++ b/src/libGLESv2/renderer/BufferStorage9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -8,7 +9,6 @@
 
 #include "libGLESv2/renderer/BufferStorage9.h"
 #include "common/debug.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 92bd3a4..9d11c9a 100644
--- a/src/libGLESv2/renderer/Fence11.cpp
+++ b/src/libGLESv2/renderer/Fence11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Fence11.h b/src/libGLESv2/renderer/Fence11.h
index 37fa534..a5398bc 100644
--- a/src/libGLESv2/renderer/Fence11.h
+++ b/src/libGLESv2/renderer/Fence11.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/FenceImpl.h"
 
-#include <D3D11.h>
-
 namespace rx
 {
 class Renderer11;
diff --git a/src/libGLESv2/renderer/Fence9.cpp b/src/libGLESv2/renderer/Fence9.cpp
index 165fe52..86064d7 100644
--- a/src/libGLESv2/renderer/Fence9.cpp
+++ b/src/libGLESv2/renderer/Fence9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Fence9.h b/src/libGLESv2/renderer/Fence9.h
index 6d17263..9f17641 100644
--- a/src/libGLESv2/renderer/Fence9.h
+++ b/src/libGLESv2/renderer/Fence9.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/FenceImpl.h"
 
-#include <d3d9.h>
-
 namespace rx
 {
 class Renderer9;
diff --git a/src/libGLESv2/renderer/FenceImpl.h b/src/libGLESv2/renderer/FenceImpl.h
index 2a6e6fe..d7f2102 100644
--- a/src/libGLESv2/renderer/FenceImpl.h
+++ b/src/libGLESv2/renderer/FenceImpl.h
@@ -9,9 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_FENCEIMPL_H_
 #define LIBGLESV2_RENDERER_FENCEIMPL_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/Image.cpp b/src/libGLESv2/renderer/Image.cpp
index 473c1e1..57239ef 100644
--- a/src/libGLESv2/renderer/Image.cpp
+++ b/src/libGLESv2/renderer/Image.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -8,10 +9,6 @@
 // renderer-specific classes which will define the interface to the underlying
 // surfaces or resources.
 
-#include <GLES2/gl2.h>
-#include <string.h>
-#include <stdlib.h>
-
 #include "libGLESv2/renderer/Image.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/Image11.cpp b/src/libGLESv2/renderer/Image11.cpp
index 53a726b..57f7478 100644
--- a/src/libGLESv2/renderer/Image11.cpp
+++ b/src/libGLESv2/renderer/Image11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Image11.h b/src/libGLESv2/renderer/Image11.h
index 7693aa5..ce56e86 100644
--- a/src/libGLESv2/renderer/Image11.h
+++ b/src/libGLESv2/renderer/Image11.h
@@ -10,8 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_IMAGE11_H_
 #define LIBGLESV2_RENDERER_IMAGE11_H_
 
-#include <GLES2/gl2.h>
-
 #include "libGLESv2/renderer/Image.h"
 
 #include "common/debug.h"
diff --git a/src/libGLESv2/renderer/Image9.cpp b/src/libGLESv2/renderer/Image9.cpp
index e0b1cde..0dd5ae6 100644
--- a/src/libGLESv2/renderer/Image9.cpp
+++ b/src/libGLESv2/renderer/Image9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Image9.h b/src/libGLESv2/renderer/Image9.h
index 5c00119..2fbbca3 100644
--- a/src/libGLESv2/renderer/Image9.h
+++ b/src/libGLESv2/renderer/Image9.h
@@ -10,10 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_IMAGE9_H_
 #define LIBGLESV2_RENDERER_IMAGE9_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <d3d9.h>
-
 #include "libGLESv2/renderer/Image.h"
 #include "common/debug.h"
 
diff --git a/src/libGLESv2/renderer/ImageSSE2.cpp b/src/libGLESv2/renderer/ImageSSE2.cpp
index 309f677..b2a90ca 100644
--- a/src/libGLESv2/renderer/ImageSSE2.cpp
+++ b/src/libGLESv2/renderer/ImageSSE2.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -11,8 +12,6 @@
 #include "libGLESv2/Texture.h"
 #include "libGLESv2/renderer/Image.h"
 
-#include <intrin.h>
-
 namespace rx
 {
 
diff --git a/src/libGLESv2/renderer/IndexBuffer.cpp b/src/libGLESv2/renderer/IndexBuffer.cpp
index 9059579..16fd782 100644
--- a/src/libGLESv2/renderer/IndexBuffer.cpp
+++ b/src/libGLESv2/renderer/IndexBuffer.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/IndexBuffer.h b/src/libGLESv2/renderer/IndexBuffer.h
index 85418d4..1afbd62 100644
--- a/src/libGLESv2/renderer/IndexBuffer.h
+++ b/src/libGLESv2/renderer/IndexBuffer.h
@@ -10,11 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_INDEXBUFFER_H_
 #define LIBGLESV2_RENDERER_INDEXBUFFER_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
-#include <map>
-
 #include "common/angleutils.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/IndexBuffer11.cpp b/src/libGLESv2/renderer/IndexBuffer11.cpp
index 9b3d2e6..2a442ec 100644
--- a/src/libGLESv2/renderer/IndexBuffer11.cpp
+++ b/src/libGLESv2/renderer/IndexBuffer11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/IndexBuffer11.h b/src/libGLESv2/renderer/IndexBuffer11.h
index 169189d..39a6194 100644
--- a/src/libGLESv2/renderer/IndexBuffer11.h
+++ b/src/libGLESv2/renderer/IndexBuffer11.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/IndexBuffer.h"
 
-#include <d3d11.h>
-
 namespace rx
 {
 class Renderer11;
diff --git a/src/libGLESv2/renderer/IndexBuffer9.cpp b/src/libGLESv2/renderer/IndexBuffer9.cpp
index e59efaf..c6d83c5 100644
--- a/src/libGLESv2/renderer/IndexBuffer9.cpp
+++ b/src/libGLESv2/renderer/IndexBuffer9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/IndexBuffer9.h b/src/libGLESv2/renderer/IndexBuffer9.h
index e00f1c7..6801867 100644
--- a/src/libGLESv2/renderer/IndexBuffer9.h
+++ b/src/libGLESv2/renderer/IndexBuffer9.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/IndexBuffer.h"
 
-#include <d3d9.h>
-
 namespace rx
 {
 class Renderer9;
diff --git a/src/libGLESv2/renderer/IndexDataManager.cpp b/src/libGLESv2/renderer/IndexDataManager.cpp
index 6d45f87..1979b76 100644
--- a/src/libGLESv2/renderer/IndexDataManager.cpp
+++ b/src/libGLESv2/renderer/IndexDataManager.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/IndexDataManager.h b/src/libGLESv2/renderer/IndexDataManager.h
index 506cfdb..0e77c81 100644
--- a/src/libGLESv2/renderer/IndexDataManager.h
+++ b/src/libGLESv2/renderer/IndexDataManager.h
@@ -10,12 +10,6 @@
 #ifndef LIBGLESV2_INDEXDATAMANAGER_H_
 #define LIBGLESV2_INDEXDATAMANAGER_H_
 
-#include <vector>
-#include <cstddef>
-
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 
 namespace
diff --git a/src/libGLESv2/renderer/InputLayoutCache.cpp b/src/libGLESv2/renderer/InputLayoutCache.cpp
index 3ac0995..0402bb3 100644
--- a/src/libGLESv2/renderer/InputLayoutCache.cpp
+++ b/src/libGLESv2/renderer/InputLayoutCache.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/InputLayoutCache.h b/src/libGLESv2/renderer/InputLayoutCache.h
index cc952ab..d95f39f 100644
--- a/src/libGLESv2/renderer/InputLayoutCache.h
+++ b/src/libGLESv2/renderer/InputLayoutCache.h
@@ -13,12 +13,6 @@
 #include "libGLESv2/Constants.h"
 #include "common/angleutils.h"
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
-#include <D3D11.h>
-#include <unordered_map>
-
 namespace gl
 {
 class ProgramBinary;
diff --git a/src/libGLESv2/renderer/Query11.cpp b/src/libGLESv2/renderer/Query11.cpp
index 06fbf76..33afce5 100644
--- a/src/libGLESv2/renderer/Query11.cpp
+++ b/src/libGLESv2/renderer/Query11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Query11.h b/src/libGLESv2/renderer/Query11.h
index da2d4c8..0a03de7 100644
--- a/src/libGLESv2/renderer/Query11.h
+++ b/src/libGLESv2/renderer/Query11.h
@@ -10,7 +10,6 @@
 #define LIBGLESV2_RENDERER_QUERY11_H_
 
 #include "libGLESv2/renderer/QueryImpl.h"
-#include <D3D11.h>
 
 namespace rx
 {
diff --git a/src/libGLESv2/renderer/Query9.cpp b/src/libGLESv2/renderer/Query9.cpp
index e34424f..c0fd82e 100644
--- a/src/libGLESv2/renderer/Query9.cpp
+++ b/src/libGLESv2/renderer/Query9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/Query9.h b/src/libGLESv2/renderer/Query9.h
index 1573211..47eef89 100644
--- a/src/libGLESv2/renderer/Query9.h
+++ b/src/libGLESv2/renderer/Query9.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/QueryImpl.h"
 
-#include <d3d9.h>
-
 namespace rx
 {
 class Renderer9;
diff --git a/src/libGLESv2/renderer/QueryImpl.h b/src/libGLESv2/renderer/QueryImpl.h
index 17dbaf5..2ae7902 100644
--- a/src/libGLESv2/renderer/QueryImpl.h
+++ b/src/libGLESv2/renderer/QueryImpl.h
@@ -9,9 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_QUERYIMPL_H_
 #define LIBGLESV2_RENDERER_QUERYIMPL_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/RenderStateCache.cpp b/src/libGLESv2/renderer/RenderStateCache.cpp
index 7fbc960..3d80088 100644
--- a/src/libGLESv2/renderer/RenderStateCache.cpp
+++ b/src/libGLESv2/renderer/RenderStateCache.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/RenderStateCache.h b/src/libGLESv2/renderer/RenderStateCache.h
index 5e52726..f8b5111 100644
--- a/src/libGLESv2/renderer/RenderStateCache.h
+++ b/src/libGLESv2/renderer/RenderStateCache.h
@@ -13,9 +13,6 @@
 #include "libGLESv2/angletypes.h"
 #include "common/angleutils.h"
 
-#include <D3D11.h>
-#include <unordered_map>
-
 namespace rx
 {
 
diff --git a/src/libGLESv2/renderer/RenderTarget.h b/src/libGLESv2/renderer/RenderTarget.h
index 914e5f9..80de39f 100644
--- a/src/libGLESv2/renderer/RenderTarget.h
+++ b/src/libGLESv2/renderer/RenderTarget.h
@@ -10,9 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERTARGET_H_
 #define LIBGLESV2_RENDERER_RENDERTARGET_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/RenderTarget11.cpp b/src/libGLESv2/renderer/RenderTarget11.cpp
index c9d8de6..cf226de 100644
--- a/src/libGLESv2/renderer/RenderTarget11.cpp
+++ b/src/libGLESv2/renderer/RenderTarget11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/RenderTarget11.h b/src/libGLESv2/renderer/RenderTarget11.h
index 2020efa..dc697cf 100644
--- a/src/libGLESv2/renderer/RenderTarget11.h
+++ b/src/libGLESv2/renderer/RenderTarget11.h
@@ -10,8 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERTARGET11_H_
 #define LIBGLESV2_RENDERER_RENDERTARGET11_H_
 
-#include <d3d11.h>
-
 #include "libGLESv2/renderer/RenderTarget.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/RenderTarget9.cpp b/src/libGLESv2/renderer/RenderTarget9.cpp
index 9d5aae4..a84c709 100644
--- a/src/libGLESv2/renderer/RenderTarget9.cpp
+++ b/src/libGLESv2/renderer/RenderTarget9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/RenderTarget9.h b/src/libGLESv2/renderer/RenderTarget9.h
index 4858bf5..faf8ad1 100644
--- a/src/libGLESv2/renderer/RenderTarget9.h
+++ b/src/libGLESv2/renderer/RenderTarget9.h
@@ -10,8 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERTARGET9_H_
 #define LIBGLESV2_RENDERER_RENDERTARGET9_H_
 
-#include <d3d9.h>
-
 #include "libGLESv2/renderer/RenderTarget.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/Renderer.cpp b/src/libGLESv2/renderer/Renderer.cpp
index ae94b79..f21c8b5 100644
--- a/src/libGLESv2/renderer/Renderer.cpp
+++ b/src/libGLESv2/renderer/Renderer.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -6,8 +7,6 @@
 
 // Renderer.cpp: Implements EGL dependencies for creating and destroying Renderer instances.
 
-#include <D3Dcompiler.h>
-
 #include "libGLESv2/main.h"
 #include "libGLESv2/Program.h"
 #include "libGLESv2/renderer/Renderer.h"
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index a1efc3f..493de7e 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -10,12 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERER_H_
 #define LIBGLESV2_RENDERER_RENDERER_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#define EGLAPI
-#include <EGL/egl.h>
-
 #include "libGLESv2/Uniform.h"
 #include "libGLESv2/angletypes.h"
 
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index da561c2..a60a826 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -6,8 +7,6 @@
 
 // Renderer11.cpp: Implements a back-end specific class for the D3D11 renderer.
 
-#include <D3Dcompiler.h>
-
 #include "libGLESv2/main.h"
 #include "libGLESv2/utilities.h"
 #include "libGLESv2/Buffer.h"
@@ -40,8 +39,6 @@
 
 #include "libEGL/Display.h"
 
-#include <sstream>
-
 namespace rx
 {
 static const DXGI_FORMAT RenderTargetFormats[] =
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 00190da..0a95f83 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -9,15 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERER11_H_
 #define LIBGLESV2_RENDERER_RENDERER11_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#define EGLAPI
-#include <EGL/egl.h>
-
-#include <dxgi.h>
-#include <d3d11.h>
-
 #include "common/angleutils.h"
 #include "libGLESv2/angletypes.h"
 #include "libGLESv2/mathutil.h"
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index a863a79..6fc3f6b 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -6,8 +7,6 @@
 
 // Renderer9.cpp: Implements a back-end specific class for the D3D9 renderer.
 
-#include <D3Dcompiler.h>
-
 #include "libGLESv2/main.h"
 #include "libGLESv2/Buffer.h"
 #include "libGLESv2/Texture.h"
@@ -31,8 +30,6 @@
 
 #include "libEGL/Display.h"
 
-#include <sstream>
-
 // Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros
 #define REF_RAST 0
 
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index 5ea2305..d247179 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -9,18 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERER9_H_
 #define LIBGLESV2_RENDERER_RENDERER9_H_
 
-#include <set>
-#include <map>
-#include <vector>
-
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#define EGLAPI
-#include <EGL/egl.h>
-
-#include <d3d9.h>
-
 #include "common/angleutils.h"
 #include "libGLESv2/mathutil.h"
 #include "libGLESv2/renderer/ShaderCache.h"
diff --git a/src/libGLESv2/renderer/ShaderCache.h b/src/libGLESv2/renderer/ShaderCache.h
index 93d7267..4391ac2 100644
--- a/src/libGLESv2/renderer/ShaderCache.h
+++ b/src/libGLESv2/renderer/ShaderCache.h
@@ -10,14 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_SHADER_CACHE_H_
 #define LIBGLESV2_RENDERER_SHADER_CACHE_H_
 
-#include <d3d9.h>
-
-#ifdef _MSC_VER
-#include <hash_map>
-#else
-#include <unordered_map>
-#endif
-
 #include "common/debug.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/ShaderExecutable11.cpp b/src/libGLESv2/renderer/ShaderExecutable11.cpp
index 352d505..e1eb560 100644
--- a/src/libGLESv2/renderer/ShaderExecutable11.cpp
+++ b/src/libGLESv2/renderer/ShaderExecutable11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/ShaderExecutable11.h b/src/libGLESv2/renderer/ShaderExecutable11.h
index 0801e07..c6ec1cf 100644
--- a/src/libGLESv2/renderer/ShaderExecutable11.h
+++ b/src/libGLESv2/renderer/ShaderExecutable11.h
@@ -10,8 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_
 #define LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_
 
-#include <d3d11.h>
-
 #include "libGLESv2/renderer/ShaderExecutable.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/ShaderExecutable9.cpp b/src/libGLESv2/renderer/ShaderExecutable9.cpp
index 5efac3f..98868a3 100644
--- a/src/libGLESv2/renderer/ShaderExecutable9.cpp
+++ b/src/libGLESv2/renderer/ShaderExecutable9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/ShaderExecutable9.h b/src/libGLESv2/renderer/ShaderExecutable9.h
index 3448774..fa1e6c2 100644
--- a/src/libGLESv2/renderer/ShaderExecutable9.h
+++ b/src/libGLESv2/renderer/ShaderExecutable9.h
@@ -10,8 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_
 #define LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_
 
-#include <d3d9.h>
-
 #include "libGLESv2/renderer/ShaderExecutable.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/SwapChain.h b/src/libGLESv2/renderer/SwapChain.h
index 512b53d..a23723f 100644
--- a/src/libGLESv2/renderer/SwapChain.h
+++ b/src/libGLESv2/renderer/SwapChain.h
@@ -10,12 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN_H_
 #define LIBGLESV2_RENDERER_SWAPCHAIN_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#define EGLAPI
-#include <EGL/egl.h>
-
 #include "common/angleutils.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/SwapChain11.cpp b/src/libGLESv2/renderer/SwapChain11.cpp
index 275bf7a..846e53a 100644
--- a/src/libGLESv2/renderer/SwapChain11.cpp
+++ b/src/libGLESv2/renderer/SwapChain11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/SwapChain11.h b/src/libGLESv2/renderer/SwapChain11.h
index ae414c8..d3a785f 100644
--- a/src/libGLESv2/renderer/SwapChain11.h
+++ b/src/libGLESv2/renderer/SwapChain11.h
@@ -9,8 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN11_H_
 #define LIBGLESV2_RENDERER_SWAPCHAIN11_H_
 
-#include <d3d11.h>
-
 #include "common/angleutils.h"
 #include "libGLESv2/renderer/SwapChain.h"
 
diff --git a/src/libGLESv2/renderer/SwapChain9.cpp b/src/libGLESv2/renderer/SwapChain9.cpp
index 4e6b637..5a728c0 100644
--- a/src/libGLESv2/renderer/SwapChain9.cpp
+++ b/src/libGLESv2/renderer/SwapChain9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/SwapChain9.h b/src/libGLESv2/renderer/SwapChain9.h
index dc7032a..444d7a9 100644
--- a/src/libGLESv2/renderer/SwapChain9.h
+++ b/src/libGLESv2/renderer/SwapChain9.h
@@ -9,8 +9,6 @@
 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN9_H_
 #define LIBGLESV2_RENDERER_SWAPCHAIN9_H_
 
-#include <d3d9.h>
-
 #include "common/angleutils.h"
 #include "libGLESv2/renderer/SwapChain.h"
 
diff --git a/src/libGLESv2/renderer/TextureStorage.cpp b/src/libGLESv2/renderer/TextureStorage.cpp
index 32d560e..00b316f 100644
--- a/src/libGLESv2/renderer/TextureStorage.cpp
+++ b/src/libGLESv2/renderer/TextureStorage.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/TextureStorage.h b/src/libGLESv2/renderer/TextureStorage.h
index 3884d0e..edddb75 100644
--- a/src/libGLESv2/renderer/TextureStorage.h
+++ b/src/libGLESv2/renderer/TextureStorage.h
@@ -11,9 +11,6 @@
 #ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE_H_
 #define LIBGLESV2_RENDERER_TEXTURESTORAGE_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/debug.h"
 
 namespace rx
diff --git a/src/libGLESv2/renderer/TextureStorage11.cpp b/src/libGLESv2/renderer/TextureStorage11.cpp
index 899267a..e534565 100644
--- a/src/libGLESv2/renderer/TextureStorage11.cpp
+++ b/src/libGLESv2/renderer/TextureStorage11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/TextureStorage11.h b/src/libGLESv2/renderer/TextureStorage11.h
index 4532d2f..6ab8258 100644
--- a/src/libGLESv2/renderer/TextureStorage11.h
+++ b/src/libGLESv2/renderer/TextureStorage11.h
@@ -10,8 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_
 #define LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_
 
-#include <d3d11.h>
-
 #include "libGLESv2/Texture.h"
 #include "libGLESv2/renderer/TextureStorage.h"
 
diff --git a/src/libGLESv2/renderer/TextureStorage9.cpp b/src/libGLESv2/renderer/TextureStorage9.cpp
index 74dcda9..74058fe 100644
--- a/src/libGLESv2/renderer/TextureStorage9.cpp
+++ b/src/libGLESv2/renderer/TextureStorage9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/TextureStorage9.h b/src/libGLESv2/renderer/TextureStorage9.h
index 443dac4..86f551a 100644
--- a/src/libGLESv2/renderer/TextureStorage9.h
+++ b/src/libGLESv2/renderer/TextureStorage9.h
@@ -11,10 +11,6 @@
 #ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE9_H_
 #define LIBGLESV2_RENDERER_TEXTURESTORAGE9_H_
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <d3d9.h>
-
 #include "libGLESv2/renderer/TextureStorage.h"
 #include "common/debug.h"
 
diff --git a/src/libGLESv2/renderer/VertexBuffer.cpp b/src/libGLESv2/renderer/VertexBuffer.cpp
index 5c8ddc8..16e1486 100644
--- a/src/libGLESv2/renderer/VertexBuffer.cpp
+++ b/src/libGLESv2/renderer/VertexBuffer.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/VertexBuffer.h b/src/libGLESv2/renderer/VertexBuffer.h
index b2fea12..6ecffd0 100644
--- a/src/libGLESv2/renderer/VertexBuffer.h
+++ b/src/libGLESv2/renderer/VertexBuffer.h
@@ -10,12 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_VERTEXBUFFER_H_
 #define LIBGLESV2_RENDERER_VERTEXBUFFER_H_
 
-#include <vector>
-#include <cstddef>
-
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "common/angleutils.h"
 
 namespace gl
diff --git a/src/libGLESv2/renderer/VertexBuffer11.cpp b/src/libGLESv2/renderer/VertexBuffer11.cpp
index e8e09d5..92c8755 100644
--- a/src/libGLESv2/renderer/VertexBuffer11.cpp
+++ b/src/libGLESv2/renderer/VertexBuffer11.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/VertexBuffer11.h b/src/libGLESv2/renderer/VertexBuffer11.h
index 66a2ea0..75e0250 100644
--- a/src/libGLESv2/renderer/VertexBuffer11.h
+++ b/src/libGLESv2/renderer/VertexBuffer11.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/VertexBuffer.h"
 
-#include <d3d11.h>
-
 namespace rx
 {
 class Renderer11;
diff --git a/src/libGLESv2/renderer/VertexBuffer9.cpp b/src/libGLESv2/renderer/VertexBuffer9.cpp
index 46133c8..76dc73e 100644
--- a/src/libGLESv2/renderer/VertexBuffer9.cpp
+++ b/src/libGLESv2/renderer/VertexBuffer9.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/VertexBuffer9.h b/src/libGLESv2/renderer/VertexBuffer9.h
index 348eff8..f771635 100644
--- a/src/libGLESv2/renderer/VertexBuffer9.h
+++ b/src/libGLESv2/renderer/VertexBuffer9.h
@@ -11,8 +11,6 @@
 
 #include "libGLESv2/renderer/VertexBuffer.h"
 
-#include <d3d9.h>
-
 namespace rx
 {
 class Renderer9;
diff --git a/src/libGLESv2/renderer/VertexDataManager.cpp b/src/libGLESv2/renderer/VertexDataManager.cpp
index c39ca65..ecf3ba8 100644
--- a/src/libGLESv2/renderer/VertexDataManager.cpp
+++ b/src/libGLESv2/renderer/VertexDataManager.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/VertexDataManager.h b/src/libGLESv2/renderer/VertexDataManager.h
index e37aade..28387e6 100644
--- a/src/libGLESv2/renderer/VertexDataManager.h
+++ b/src/libGLESv2/renderer/VertexDataManager.h
@@ -10,17 +10,9 @@
 #ifndef LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_
 #define LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_
 
-#include <vector>
-#include <cstddef>
-
-#define GL_APICALL
-#include <GLES2/gl2.h>
-
 #include "libGLESv2/Constants.h"
 #include "common/angleutils.h"
 
-#include <D3D11.h>
-
 namespace gl
 {
 class VertexAttribute;
diff --git a/src/libGLESv2/renderer/VertexDeclarationCache.cpp b/src/libGLESv2/renderer/VertexDeclarationCache.cpp
index 3f63073..9b83a64 100644
--- a/src/libGLESv2/renderer/VertexDeclarationCache.cpp
+++ b/src/libGLESv2/renderer/VertexDeclarationCache.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/renderer11_utils.cpp b/src/libGLESv2/renderer/renderer11_utils.cpp
index 9f63dce..f32d161 100644
--- a/src/libGLESv2/renderer/renderer11_utils.cpp
+++ b/src/libGLESv2/renderer/renderer11_utils.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
@@ -11,8 +12,6 @@
 
 #include "common/debug.h"
 
-#include <float.h>
-
 namespace gl_d3d11
 {
 
diff --git a/src/libGLESv2/renderer/renderer11_utils.h b/src/libGLESv2/renderer/renderer11_utils.h
index 0fbff21..ff993dd 100644
--- a/src/libGLESv2/renderer/renderer11_utils.h
+++ b/src/libGLESv2/renderer/renderer11_utils.h
@@ -10,11 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERER11_UTILS_H
 #define LIBGLESV2_RENDERER_RENDERER11_UTILS_H
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#include <d3d11.h>
-
 #include "libGLESv2/angletypes.h"
 
 namespace gl_d3d11
diff --git a/src/libGLESv2/renderer/renderer9_utils.cpp b/src/libGLESv2/renderer/renderer9_utils.cpp
index 3474f08..da75d46 100644
--- a/src/libGLESv2/renderer/renderer9_utils.cpp
+++ b/src/libGLESv2/renderer/renderer9_utils.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
diff --git a/src/libGLESv2/renderer/renderer9_utils.h b/src/libGLESv2/renderer/renderer9_utils.h
index 02828da..fae598a 100644
--- a/src/libGLESv2/renderer/renderer9_utils.h
+++ b/src/libGLESv2/renderer/renderer9_utils.h
@@ -10,11 +10,6 @@
 #ifndef LIBGLESV2_RENDERER_RENDERER9_UTILS_H
 #define LIBGLESV2_RENDERER_RENDERER9_UTILS_H
 
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#include <d3d9.h>
-
 #include "libGLESv2/utilities.h"
 
 const D3DFORMAT D3DFMT_INTZ = ((D3DFORMAT)(MAKEFOURCC('I','N','T','Z')));
diff --git a/src/libGLESv2/renderer/vertexconversion.h b/src/libGLESv2/renderer/vertexconversion.h
index 2178ba2..590b9d4 100644
--- a/src/libGLESv2/renderer/vertexconversion.h
+++ b/src/libGLESv2/renderer/vertexconversion.h
@@ -10,9 +10,6 @@
 #ifndef LIBGLESV2_VERTEXCONVERSION_H_
 #define LIBGLESV2_VERTEXCONVERSION_H_
 
-#include <cstddef>
-#include <limits>
-
 namespace rx
 {
 
diff --git a/src/libGLESv2/utilities.cpp b/src/libGLESv2/utilities.cpp
index 1fb0994..9809b9d 100644
--- a/src/libGLESv2/utilities.cpp
+++ b/src/libGLESv2/utilities.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
 //
 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be