Index: ui/gl/gl_image_io_surface.mm |
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm |
index 3b244e3e94bbfe9f521e6b8949c7cca16170c631..b5210c4fee5f99824e200ad56db8026c06e10dc4 100644 |
--- a/ui/gl/gl_image_io_surface.mm |
+++ b/ui/gl/gl_image_io_surface.mm |
@@ -274,11 +274,6 @@ GLenum ConvertRequestedInternalFormat(GLenum internalformat) { |
if (format_ != gfx::BufferFormat::YUV_420_BIPLANAR) |
return false; |
- if (target != GL_TEXTURE_RECTANGLE_ARB) { |
- LOG(ERROR) << "YUV_420_BIPLANAR requires GL_TEXTURE_RECTANGLE_ARB target"; |
- return false; |
- } |
- |
GLContext* gl_context = GLContext::GetCurrent(); |
DCHECK(gl_context); |
@@ -290,9 +285,27 @@ GLenum ConvertRequestedInternalFormat(GLenum internalformat) { |
// Note that state restoration is done explicitly instead of scoped binders to |
// avoid https://crbug.com/601729. |
GLint rgb_texture = 0; |
- glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, &rgb_texture); |
+ GLenum target_getter = 0; |
+ switch (target) { |
+ case GL_TEXTURE_2D: |
+ target_getter = GL_TEXTURE_BINDING_2D; |
+ break; |
+ case GL_TEXTURE_CUBE_MAP: |
+ target_getter = GL_TEXTURE_BINDING_CUBE_MAP; |
+ break; |
+ case GL_TEXTURE_EXTERNAL_OES: |
+ target_getter = GL_TEXTURE_BINDING_EXTERNAL_OES; |
+ break; |
+ case GL_TEXTURE_RECTANGLE_ARB: |
+ target_getter = GL_TEXTURE_BINDING_RECTANGLE_ARB; |
+ break; |
+ default: |
+ NOTIMPLEMENTED() << " Target not supported."; |
+ return false; |
+ } |
+ glGetIntegerv(target_getter, &rgb_texture); |
base::ScopedClosureRunner destroy_resources_runner(base::BindBlock(^{ |
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, rgb_texture); |
+ glBindTexture(target, rgb_texture); |
})); |
CGLContextObj cgl_context = CGLGetCurrentContext(); |
@@ -319,10 +332,7 @@ GLenum ConvertRequestedInternalFormat(GLenum internalformat) { |
} |
} |
- yuv_to_rgb_converter->CopyYUV420ToRGB( |
- GL_TEXTURE_RECTANGLE_ARB, |
- size_, |
- rgb_texture); |
+ yuv_to_rgb_converter->CopyYUV420ToRGB(target, size_, rgb_texture); |
return true; |
} |