Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-82423

WebEngine works only after disabling GPU compositing on Linux/Wayland/Adreno

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 5.14.1
    • WebEngine
    • None
    • Linux/Wayland

    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.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt_webengine_team Qt WebEngine Team
            rinigus Rinigus -
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes