Use a common include for GL headers.

A common place to define required GL includes gives us a nice
point to centralize GL customizations. In the header currently
are the basic GLES headers with extensions, and a define
carried over from desktop GL.

BUG=angle:466

Change-Id: I6fc61947b4514654ec21355a786904eac04656c0
Reviewed-on: https://chromium-review.googlesource.com/204936
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Nicolas Capens <nicolascapens@chromium.org>
diff --git a/include/angle_gl.h b/include/angle_gl.h
new file mode 100644
index 0000000..d093f75
--- /dev/null
+++ b/include/angle_gl.h
@@ -0,0 +1,23 @@
+//
+// Copyright (c) 2014 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.
+//
+// angle_gl.h:
+//   Includes all necessary GL headers and definitions for ANGLE.
+//
+
+#ifndef ANGLE_GL_H_
+#define ANGLE_GL_H_
+
+#include "GLES2/gl2.h"
+#include "GLES2/gl2ext.h"
+#include "GLES3/gl3.h"
+#include "GLES3/gl3ext.h"
+
+// The following enum is used in ANGLE, but is from desktop GL
+#ifndef GL_SAMPLER_2D_RECT_ARB
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#endif
+
+#endif // ANGLE_GL_H_
diff --git a/projects/src/libEGL.vcxproj b/projects/src/libEGL.vcxproj
index 3edd232..decb969 100644
--- a/projects/src/libEGL.vcxproj
+++ b/projects/src/libEGL.vcxproj
@@ -131,6 +131,7 @@
     <ClInclude Include="..\..\src\common\angleutils.h"/>
     <ClInclude Include="..\..\src\common\shadervars.h"/>
     <ClInclude Include="..\..\src\common\blocklayout.h"/>
+    <ClInclude Include="..\..\include\angle_gl.h"/>
     <ClInclude Include="..\..\include\KHR\khrplatform.h"/>
     <ClInclude Include="..\..\include\GLSLANG\ShaderLang.h"/>
     <ClInclude Include="..\..\include\GLES2\gl2.h"/>
diff --git a/projects/src/libEGL.vcxproj.filters b/projects/src/libEGL.vcxproj.filters
index 94a8fbc..9b2e3f6 100644
--- a/projects/src/libEGL.vcxproj.filters
+++ b/projects/src/libEGL.vcxproj.filters
@@ -123,6 +123,9 @@
     <ClCompile Include="..\..\src\common\blocklayout.cpp">
       <Filter>src\common</Filter>
     </ClCompile>
+    <ClInclude Include="..\..\include\angle_gl.h">
+      <Filter>include</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\KHR\khrplatform.h">
       <Filter>include\KHR</Filter>
     </ClInclude>
diff --git a/projects/src/libGLESv2.vcxproj b/projects/src/libGLESv2.vcxproj
index d98c4c5..3cd2d16 100644
--- a/projects/src/libGLESv2.vcxproj
+++ b/projects/src/libGLESv2.vcxproj
@@ -283,6 +283,7 @@
     <ClInclude Include="..\..\src\common\version.h"/>
     <ClInclude Include="..\..\src\third_party\systeminfo\SystemInfo.h"/>
     <ClInclude Include="..\..\src\third_party\murmurhash\MurmurHash3.h"/>
+    <ClInclude Include="..\..\include\angle_gl.h"/>
     <ClInclude Include="..\..\include\KHR\khrplatform.h"/>
     <ClInclude Include="..\..\include\GLSLANG\ShaderLang.h"/>
     <ClInclude Include="..\..\include\GLES2\gl2ext.h"/>
@@ -341,11 +342,11 @@
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\VertexBuffer.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\Renderer11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\InputLayoutCache.cpp"/>
-    <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\ShaderExecutable11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\PixelTransfer11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\VertexBuffer11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\Fence11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\Query11.cpp"/>
+    <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\ShaderExecutable11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\RenderTarget11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\Blit11.cpp"/>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\IndexBuffer11.cpp"/>
diff --git a/projects/src/libGLESv2.vcxproj.filters b/projects/src/libGLESv2.vcxproj.filters
index a552a0a..96c3155 100644
--- a/projects/src/libGLESv2.vcxproj.filters
+++ b/projects/src/libGLESv2.vcxproj.filters
@@ -366,9 +366,6 @@
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\InputLayoutCache.cpp">
       <Filter>src\libGLESv2\renderer\d3d\d3d11</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\ShaderExecutable11.cpp">
