diff options
Diffstat (limited to 'chromium/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc')
-rw-r--r-- | chromium/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/chromium/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc b/chromium/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc index 5aaabf4ea8a..a2b22552a46 100644 --- a/chromium/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc +++ b/chromium/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc @@ -30,6 +30,14 @@ bool IsImagination() { return false; } +bool IsNvidia31() { + const char* vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); + const char* version = reinterpret_cast<const char*>(glGetString(GL_VERSION)); + return vendor && version && + std::string(vendor).find("NVIDIA") != std::string::npos && + std::string(version).find("OpenGL ES 3.1") != std::string::npos; +} + } // We only used threaded uploads when we can: @@ -54,10 +62,12 @@ AsyncPixelTransferManager* AsyncPixelTransferManager::Create( context->HasExtension("GL_OES_EGL_image") && !IsBroadcom() && !IsImagination() && + !IsNvidia31() && !base::android::SysUtils::IsLowEndDevice()) { return new AsyncPixelTransferManagerEGL; } - LOG(INFO) << "Async pixel transfers not supported"; + return new AsyncPixelTransferManagerIdle; + case gfx::kGLImplementationOSMesaGL: return new AsyncPixelTransferManagerIdle; case gfx::kGLImplementationMockGL: return new AsyncPixelTransferManagerStub; |