Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.14.1
-
None
-
Qt installed as a part of KDE 5.14 Flatpak Platform
Browser: Plasma Angelfish
Host OS: Sailfish OS 3.2.1.20
GL_VENDOR Qualcomm
GL_RENDERER Adreno (TM) 630
GL_VERSION OpenGL ES 2.0 (OpenGL ES 3.2 V@324.0 (GIT@f4471f2, I3387004788)
GPU0 VENDOR =3D 0x0000 [Qualcomm], DEVICE=3D 0x0000 [Adreno (TM) 630] *ACTIVE*
Wayland server provided by QtWayland 5.4, Sailfish OS running on Qt 5.6. Browser is shown in nested Wayland compositor (QtWayland 5.4 on top of QtWayland 5.4) to contain the flatpak application inside Sailfish OS environment.
Qt installed as a part of KDE 5.14 Flatpak Platform Browser: Plasma Angelfish Host OS: Sailfish OS 3.2.1.20 GL_VENDOR Qualcomm GL_RENDERER Adreno (TM) 630 GL_VERSION OpenGL ES 2.0 (OpenGL ES 3.2 V@324.0 ( GIT@f4471f2 , I3387004788) GPU0 VENDOR =3D 0x0000 [Qualcomm], DEVICE=3D 0x0000 [Adreno (TM) 630] *ACTIVE* Wayland server provided by QtWayland 5.4, Sailfish OS running on Qt 5.6. Browser is shown in nested Wayland compositor (QtWayland 5.4 on top of QtWayland 5.4) to contain the flatpak application inside Sailfish OS environment.
Description
While rather exotic platform (Sailfish OS on ported Android device, running QtWebEngine based browser in Flatpak environment), I hope that the issues with QtWebEngine displaying pages in a browser can be resolved.
chrome://gpu shows that the hardware acceleration is used.
Without any settings, I get jitter while scrolling, watching videos. Frames could be displayed in the wrong order (see below), leaving an impression that the page jumps and then jitters next to the same location before jumping again. All it makes hard to scroll and use. Similar jumps and reordering of frames was observed in videos.
The applied bugs workarounds correspond to Linux ones, as expected taking into account that all Qualcomm issues have Android specified as an OS in gpu_driver_bug_list.json. As a first step, I took all driver bugs workarounds specified in QTWEBENGINE_CHROMIUM_FLAGS, but that didn't help. The used options were as follows: --num-raster-threads=1 --broken_egl_image_ref_counting --clear_uniforms_before_first_program_use --disable_program_caching_for_transform_feedback --disable_program_disk_cache --force_cube_map_positive_x_allocation --max_copy_texture_chromium_size_1048576 --max_msaa_sample_count_4 --max_texture_size_limit_4096 --multisample_renderbuffer_resize_emulation --remove_dynamic_indexing_of_swizzled_vector --round_down_uniform_bind_buffer_range_size --scalarize_vec_and_mat_constructor_args --unbind_egl_context_to_flush_driver_caches --use_copyteximage2d_instead_of_readpixels_on_multisampled_textures --use_es2_for_oopr --use_virtualized_gl_contexts --wake_up_gpu_before_drawing --disabled_extension_GL_EXT_shader_framebuffer_fetch --disabled_extension_GL_KHR_blend_equation_advanced --disabled_extension_GL_KHR_blend_equation_advanced_coherent --disabled_webgl_extension_EXT_disjoint_timer_query --disabled_webgl_extension_EXT_disjoint_timer_query_webgl2 . While they showed up in chrome://gpu listing, I am not 100% sure whether they were used though.
Jitter can be resolved by specifying QTWEBENGINE_DISABLE_GPU_THREAD=1, as suggested in https://bugreports.qt.io/browse/QTBUG-80665. However, with that specified, I was still getting similar jitter on https://get.webgl.org/ . In addition, I was getting frequently black boxes while scrolling on search results shown in google.com. So, rendering artifacts were clear.
All rendering issues, as observed so far, can be resolved with --disable-gpu-compositing. Which, obviously, removes HW acceleration on that part. So, solution has been to set
QTWEBENGINE_DISABLE_GPU_THREAD=1
QTWEBENGINE_CHROMIUM_FLAGS="--disable-gpu-compositing --num-raster-threads=1 --enable-viewport --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing"
(options based on Android defaults, workaround, and Qt-proposed embedded switches from WebEngineContext::WebEngineContext()).
On similar Android phones, HW acceleration does work. I wonder if its possible to make it work on Qt using this hardware as well.