-      <Filter>src\libGLESv2\renderer\d3d\d3d11</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\PixelTransfer11.cpp">
       <Filter>src\libGLESv2\renderer\d3d\d3d11</Filter>
     </ClCompile>
@@ -396,6 +393,9 @@
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\Query11.cpp">
       <Filter>src\libGLESv2\renderer\d3d\d3d11</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\ShaderExecutable11.cpp">
+      <Filter>src\libGLESv2\renderer\d3d\d3d11</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d11\RenderTarget11.cpp">
       <Filter>src\libGLESv2\renderer\d3d\d3d11</Filter>
     </ClCompile>
@@ -831,6 +831,9 @@
     <ClCompile Include="..\..\src\third_party\murmurhash\MurmurHash3.cpp">
       <Filter>src\third_party\murmurhash</Filter>
     </ClCompile>
+    <ClInclude Include="..\..\include\angle_gl.h">
+      <Filter>include</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\KHR\khrplatform.h">
       <Filter>include\KHR</Filter>
     </ClInclude>
diff --git a/projects/src/translator_lib.vcxproj b/projects/src/translator_lib.vcxproj
index c72e20d..6e4ab91 100644
--- a/projects/src/translator_lib.vcxproj
+++ b/projects/src/translator_lib.vcxproj
@@ -189,6 +189,7 @@
     <ClInclude Include="..\..\src\compiler\translator\depgraph\DependencyGraph.h"/>
     <ClInclude Include="..\..\src\compiler\translator\depgraph\DependencyGraphOutput.h"/>
     <ClInclude Include="..\..\src\compiler\translator\depgraph\DependencyGraphBuilder.h"/>
+    <ClInclude Include="..\..\include\angle_gl.h"/>
     <ClInclude Include="..\..\include\KHR\khrplatform.h"/>
     <ClInclude Include="..\..\include\GLSLANG\ShaderLang.h"/>
     <ClInclude Include="..\..\include\GLES2\gl2platform.h"/>
diff --git a/projects/src/translator_lib.vcxproj.filters b/projects/src/translator_lib.vcxproj.filters
index 063e7a6..f707868 100644
--- a/projects/src/translator_lib.vcxproj.filters
+++ b/projects/src/translator_lib.vcxproj.filters
@@ -459,6 +459,9 @@
     <ClCompile Include="..\..\src\compiler\translator\depgraph\DependencyGraphBuilder.cpp">
       <Filter>src\compiler\translator\depgraph</Filter>
     </ClCompile>
+    <ClInclude Include="..\..\include\angle_gl.h">
+      <Filter>include</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\KHR\khrplatform.h">
       <Filter>include\KHR</Filter>
     </ClInclude>
diff --git a/src/common/RefCountObject.h b/src/common/RefCountObject.h
index 4e475d8..8635aa5 100644
--- a/src/common/RefCountObject.h
+++ b/src/common/RefCountObject.h
@@ -14,8 +14,7 @@
 
 #include <cstddef>
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include "common/debug.h"
 
diff --git a/src/common/blocklayout.h b/src/common/blocklayout.h
index 37724e4..4ee5800 100644
--- a/src/common/blocklayout.h
+++ b/src/common/blocklayout.h
@@ -11,8 +11,7 @@
 #define COMMON_BLOCKLAYOUT_H_
 
 #include <vector>
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 #include <GLSLANG/ShaderLang.h>
 #include <cstddef>
 
diff --git a/src/common/utilities.h b/src/common/utilities.h
index 95f174c..248b1f2 100644
--- a/src/common/utilities.h
+++ b/src/common/utilities.h
@@ -9,11 +9,7 @@
 #ifndef LIBGLESV2_UTILITIES_H
 #define LIBGLESV2_UTILITIES_H
 
-#include <GLES3/gl3.h>
-#include <GLES3/gl3ext.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
+#include "angle_gl.h"
 #include <string>
 #include <math.h>
 
diff --git a/src/compiler/translator/OutputHLSL.h b/src/compiler/translator/OutputHLSL.h
index 2c94636..4bcc82d 100644
--- a/src/compiler/translator/OutputHLSL.h
+++ b/src/compiler/translator/OutputHLSL.h
@@ -11,9 +11,7 @@
 #include <set>
 #include <map>
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
-
+#include "angle_gl.h"
 #include "compiler/translator/intermediate.h"
 #include "compiler/translator/ParseContext.h"
 #include "common/shadervars.h"
