mozilla-mobile / fenix

⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
https://github.com/mozilla-mobile/firefox-android
Mozilla Public License 2.0
6.47k stars 1.27k forks source link

[Bug] Large black rectangles and screen flickering #19360

Closed iinuwa closed 3 years ago

iinuwa commented 3 years ago

Steps to reproduce

Open any website.

Expected behavior

Full webpage is drawn correctly.

Actual behavior

Large portions of the screen (mostly large rectangle at the top and bottom of the viewport) are just black rectangles. During scroll, the rectangles flicker in color, but the content that should be rendered on those rectangles is never drawn. (That is, I can see some content in between the black rectangles, and if I scroll past a black rectangle, I can see more content followed by another black rectangle. But I can never scroll in such a way that I can see the blacked-out content.)

image

Tapping the screen seems to still work; I can long press and get links and contextual information. So it seems that it's just drawing the screen is having an issue.

This is similar to #19348 and #19342, but the rectangles are much larger on my screen, always flicker and appear on every website I visit. Also, those two issues reference Mali GPUs, but this is a Qualcomm GPU.

This began happening on my device some time last week.

Device information

┆Issue is synchronized with this Jira Task

kbrosnan commented 3 years ago

Duplicate https://github.com/mozilla-mobile/fenix/issues/19348

jamienicol commented 3 years ago

Hi @iinuwa , could you please go to about:support, click "copy text to clipboard", and attach that information to this bug?

Would you be able to run mozregression to determine what change introduced the bug. You need to have USB debugging enabled on your device, and plug it in to your computer. Then you can install the mozregression GUI from that link, or if you're running Linux or Macos you can install the command line version with pip install mozregression. Then you can run mozregression --app gve --good 88 on the command line, or launch the GUI and make sure you select "geckoview example" as the application. This will then install a series of versions and you can answer whether it is good or bad, and eventually it will find the change which caused the issue. If you need any help with that please feel free to ask! Thanks

iinuwa commented 3 years ago

I assume I should be using --app gve (GeckoView Engine?) This is the information from the last "bad" build from mozregression.

app_name: gve build_date: 2021-04-20 13:39:58.570000 build_file: /home/iinuwa/.mozilla/mozregression/persist/bd6a10e0e895--autoland--arm--geckoview_example.apk build_type: integration build_url: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/FmqEbNdLQ4OgT505k4dFMw/runs/0/artifacts/public%2Fbuild%2Fgeckoview_example.apk changeset: bd6a10e0e8954b3667fc246d174b741f58d37393 pushlog_url: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=8d99f538b0bfbf20f664904952bd42ec48a55fcc&tochange=bd6a10e0e8954b3667fc246d174b741f58d37393 repo_name: autoland repo_url: https://hg.mozilla.org/integration/autoland task_id: FmqEbNdLQ4OgT505k4dFMw

I'll try to post the text from my phone later; it's exhibiting the same bug, so I can't see the whole screen. :laughing:

iinuwa commented 3 years ago

Troubleshooting Information
This page contains technical information that might be useful when you’re trying to solve a problem. If you are looking for answers to common questions about Nightly, check out our support website.
Application Basics
Name    Firefox Nightly
Version     90.0a1
Build ID    20210502092952
Distribution ID     
User Agent  Mozilla/5.0 (Android 9; Mobile; rv:90.0) Gecko/90.0 Firefox/90.0
OS  Linux 28 #1 SMP PREEMPT Sat Apr 4 11:42:06 CDT 2020
Application Binary  /data/user/0/org.mozilla.fenix/dummy
Enabled Plugins     about:plugins
Build Configuration     about:buildconfig
Memory Use  about:memory
Performance     about:performance
Registered Service Workers  about:serviceworkers
Multiprocess Windows    0/0
Fission Windows     0/0 Disabled by default
Remote Processes    1
Google Location Service Key     Found
Google Safebrowsing Key     Found
Mozilla Location Service Key    Found
Safe Mode   false
Crash Reports for the Last 3 Days
Report ID   Submitted

All Crash Reports

