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
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>
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index 1ce915b..13e4e79 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -72,7 +72,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 4660cda..22f248b 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -221,7 +221,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) {
@@ -2921,5 +2922,3 @@
}
return validate_sized_format(*glFormat, ct, config, fStandard);
}
-
-
diff --git a/src/gpu/gl/GrGLDefines.h b/src/gpu/gl/GrGLDefines.h
index 6453973..2c82983 100644
--- a/src/gpu/gl/GrGLDefines.h
+++ b/src/gpu/gl/GrGLDefines.h
@@ -1042,7 +1042,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..6a80707 100644
--- a/tools/gpu/gl/GLTestContext.cpp
+++ b/tools/gpu/gl/GLTestContext.cpp
@@ -318,7 +318,8 @@
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")) {
+ !(fGL->fExtensions.has("GL_ARB_texture_rectangle") ||
+ fGL->fExtensions.has("GL_ANGLE_texture_rectangle"))) {
return 0;
}