Black flicker when Chrome is relaunched after killing |
||||||
Issue descriptionSteps to reproduce the problem: 1. Launch chrome_public or google chrome, type a url. navigate to it. Kill chrome_public or google chrome. 2. Re-launch chrome_public or google chrome, see if screen flickers. 3. Re-run steps 2 many times. For chrome_public or google chrome, you will see screen flicker at a low rate. What is the expected behavior? No screen flicker at all. What went wrong? Screen flicker at a low rate, the rate maybe about 5%~10%. Did this work before? N/A Chrome version: 49.0.2623.91 Channel: stable OS Version: 4.4.4 Flash Version: Detail User agent of chrome public: 1 Chromium 49.0.2623.91 (Developer Build) unknown (32-bit) 2 Revision 30291bb2a90d4cfd0ef22fbca036020345d4a7d0 3 OS Android 4.4.4; MI 4LTE Build/KTU84P 4 Blink 537.36 (@b10fce996f8c1632db1fa864ef8e2aa26b47704e) 5 JavaScript V8 4.9.385.28 6 User Agent Mozilla/5.0 (Linux; Android 4.4.4; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.91 Mobile Safari/ 537.36 7 Command Line chrome --flags --single-process --use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 -- use-mobile-user-agent --enable-begin-frame-scheduling --enable-pinch --enable-overlay-scrollbar --validate-input-event-stream --disable-gpu-pr ocess-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-tim ing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --flag-switches-end --disable-gpu-watchdog --supports-dual -gpus=false --gpu-driver-bug-workarounds=3,8,10,13,21,27,33,38,44,54,66,68,69 --disable-gl-extensions=EGL_KHR_fence_sync EGL_KHR_wait_sync GL_ OES_depth_texture --disable-accelerated-video-decode --disable-webrtc-hw-encoding --gpu-vendor-id=0x0000 --gpu-device-id=0x0000 --gpu-driver-v endor --gpu-driver-version=66.0 --lang=en-US --num-raster-threads=1 --enable-gpu-rasterization --gpu-rasterization-msaa-sample-count=4 --conte nt-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553 8 Executable Path No such file or directory 9 Profile Path /data/data/org.chromium.chrome/app_chrome/Default 10 Variations a8b45008-3f4a17df 11 236d5d9e-fecfffa1 Detail User agent of google chrome: 1 Google Chrome 49.0.2623.91 (Official Build) (32-bit) 2 Revision b10fce996f8c1632db1fa864ef8e2aa26b47704e-refs/branch-heads/2623@{#600} 3 OS Android 4.4.4; MI 4LTE Build/KTU84P 4 Blink 537.36 (@b10fce996f8c1632db1fa864ef8e2aa26b47704e) 5 JavaScript V8 4.9.385.28 6 User Agent Mozilla/5.0 (Linux; Android 4.4.4; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.91 Mobile Safari/ 537.36 7 Command Line chrome --flags --single-process --use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 -- use-mobile-user-agent --enable-begin-frame-scheduling --enable-pinch --enable-overlay-scrollbar --validate-input-event-stream --disable-gpu-pr ocess-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-tim ing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --flag-switches-end --disable-gpu-watchdog --supports-dual -gpus=false --gpu-driver-bug-workarounds=3,8,10,13,21,27,33,38,44,54,66,68,69 --disable-gl-extensions=EGL_KHR_fence_sync EGL_KHR_wait_sync GL_ OES_depth_texture --disable-accelerated-video-decode --disable-webrtc-hw-encoding --gpu-vendor-id=0x0000 --gpu-device-id=0x0000 --gpu-driver-v endor --gpu-driver-version=66.0 --lang=en-US --num-raster-threads=1 --enable-gpu-rasterization --gpu-rasterization-msaa-sample-count=4 --conte nt-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553 8 Executable Path No such file or directory 9 Profile Path /data/data/com.android.chrome/app_chrome/Default 10 Build ID 312c1fc4-0f82-49c6-***********
,
Mar 24 2016
This also happens on chrome public: 50.0.2652.0. One comments, this only happens on startup. So need to kill it and re-launch.
,
Mar 25 2016
Slight flickering is observed as mentioned in #1
,
Aug 4 2016
I tried comment out InternalSwapCompositorFrame at enderWidgetHostViewAndroid::OnSwapCompositorFrame. Flick still happens.
Version is: Chromium 54.0.2801.0.
void RenderWidgetHostViewAndroid::OnSwapCompositorFrame(
uint32_t output_surface_id,
cc::CompositorFrame frame) {
//InternalSwapCompositorFrame(output_surface_id, std::move(frame));
}
,
Aug 4 2016
Is this exclusive to Xiaomi 4 LTE? And can you attach a video of the symptom?
,
Aug 4 2016
Trid two xiaomi devices, both have. And also rsgav...@chromium.org said he reproduced this. BTW, the video is 24M. And the maximum attachment is 10M. And indeed, its really easy to reproduce, at least on xiaomi devices.
,
Aug 4 2016
On Huawei mate 7(Android 5.1.1), this also happens. Attached VID_20160804_133113.mp4 is Chrome public runs on Huawei mate 7. The happens very frequently on mate 7, almost 50%.
,
Aug 4 2016
Is there any exist tools to dump every output frame as a picture of chrome public? So that we can know which frame is black. I know getContentBitmapAsync can be used to capture the output frames, but I am not sure if it maintains the same frame order as GLRender.
,
Aug 4 2016
OK, I can repro the symptom on my personal Moto X 2nd gen, about 25% repro rate. I assume it reproes on all phones. Similar problem space as http://crbug.com/618987 , cc'ing some folks interested in that one.
,
Aug 4 2016
I have a patch up that should fix this, https://codereview.chromium.org/2133873004/
,
Aug 4 2016
Sounds good, please double-check following the repro steps in #0 that your patch fixes it (try 10 times to be safe, since it's racy).
,
Aug 8 2016
I tried your patch partially, manually append a SolidColorLayer, it doesn't work.
@@ -344,11 +345,15 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
frame_evictor_(new DelegatedFrameEvictor(this)),
locks_on_frame_count_(0),
observing_root_window_(false),
+ background_layer_(cc::SolidColorLayer::Create()),
weak_ptr_factory_(this) {
if (CompositorImpl::GetSurfaceManager())
id_allocator_ = CompositorImpl::CreateSurfaceIdAllocator();
host_->SetView(this);
SetContentViewCore(content_view_core);
+ view_.SetLayer(cc::Layer::Create());
+ background_layer_->SetBackgroundColor(SK_ColorWHITE);
+ view_.GetLayer()->AddChild(background_layer_);
}
BTW, I doubt that add a SolidColorLayer::Create here can resolve the flicker issue.
Because in CompositorView, it used SolidColorLayer::Create as the root layer too. And this SolidColorLayer::Create of CompositorView(https://chromium.googlesource.com/chromium/src.git/+/master/chrome/browser/android/compositor/compositor_view.cc, in CompositorView::CompositorView, line 82)
is the root layer of ViewAndroid.GetLayer
,
Aug 8 2016
Ah sorry, my comment was intended for http://crbug.com/618987 . The change was moving showing the background when there is no content from the renderer, or when we are waiting for a frame after a resize to the DelegatedFrameHostAndroid itself, which should always set the background color correctly. I don't have enough context for this bug though. Alex, do you mind taking this one back?
,
Aug 30 2016
Verified with version: 54.0.2840.0. Issue can not reproduce. Not sure if this related to patch https://codereview.chromium.org/2133873004/.
,
Sep 26 2016
Any one know the root cause for this issue? Did you add a splash screen on Chrome public? 55.0.2859.0 can not reproduce.
,
May 11 2017
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 Deleted