This application has not been configured to display crash reports.
Nightly Features
Name    Version     ID
Remote Processes
Type    Count
Web Content 1 / 2
Add-ons
Name    Type    Version     Enabled     ID
Mozilla Android Components - Ads    extension   90.0.20210502143118.0502174659  true    ads@mozac.org
Mozilla Android Components - Browser Icons  extension   90.0.20210502143118.0502143947  true    icons@mozac.org
Mozilla Android Components - Cookies    extension   90.0.20210502143118.0502174659  true    cookies@mozac.org
Mozilla Android Components - Firefox Accounts WebChannel    extension   90.0.20210502143118.0502143937  true    fxa@mozac.org
Mozilla Android Components - ReaderView extension   90.0.20210502143118.0502143820  true    readerview@mozac.org
Mozilla Android Components - Web Compatibility Interventions    extension   22.0.0  true    webcompat@mozilla.org
Mozilla Android Components - WebCompat Reporter extension   2.0.0   true    webcompat-reporter@mozilla.org
Dark Reader extension   4.9.32  false   addon@darkreader.org
Graphics
Features
Compositing WebRender
Asynchronous Pan/Zoom   touch input enabled; autoscroll enabled; smooth pinch-zoom enabled
WebGL 1 Driver WSI Info EGL_VENDOR: Android
EGL_VERSION: 1.4 Android META-EGL
EGL_EXTENSIONS: EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_swap_buffers_with_damage EGL_ANDROID_get_native_client_buffer EGL_ANDROID_front_buffer_auto_refresh EGL_ANDROID_get_frame_timestamps EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata EGL_KHR_image EGL_KHR_image_base EGL_EXT_image_gl_colorspace EGL_KHR_lock_surface EGL_KHR_gl_colorspace EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_EXT_create_context_robustness EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync EGL_ANDROID_recordable EGL_KHR_partial_update EGL_EXT_pixel_format_float EGL_KHR_create_context_no_error EGL_KHR_mutable_render_buffer EGL_EXT_yuv_surface EGL_IMG_context_priority EGL_KHR_no_config_context 
IsWebglOutOfProcessEnabled: 0
WebGL 1 Driver Renderer Qualcomm -- Adreno (TM) 308
WebGL 1 Driver Version  OpenGL ES 3.0 V@331.0 (GIT@054a40f, I67e1628f4e) (Date:05/18/19)
WebGL 1 Driver Extensions   GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_half_float GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_compressed_ETC1_RGB8_texture GL_AMD_compressed_ATC_texture GL_OES_texture_npot GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_OES_texture_3D GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_QCOM_alpha_test GL_OES_depth24 GL_OES_packed_depth_stencil GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_EXT_sRGB GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_sRGB_decode GL_OES_element_index_uint GL_QCOM_user_clip_planes GL_EXT_EGL_image_external_wrap_modes GL_EXT_multisampled_render_to_texture GL_EXT_robustness GL_OES_get_program_binary GL_EXT_debug_label GL_QCOM_tiled_rendering GL_OES_standard_derivatives GL_OES_vertex_array_object GL_EXT_YUV_target GL_EXT_sRGB_write_control GL_EXT_discard_framebuffer GL_OES_surfaceless_context GL_KHR_no_error GL_EXT_debug_marker GL_OES_EGL_image_external_essl3 GL_EXT_EGL_image_storage 
WebGL 1 Extensions  ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_sRGB EXT_texture_filter_anisotropic MOZ_debug OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_lose_context
WebGL 2 Driver WSI Info EGL_VENDOR: Android
EGL_VERSION: 1.4 Android META-EGL
EGL_EXTENSIONS: EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_swap_buffers_with_damage EGL_ANDROID_get_native_client_buffer EGL_ANDROID_front_buffer_auto_refresh EGL_ANDROID_get_frame_timestamps EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata EGL_KHR_image EGL_KHR_image_base EGL_EXT_image_gl_colorspace EGL_KHR_lock_surface EGL_KHR_gl_colorspace EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_EXT_create_context_robustness EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync EGL_ANDROID_recordable EGL_KHR_partial_update EGL_EXT_pixel_format_float EGL_KHR_create_context_no_error EGL_KHR_mutable_render_buffer EGL_EXT_yuv_surface EGL_IMG_context_priority EGL_KHR_no_config_context 
IsWebglOutOfProcessEnabled: 0
WebGL 2 Driver Renderer Qualcomm -- Adreno (TM) 308
WebGL 2 Driver Version  OpenGL ES 3.0 V@331.0 (GIT@054a40f, I67e1628f4e) (Date:05/18/19)
WebGL 2 Driver Extensions   GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_half_float GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_compressed_ETC1_RGB8_texture GL_AMD_compressed_ATC_texture GL_OES_texture_npot GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_OES_texture_3D GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_QCOM_alpha_test GL_OES_depth24 GL_OES_packed_depth_stencil GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_EXT_sRGB GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_sRGB_decode GL_OES_element_index_uint GL_QCOM_user_clip_planes GL_EXT_EGL_image_external_wrap_modes GL_EXT_multisampled_render_to_texture GL_EXT_robustness GL_OES_get_program_binary GL_EXT_debug_label GL_QCOM_tiled_rendering GL_OES_standard_derivatives GL_OES_vertex_array_object GL_EXT_YUV_target GL_EXT_sRGB_write_control GL_EXT_discard_framebuffer GL_OES_surfaceless_context GL_KHR_no_error GL_EXT_debug_marker GL_OES_EGL_image_external_essl3 GL_EXT_EGL_image_storage 
WebGL 2 Extensions  EXT_color_buffer_float EXT_texture_filter_anisotropic MOZ_debug WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
Uses Tiling true
Uses Tiling (Content)   true
Target Frame Rate   60
GPU #1
Active  Yes
Description Model: moto g(6) play, Product: jeter, Manufacturer: motorola, Hardware: qcom, OpenGL: Qualcomm -- Adreno (TM) 308 -- OpenGL ES 3.0 V@331.0 (GIT@054a40f, I67e1628f4e) (Date:05/18/19)
Vendor ID   Qualcomm
Device ID   Adreno (TM) 308
Driver Version  OpenGL ES 3.0 V@331.0 (GIT@054a40f, I67e1628f4e) (Date:05/18/19)
RAM 0
Diagnostics
AzureCanvasBackend  skia
AzureContentBackend skia
AzureFallbackCanvasBackend  skia
CMSOutputProfile    Empty profile data
Display0    720x1440
DisplayCount    1
TileHeight  256
TileWidth   256
Device Reset    
Decision Log
HW_COMPOSITING  
available by default
force_enabled by user: Force-enabled by pref
OPENGL_COMPOSITING  
available by default
force_enabled by user: Force-enabled by pref
WEBRENDER   
available by default
WEBRENDER_QUALIFIED 
available by default
WEBRENDER_COMPOSITOR    
disabled by default: Disabled by default
WEBRENDER_PARTIAL   
available by default
blocked by env: Partial present blocked
WEBRENDER_SHADER_CACHE  
available by default
blocklisted by env: Blocklisted by gfxInfo
WEBRENDER_OPTIMIZED_SHADERS 
available by default
WEBRENDER_ANGLE 
available by default
unavailable by env: OS not supported
WEBRENDER_DCOMP_PRESENT 
available by default
disabled by user: User disabled via pref
unavailable by env: Requires Windows 10 or later
unavailable by runtime: Requires ANGLE
WEBRENDER_SOFTWARE  
available by default
blocklisted by env: No qualified hardware
OMTP    
disabled by default: Disabled by default
WEBGPU  
disabled by default: Disabled by default
Media
Audio Backend   opensl
Max Channels    2
Preferred Sample Rate   48000
Roundtrip latency (standard deviation)  ...
Output Devices
Name    Group   Vendor  State   Preferred   Format  Channels    Rate    Latency
Default audio output device         Enabled All default: S16LE, support: S16LE S16BE F32LE F32BE    2   default: 44100, support: 44100 - 44100  128 - 441
Input Devices
Name    Group   Vendor  State   Preferred   Format  Channels    Rate    Latency
Default audio input device          Enabled All default: S16LE, support: S16LE S16BE F32LE F32BE    1   default: 44100, support: 44100 - 44100  128 - 441
Media Capabilities

