aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Weiliang Chen <weiliangc@chromium.org>2018-07-12 17:13:35 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-13 19:18:34 +0000
commit1e04b3659cd35dfb47a9843fd42123bb6bdcaa5d (patch)
tree09d3b88935cde08d7048558c2e35d7eb5bd03405
parent79ad3a1d99d7ab16d24f18524cf680b7a06496e5 (diff)
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>
-rw-r--r--gm/rectangletexture.cpp3
-rw-r--r--src/gpu/gl/GrGLCaps.cpp5
-rw-r--r--src/gpu/gl/GrGLDefines.h2
-rw-r--r--tools/gpu/gl/GLTestContext.cpp7
4 files changed, 10 insertions, 7 deletions
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index c22e420d68..ab58379e3e 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -73,7 +73,8 @@ protected:
}
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 8525a7b2b5..0e5ed52350 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -220,7 +220,8 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
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 @@ GrBackendFormat GrGLCaps::onCreateFormatFromBackendTexture(
return GrBackendFormat::MakeGL(glInfo.fFormat, glInfo.fTarget);
}
#endif
-
-
diff --git a/src/gpu/gl/GrGLDefines.h b/src/gpu/gl/GrGLDefines.h
index 8e7809f642..d861d866c7 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 7a67a8a969..e11f1b0eef 100644
--- a/tools/gpu/gl/GLTestContext.cpp
+++ b/tools/gpu/gl/GLTestContext.cpp
@@ -317,8 +317,11 @@ void GLTestContext::finish() {
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;
}