Reland: Check for ANGLE's implementation of texture_rectangle

ANGLE has implemented extension to support for texture_rectangle. Check
for its existence as well as GL_ARB_texture_rectangle extension.

Intended to follow up on Chrome side to avoid copy into texture 2d for
PaintCanvasVideoRenderer.

Bug: skia:7903

Origin change's info:
> Change-Id: I450aa7fcd08628831251a9e142fd50719723282d
> Reviewed-on: https://skia-review.googlesource.com/130962
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Weiliang Chen <weiliangc@chromium.org>

Change-Id: Ifec92bdc07ec2b2dae38ffe99ec275924cbd37d8
Reviewed-on: https://skia-review.googlesource.com/139272
Commit-Queue: Weiliang Chen <weiliangc@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index c22e420..ab58379 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -73,7 +73,8 @@
         }
 
         if (!(kGL_GrGLStandard == glCtx->standard() && glCtx->version() >= GR_GL_VER(3, 1)) &&
-            !glCtx->hasExtension("GL_ARB_texture_rectangle")) {
+            !(glCtx->hasExtension("GL_ARB_texture_rectangle") ||
+              glCtx->hasExtension("GL_ANGLE_texture_rectangle"))) {
             return nullptr;
         }
 
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 8525a7b..0e5ed52 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -220,7 +220,8 @@
     fBindUniformLocationSupport = ctxInfo.hasExtension("GL_CHROMIUM_bind_uniform_location");
 
     if (kGL_GrGLStandard == standard) {
-        if (version >= GR_GL_VER(3, 1) || ctxInfo.hasExtension("GL_ARB_texture_rectangle")) {
+        if (version >= GR_GL_VER(3, 1) || ctxInfo.hasExtension("GL_ARB_texture_rectangle") ||
+            ctxInfo.hasExtension("GL_ANGLE_texture_rectangle")) {
             // We also require textureSize() support for rectangle 2D samplers which was added in
             // GLSL 1.40.
             if (ctxInfo.glslGeneration() >= k140_GrGLSLGeneration) {
@@ -2893,5 +2894,3 @@
     return GrBackendFormat::MakeGL(glInfo.fFormat, glInfo.fTarget);
 }
 #endif
-
-
diff --git a/src/gpu/gl/GrGLDefines.h b/src/gpu/gl/GrGLDefines.h
index 8e7809f..d861d86 100644
--- a/src/gpu/gl/GrGLDefines.h
+++ b/src/gpu/gl/GrGLDefines.h
@@ -1039,7 +1039,7 @@
 /* GL_OES_EGL_image_external */
 #define GR_GL_TEXTURE_EXTERNAL                              0x8D65
 
-/* GL_ARB_texture_rectangle */
+/* GL_ARB_texture_rectangle or GL_ANGLE_texture_rectangle */
 #define GR_GL_TEXTURE_RECTANGLE                             0x84F5
 
 /* GL_EXT_window_rectangles */
diff --git a/tools/gpu/gl/GLTestContext.cpp b/tools/gpu/gl/GLTestContext.cpp
index 7a67a8a..e11f1b0 100644
--- a/tools/gpu/gl/GLTestContext.cpp
+++ b/tools/gpu/gl/GLTestContext.cpp
@@ -317,8 +317,11 @@
 GrGLint GLTestContext::createTextureRectangle(int width, int height, GrGLenum internalFormat,
                                           GrGLenum externalFormat, GrGLenum externalType,
                                           GrGLvoid* data) {
-    if (!(kGL_GrGLStandard == fGL->fStandard && GrGLGetVersion(fGL.get()) >= GR_GL_VER(3, 1)) &&
-        !fGL->fExtensions.has("GL_ARB_texture_rectangle")) {
+    // Should match GrGLCaps check for fRectangleTextureSupport.
+    if (kGL_GrGLStandard != fGL->fStandard ||
+        (GrGLGetVersion(fGL.get()) < GR_GL_VER(3, 1) &&
+         !fGL->fExtensions.has("GL_ARB_texture_rectangle") &&
+         !fGL->fExtensions.has("GL_ANGLE_texture_rectangle"))) {
         return 0;
     }