diff options
author | skyostil@chromium.org <skyostil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 11:48:48 +0000 |
---|---|---|
committer | skyostil@chromium.org <skyostil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 11:48:48 +0000 |
commit | 79fcc80a8dad338f3dda024cada552cba16046ce (patch) | |
tree | b88b64a5f8dacf301aa123f6eccbab98f6b08378 /gpu | |
parent | ac52a69552173821889eac0399a114c94b599401 (diff) | |
download | chromium_src-79fcc80a8dad338f3dda024cada552cba16046ce.zip chromium_src-79fcc80a8dad338f3dda024cada552cba16046ce.tar.gz chromium_src-79fcc80a8dad338f3dda024cada552cba16046ce.tar.bz2 |
android: Add basic support for Broadcom GPUs
This patch implements two GPU workarounds to make Chrome work on
devices with a Broadcom GPU:
1. Enable context virtualization on to avoid a EGL_BAD_CONTEXT failure
from eglCreateContext().
2. Disable asynchronous texture uploads to avoid an "Invalid image or
UNSUPPORTED OPERATION" failure from glEGLImageTargetTexture2DOES.
These modifications were tested on a Samsung Galaxy Fame S6810P.
BUG=179815
Review URL: https://chromiumcodereview.appspot.com/12461002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202062 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/async_pixel_transfer_delegate_android.cc | 13 |
1 files changed, 12 insertions, 1 deletions
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 2d834c9..fa29cf6 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"; |