New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 808078 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

Refactor Android Webview GL binding initialization

Project Member Reported by zmo@chromium.org, Feb 1 2018

Issue description

Right now we only initialize it in GPU thread in GpuInit::InitializeInProcess(). In WebView, we need to make sure other threads using GL wait until this happens (wait until compositor thread returns a valid frame).

This is not optimal.

So after discussion with boliu, piman, kbr, here is the proposal:

Initialize GL in either render thread (DeferredGpuCommandService) or GPU thread, whoever gets to it first. The initialization code needs to be guarded by a lock to avoid racing.

Also, DeferredGpuCommandService side, we don't need to pre-initialize it in SetService(). It can be done on demand in GetService().

After this, we can get rid of the current blocking mechanism.
 

Comment 1 by zmo@chromium.org, Feb 1 2018

Components: Internals>GPU>Internals Mobile>WebView

Comment 2 by zmo@chromium.org, Feb 1 2018

Cc: vmi...@chromium.org

Comment 3 by zmo@chromium.org, Feb 1 2018

Cc: ericrk@chromium.org
Project Member

Comment 4 by bugdroid1@chromium.org, Feb 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cdae452e2a55c121386ce3e3a0dc382e8befbb12

commit cdae452e2a55c121386ce3e3a0dc382e8befbb12
Author: Zhenyao Mo <zmo@chromium.org>
Date: Fri Feb 09 20:10:26 2018

Remove browser side GPU info collection on Android plus
redo Android WebView GL bindings initialization.

Patchset 1:

The last bit is pre-lollipop Android blacklisting for
accelerated_video_decode. To handle this, we query it on renderer
startup from GPU process (through GpuChannelHost). This will cause
slight renderer startup perf regression, but only on older Android
systems.

This is the LAST piece of this refactoring. This is reviewed at:
https://chromium-review.googlesource.com/c/chromium/src/+/894734

**************************

Patchset 3:

Right now initialization always happens on in-process GPU thread
and others are blocked by that.

With this CL, we could initialize them in either render thread or
GPU thread.

This is reviewed at:
https://chromium-review.googlesource.com/c/chromium/src/+/898202

**************************

Patchset 7:

Land part of the reviewed CL separately.

https://chromium-review.googlesource.com/c/chromium/src/+/905791

**************************

Patchset 13->16:

Fix WebView issue where it incorrectly falls back to software mode.

BUG= 744658 , 808078 ,808934
TEST=bots
R=piman@chromium.org,kbr@chromium.org,boliu@chromium.org

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I07280fc5f6f513df87047a7b29b9d547fde08c8e
Reviewed-on: https://chromium-review.googlesource.com/904732
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Bo <boliu@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535795}
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/android_webview/browser/aw_browser_main_parts.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/android_webview/browser/aw_contents.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/android_webview/browser/deferred_gpu_command_service.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/android_webview/browser/deferred_gpu_command_service.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/android_webview/lib/webview_tests.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/base/threading/thread_restrictions.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/browser/BUILD.gn
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/browser/browser_process.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/browser/browser_process_impl.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/browser/browser_process_impl.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/browser/chrome_browser_main.cc
[delete] https://crrev.com/338ea075666f0e69f541af2cdcfcafa43733b95e/chrome/browser/gpu/gpu_driver_info_manager_android.cc
[delete] https://crrev.com/338ea075666f0e69f541af2cdcfcafa43733b95e/chrome/browser/gpu/gpu_driver_info_manager_android.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/browser/prefs/browser_prefs.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/common/pref_names.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/common/pref_names.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/test/base/testing_browser_process.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/chrome/test/base/testing_browser_process.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/browser/gpu/gpu_data_manager_impl.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/browser/gpu/gpu_data_manager_impl.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/browser/gpu/gpu_data_manager_impl_private.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/public/browser/gpu_data_manager.h
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/content/renderer/render_thread_impl_browsertest.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/gpu/config/gpu_info_collector_android.cc
[modify] https://crrev.com/cdae452e2a55c121386ce3e3a0dc382e8befbb12/gpu/ipc/service/gpu_init.cc

Comment 5 by zmo@chromium.org, Feb 9 2018

Status: Fixed (was: Assigned)

Sign in to add a comment