Environment Variables
Name    Value
Important Modified Preferences
    Name    Value dom.presentation.device.name  moto g(6) play
dom.w3c_pointer_events.enabled  true
extensions.lastAppVersion   90.0a1
idle.lastDailyNotification  1620002750
media.gmp.storage.version.observed  1
network.trr.blocklist_cleanup_done  true
privacy.purge_trackers.date_in_cookie_database  0
privacy.purge_trackers.last_purge   1620002751481
security.remote_settings.crlite_filters.checked 1620133717
security.remote_settings.intermediates.checked  1620133717
storage.vacuum.last.index   0
user.js Preferences

Your profile folder contains a user.js file, which includes preferences that were not created by Nightly.
Important Locked Preferences
    Name    Value fission.autostart.session false
Accessibility
Activated   false
Prevent Accessibility   0
Library Versions
    Expected minimum version    Version in use
NSPR    4.31 Beta   4.31 Beta
NSS 3.64    3.64
NSSSMIME    3.64    3.64
NSSSSL  3.64    3.64
NSSUTIL 3.64    3.64
Startup Cache
Disk Cache Path     /data/user/0/org.mozilla.fenix/files/mozilla/gttt0iu1.default/startupCache/startupCache.4.little
Ignore Disk Cache   false
Found Disk Cache on Init    true
Wrote to Disk Cache     false
Internationalization & Localization
Application Settings
Requested Locales   ["en-US"]
Available Locales   ["an","ar","ast","az","be","bg","bn","br","bs","ca","cak","cs","cy","da","de","dsb","el","en-CA","en-GB","en-US","eo","es-AR","es-CL","es-ES","es-MX","et","eu","fa","ff","fi","fr","fy-NL","ga-IE","gd","gl","gn","gu-IN","he","hi-IN","hr","hsb","hu","hy-AM","id","is","it","ja","ka","kab","kk","kn","ko","lij","lo","lt","lv","ml","mr","ms","my","nb-NO","ne-NP","nl","nn-NO","oc","pa-IN","pl","pt-BR","pt-PT","rm","ro","ru","sk","sl","son","sq","sr","sv-SE","ta","te","th","tr","trs","uk","ur","uz","vi","wo","xh","zam","zh-CN","zh-TW"]
App Locales     ["en-US","en-CA","en-GB"]
Regional Preferences    ["en-US"]
Default Locale  "en-US"
Operating System
System Locales  ["en-US"]
Regional Preferences    ["en-US"]
Remote Debugging (Chromium Protocol)
Accepting Connections   false
URL     
jamienicol commented 3 years ago

