Index: ui/gl/gl_gl_api_implementation.cc |
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc |
index 017e123eb1ff5f566031b9018a6cc2dff715090d..7f6a647fb54c81a52624529cb8d697a7a48aee7d 100644 |
--- a/ui/gl/gl_gl_api_implementation.cc |
+++ b/ui/gl/gl_gl_api_implementation.cc |
@@ -48,6 +48,42 @@ static inline GLenum GetTexInternalFormat(GLenum internal_format, |
// g_version_info must be initialized when this function is bound. |
DCHECK(gfx::g_version_info); |
+ if (gfx::g_version_info->is_es3) { |
+ if (format == GL_RED_EXT) { |
+ switch (type) { |
+ case GL_UNSIGNED_BYTE: |
+ gl_internal_format = GL_R8_EXT; |
+ break; |
+ case GL_HALF_FLOAT_OES: |
+ gl_internal_format = GL_R16F_EXT; |
+ break; |
+ case GL_FLOAT: |
+ gl_internal_format = GL_R32F_EXT; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ return gl_internal_format; |
+ } else if (format == GL_RG_EXT) { |
+ switch (type) { |
+ case GL_UNSIGNED_BYTE: |
+ gl_internal_format = GL_RG8_EXT; |
+ break; |
+ case GL_HALF_FLOAT_OES: |
+ gl_internal_format = GL_RG16F_EXT; |
+ break; |
+ case GL_FLOAT: |
+ gl_internal_format = GL_RG32F_EXT; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ return gl_internal_format; |
+ } |
+ } |
+ |
if (type == GL_FLOAT && gfx::g_version_info->is_angle && |
gfx::g_version_info->is_es2) { |
// It's possible that the texture is using a sized internal format, and |