diff --git a/src/compiler/translator/UtilsHLSL.h b/src/compiler/translator/UtilsHLSL.h
index f49d4bb..aaa3ddf 100644
--- a/src/compiler/translator/UtilsHLSL.h
+++ b/src/compiler/translator/UtilsHLSL.h
@@ -13,8 +13,7 @@
 #include <vector>
 #include "compiler/translator/Types.h"
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 namespace sh
 {
diff --git a/src/compiler/translator/util.h b/src/compiler/translator/util.h
index 74dfb9b..4dbaf3c 100644
--- a/src/compiler/translator/util.h
+++ b/src/compiler/translator/util.h
@@ -8,8 +8,7 @@
 #define COMPILER_UTIL_H
 
 #include "compiler/translator/Types.h"
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 #include "common/shadervars.h"
 
 // atof_clamp is like atof but
diff --git a/src/libEGL/Config.cpp b/src/libEGL/Config.cpp
index 0b47d55..fdc41a9 100644
--- a/src/libEGL/Config.cpp
+++ b/src/libEGL/Config.cpp
@@ -13,10 +13,7 @@
 #include <algorithm>
 #include <vector>
 
-#include <GLES3/gl3.h>
-#include <GLES3/gl3ext.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
+#include "angle_gl.h"
 #include <EGL/eglext.h>
 
 #include "common/debug.h"
diff --git a/src/libGLESv2/Caps.cpp b/src/libGLESv2/Caps.cpp
index 088e502..39e81dd 100644
--- a/src/libGLESv2/Caps.cpp
+++ b/src/libGLESv2/Caps.cpp
@@ -8,8 +8,7 @@
 #include "common/debug.h"
 #include "common/angleutils.h"
 
-#include <GLES2/gl2ext.h>
-#include <GLES3/gl3ext.h>
+#include "angle_gl.h"
 
 #include <algorithm>
 #include <sstream>
diff --git a/src/libGLESv2/Caps.h b/src/libGLESv2/Caps.h
index 7fd5443..04da664 100644
--- a/src/libGLESv2/Caps.h
+++ b/src/libGLESv2/Caps.h
@@ -7,8 +7,7 @@
 // found in the LICENSE file.
 //
 
-#include <GLES2/gl2.h>
-#include <GLES3/gl3.h>
+#include "angle_gl.h"
 
 #include <set>
 #include <unordered_map>
diff --git a/src/libGLESv2/Context.h b/src/libGLESv2/Context.h
index 8ecab63..cc86603 100644
--- a/src/libGLESv2/Context.h
+++ b/src/libGLESv2/Context.h
@@ -10,10 +10,7 @@
 #ifndef LIBGLESV2_CONTEXT_H_
 #define LIBGLESV2_CONTEXT_H_
 
-#include <GLES3/gl3.h>
-#include <GLES3/gl3ext.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
+#include "angle_gl.h"
 #include <EGL/egl.h>
 
 #include <string>
diff --git a/src/libGLESv2/FramebufferAttachment.h b/src/libGLESv2/FramebufferAttachment.h
index d08d800..dea2995 100644
--- a/src/libGLESv2/FramebufferAttachment.h
+++ b/src/libGLESv2/FramebufferAttachment.h
@@ -10,8 +10,7 @@
 #ifndef LIBGLESV2_FRAMEBUFFERATTACHMENT_H_
 #define LIBGLESV2_FRAMEBUFFERATTACHMENT_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
diff --git a/src/libGLESv2/HandleAllocator.h b/src/libGLESv2/HandleAllocator.h
index e23010d..bbded02 100644
--- a/src/libGLESv2/HandleAllocator.h
+++ b/src/libGLESv2/HandleAllocator.h
@@ -10,8 +10,7 @@
 #ifndef LIBGLESV2_HANDLEALLOCATOR_H_
 #define LIBGLESV2_HANDLEALLOCATOR_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include <vector>
 
diff --git a/src/libGLESv2/ProgramBinary.h b/src/libGLESv2/ProgramBinary.h
index bb63a98..aef4dad 100644
--- a/src/libGLESv2/ProgramBinary.h
+++ b/src/libGLESv2/ProgramBinary.h
@@ -10,10 +10,7 @@
 #ifndef LIBGLESV2_PROGRAM_BINARY_H_
 #define LIBGLESV2_PROGRAM_BINARY_H_
 
-#include <GLES3/gl3.h>
-#include <GLES3/gl3ext.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
+#include "angle_gl.h"
 
 #include <string>
 #include <vector>
diff --git a/src/libGLESv2/Query.h b/src/libGLESv2/Query.h
index 4eb236f..a4726a8 100644
--- a/src/libGLESv2/Query.h
+++ b/src/libGLESv2/Query.h
@@ -9,8 +9,7 @@
 #ifndef LIBGLESV2_QUERY_H_
 #define LIBGLESV2_QUERY_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
diff --git a/src/libGLESv2/Renderbuffer.h b/src/libGLESv2/Renderbuffer.h
index 51c1eeb..fc4d234 100644
--- a/src/libGLESv2/Renderbuffer.h
+++ b/src/libGLESv2/Renderbuffer.h
@@ -12,8 +12,7 @@
 #ifndef LIBGLESV2_RENDERBUFFER_H_
 #define LIBGLESV2_RENDERBUFFER_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
diff --git a/src/libGLESv2/ResourceManager.h b/src/libGLESv2/ResourceManager.h
index 85e6b4b..d646c0d 100644
--- a/src/libGLESv2/ResourceManager.h
+++ b/src/libGLESv2/ResourceManager.h
@@ -10,8 +10,7 @@
 #ifndef LIBGLESV2_RESOURCEMANAGER_H_
 #define LIBGLESV2_RESOURCEMANAGER_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include <unordered_map>
 
diff --git a/src/libGLESv2/Shader.h b/src/libGLESv2/Shader.h
index ed482e9..6b41bb7 100644
--- a/src/libGLESv2/Shader.h
+++ b/src/libGLESv2/Shader.h
@@ -12,8 +12,7 @@
 #ifndef LIBGLESV2_SHADER_H_
 #define LIBGLESV2_SHADER_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 #include <string>
 #include <list>
 #include <vector>
diff --git a/src/libGLESv2/Texture.h b/src/libGLESv2/Texture.h
index 8a92a5e..8efa7b2 100644
--- a/src/libGLESv2/Texture.h
+++ b/src/libGLESv2/Texture.h
@@ -13,8 +13,7 @@
 
 #include <vector>
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include "common/debug.h"
 #include "common/RefCountObject.h"
diff --git a/src/libGLESv2/TransformFeedback.h b/src/libGLESv2/TransformFeedback.h
index 183873c..d6f4522 100644
--- a/src/libGLESv2/TransformFeedback.h
+++ b/src/libGLESv2/TransformFeedback.h
@@ -10,8 +10,7 @@
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 namespace gl
 {
diff --git a/src/libGLESv2/Uniform.h b/src/libGLESv2/Uniform.h
index 73e1295..9adfeac 100644
--- a/src/libGLESv2/Uniform.h
+++ b/src/libGLESv2/Uniform.h
@@ -10,8 +10,7 @@
 #include <string>
 #include <vector>
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
+#include "angle_gl.h"
 
 #include "common/debug.h"
 #include "angletypes.h"
diff --git a/src/libGLESv2/formatutils.h b/src/libGLESv2/formatutils.h
index 2a991a6..f321130 100644
--- a/src/libGLESv2/formatutils.h
+++ b/src/libGLESv2/formatutils.h
@@ -9,9 +9,7 @@
 #ifndef LIBGLESV2_FORMATUTILS_H_
 #define LIBGLESV2_FORMATUTILS_H_
 
-#include <GLES3/gl3.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
+#include "angle_gl.h"
 
 #include "libGLESv2/Caps.h"
 #include "libGLESv2/angletypes.h"
diff --git a/src/libGLESv2/precompiled.h b/src/libGLESv2/precompiled.h
index 08ed564..51a13cc 100644
--- a/src/libGLESv2/precompiled.h
+++ b/src/libGLESv2/precompiled.h
@@ -6,12 +6,7 @@
 
 // precompiled.h: Precompiled header file for libGLESv2.
 
-#include <GLES3/gl3.h>
-#include <GLES3/gl3ext.h>
-#include <GLES2/gl2.h>
-
-#include <GLES2/gl2ext.h>
-
+#include "angle_gl.h"
 #include <EGL/egl.h>
 
 #include <assert.h>
diff --git a/tests/angle_tests/ANGLETest.h b/tests/angle_tests/ANGLETest.h
index 7193c09..4546e29 100644
--- a/tests/angle_tests/ANGLETest.h
+++ b/tests/angle_tests/ANGLETest.h
@@ -11,10 +11,7 @@
 
 #define GL_GLEXT_PROTOTYPES
 
-#include <GLES3/gl3.h>
-#include <GLES3/gl3ext.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
+#include "angle_gl.h"
 #include <EGL/egl.h>
 #include <EGL/eglext.h>
 #include <algorithm>