Thanks @iinuwa that's really helpful.

Could you also try going to about:config, setting gfx.webrender.allow-partial-present-buffer-age to false, restart, and see if that helps. If not, then try setting gfx.webrender.max-partial-present-rects to 0 (zero), restart, and see if that helps?

@kbrosnan It seems like this isn't actually a duplicate of #19348 (even though it looks similar), due to this being on Adreno rather than Mali-T.

iinuwa commented 3 years ago

@jamienicol: None of those combinations (allow-partial: false, max-partial: 1; allow-partial: false, max-partial: 0; allow-partial: true, max-partial: 0) made a difference.

jamienicol commented 3 years ago

Thanks. I think that's expected, because partial present should be disabled by default on your device, because we already had seen it reported as being buggy. So this issue isn't related to partial present.

Could you try running mozregression again, this time with --pref 'gfx.webrender.all:true' (as well as --app gve as you said). Then try running an old version and see if you can see this bug. (I expect you will see lots of unrelated bugs on older versions, but just try to say good or bad depending on if you can see the same bug as in your original screenshots)

iinuwa commented 3 years ago

Took a while! I didn't immediately notice any other weird unrelated bugs, so that's interesting

With WebRender force-enabled, I got this:

42:07.54 INFO: Narrowed integration regression window from [3d6c5508, b3574370] (3 builds) to [3d6c5508, bf177e66] (2 builds) (~1 steps left) 42:07.55 INFO: No more integration revisions, bisection finished. 42:07.55 INFO: Last good revision: 3d6c550826125822e4c38aee5c85327d97908243 42:07.55 INFO: First bad revision: bf177e6625275332a646d7db8c2d6fbdd7a85e02 42:07.55 INFO: Pushlog: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=3d6c550826125822e4c38aee5c85327d97908243&tochange=bf177e6625275332a646d7db8c2d6fbdd7a85e02

jamienicol commented 3 years ago

Thanks @iinuwa, that's interesting. I think I may need to get my hands on one of these devices to investigate this further.

In the meantime, if you weren't aware, you can set gfx.webrender.force-disabled to true in about:config to work around the bug.

iinuwa commented 3 years ago

Sounds good. Should this be reopened then?

Let me know if you want anymore testing done.

In the meantime, if you weren't aware, you can set gfx.webrender.force-disabled to true in about:config to work around the bug.

Ah, that works. Thanks!