Index: gpu/command_buffer/service/async_pixel_transfer_delegate_android.cc |
diff --git a/gpu/command_buffer/service/async_pixel_transfer_delegate_android.cc b/gpu/command_buffer/service/async_pixel_transfer_delegate_android.cc |
index 2d834c9d556e1cbe63ded4e7bc3e2e527086d99e..fa29cf6c1e76dd18c4f24e28b1fbc61ad232e2a4 100644 |
--- a/gpu/command_buffer/service/async_pixel_transfer_delegate_android.cc |
+++ b/gpu/command_buffer/service/async_pixel_transfer_delegate_android.cc |
@@ -12,6 +12,16 @@ |
#include "ui/gl/gl_implementation.h" |
namespace gpu { |
+namespace { |
+ |
+bool IsBroadcom() { |
+ const char* vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); |
+ if (vendor) |
+ return std::string(vendor).find("Broadcom") != std::string::npos; |
+ return false; |
+} |
+ |
+} |
// We only used threaded uploads when we can: |
// - Create EGLImages out of OpenGL textures (EGL_KHR_gl_texture_2D_image) |
@@ -27,7 +37,8 @@ AsyncPixelTransferDelegate* AsyncPixelTransferDelegate::Create( |
context->HasExtension("EGL_KHR_image") && |
context->HasExtension("EGL_KHR_image_base") && |
context->HasExtension("EGL_KHR_gl_texture_2D_image") && |
- context->HasExtension("GL_OES_EGL_image")) { |
+ context->HasExtension("GL_OES_EGL_image") && |
+ !IsBroadcom()) { |
return new AsyncPixelTransferDelegateEGL; |
} |
LOG(INFO) << "Async pixel transfers not supported"; |