Open Bug 1609217 Opened 5 years ago Updated 2 years ago

Scrolling on https://webassembly-summit.org/speakers/ feels sluggish with WebRender on Samsung Galaxy A7

Categories

(Core :: Graphics: WebRender, defect, P3)

73 Branch
Unspecified
Android
defect

Tracking

()

People

(Reporter: nachtigall, Unassigned)

References

(Blocks 2 open bugs)

Details

(Keywords: mobile, perf)

This website (when scrolling) feels on Firefox Preview (Android) with WebRender enabled. https://webassembly-summit.org/speakers/

Without WebRender (or normal Firefox) it feels not so sluggish when scrolling. There's kind of a zoom on the pictures effect when zoomed into viewport, not sure if this is why.

I have a Samsung Galaxy A3 (2017) and enabled WebRender myself in about:config (just to play a bit with it).

My about:support:

{
  "application": {
    "name": "Fennec",
    "osVersion": "Linux 26",
    "version": "73.0a1",
    "buildID": "20200106092427",
    "userAgent": "Mozilla/5.0 (Android 8.0.0; Mobile; rv:73.0) Gecko/73.0 Firefox/73.0",
    "safeMode": false,
    "updateChannel": "nightly",
    "supportURL": "https://support.mozilla.org/1/mobile/73.0a1/Android/de/",
    "numTotalWindows": 0,
    "numRemoteWindows": 0,
    "remoteAutoStart": false,
    "autoStartStatus": 2,
    "keyLocationServiceGoogleFound": true,
    "keySafebrowsingGoogleFound": true,
    "keyMozillaFound": true
  },
  "securitySoftware": {
    "registeredAntiVirus": "",
    "registeredAntiSpyware": "",
    "registeredFirewall": ""
  },
  "processes": {
    "remoteTypes": {
      "web": 1
    },
    "maxWebContentProcesses": 1
  },
  "modifiedPreferences": {
    "browser.cache.disk.amount_written": 1975380,
    "browser.cache.disk.capacity": 51200,
    "browser.cache.disk.filesystem_reported": 1,
    "dom.presentation.device.name": "SM-A320FL",
    "dom.w3c_pointer_events.enabled": true,
    "extensions.lastAppVersion": "73.0a1",
    "gfx.webrender.all": true,
    "idle.lastDailyNotification": 1578939920,
    "media.gmp.storage.version.observed": 1,
    "network.predictor.cleaned-up": true,
    "storage.vacuum.last.index": 0
  },
  "lockedPreferences": {},
  "media": {
    "currentAudioBackend": "opensl",
    "currentMaxAudioChannels": 2,
    "currentPreferredSampleRate": 48000,
    "audioOutputDevices": [
      {
        "name": "",
        "groupId": "",
        "vendor": "",
        "type": 2,
        "state": 2,
        "preferred": 15,
        "supportedFormat": 12336,
        "defaultFormat": 16,
        "maxChannels": 2,
        "defaultRate": 44100,
        "maxRate": 44100,
        "minRate": 41000,
        "maxLatency": 410,
        "minLatency": 128
      }
    ],
    "audioInputDevices": [
      {
        "name": "",
        "groupId": "",
        "vendor": "",
        "type": 1,
        "state": 2,
        "preferred": 15,
        "supportedFormat": 12336,
        "defaultFormat": 16,
        "maxChannels": 1,
        "defaultRate": 44100,
        "maxRate": 44100,
        "minRate": 41000,
        "maxLatency": 410,
        "minLatency": 128
      }
    ]
  },
  "javaScript": {
    "incrementalGCEnabled": true
  },
  "accessibility": {
    "isActive": false,
    "forceDisabled": 0,
    "handlerUsed": false,
    "instantiator": ""
  },
  "libraryVersions": {
    "NSPR": {
      "minVersion": "4.24",
      "version": "4.24"
    },
    "NSS": {
      "minVersion": "3.49",
      "version": "3.49"
    },
    "NSSUTIL": {
      "minVersion": "3.49",
      "version": "3.49"
    },
    "NSSSSL": {
      "minVersion": "3.49",
      "version": "3.49"
    },
    "NSSSMIME": {
      "minVersion": "3.49",
      "version": "3.49"
    }
  },
  "userJS": {
    "exists": false
  },
  "intl": {
    "localeService": {
      "requested": [
        "de-DE"
      ],
      "available": [
        "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"
      ],
      "supported": [
        "de",
        "en-US"
      ],
      "regionalPrefs": [
        "de-DE"
      ],
      "defaultLocale": "en-US"
    },
    "osPrefs": {
      "systemLocales": [
        "de-DE"
      ],
      "regionalPrefsLocales": [
        "de-DE"
      ]
    }
  },
  "crashes": {
    "submitted": [],
    "pending": 0
  },
  "graphics": {
    "numTotalWindows": 1,
    "numAcceleratedWindows": 1,
    "windowLayerManagerType": "WebRender",
    "windowLayerManagerRemote": true,
    "windowUsingAdvancedLayers": false,
    "adapterDescription": "Model: SM-A320FL, Product: a3y17ltexc, Manufacturer: samsung, Hardware: samsungexynos7870, OpenGL: ARM -- Mali-T830 -- OpenGL ES 3.2 v1.r22p0-01rel0.1c3fafb6967aa7b4a29d549a102bdb12",
    "adapterVendorID": "ARM",
    "adapterDeviceID": "Mali-T830",
    "adapterRAM": 0,
    "adapterDrivers": "",
    "driverVendor": "",
    "driverVersion": "OpenGL ES 3.2 v1.r22p0-01rel0.1c3fafb6967aa7b4a29d549a102bdb12",
    "driverDate": "",
    "usesTiling": true,
    "contentUsesTiling": true,
    "offMainThreadPaintEnabled": false,
    "offMainThreadPaintWorkerCount": 0,
    "targetFrameRate": 59,
    "webgl1Renderer": "ARM -- Mali-T830",
    "webgl1Version": "OpenGL ES 3.2 v1.r22p0-01rel0.1c3fafb6967aa7b4a29d549a102bdb12",
    "webgl1DriverExtensions": "GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_protected_textures GL_EXT_buffer_storage ",
    "webgl1Extensions": "ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_disjoint_timer_query EXT_float_blend EXT_sRGB 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_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_lose_context",
    "webgl1WSIInfo": "EGL_VENDOR: ARM\nEGL_VERSION: 1.4 Midgard-\"r22p0-01rel0\"\nEGL_EXTENSIONS: EGL_ANDROID_image_native_buffer EGL_ANDROID_recordable EGL_ANDROID_native_fence_sync EGL_ANDROID_framebuffer_target EGL_ANDROID_image_crop EGL_ANDROID_blob_cache EGL_KHR_partial_update EGL_KHR_mutable_render_buffer EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_KHR_no_config_context EGL_ARM_implicit_external_sync EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_create_context_robustness",
    "webgl2Renderer": "ARM -- Mali-T830",
    "webgl2Version": "OpenGL ES 3.2 v1.r22p0-01rel0.1c3fafb6967aa7b4a29d549a102bdb12",
    "webgl2DriverExtensions": "GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_protected_textures GL_EXT_buffer_storage ",
    "webgl2Extensions": "EXT_color_buffer_float EXT_disjoint_timer_query EXT_float_blend OVR_multiview2 WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context",
    "webgl2WSIInfo": "EGL_VENDOR: ARM\nEGL_VERSION: 1.4 Midgard-\"r22p0-01rel0\"\nEGL_EXTENSIONS: EGL_ANDROID_image_native_buffer EGL_ANDROID_recordable EGL_ANDROID_native_fence_sync EGL_ANDROID_framebuffer_target EGL_ANDROID_image_crop EGL_ANDROID_blob_cache EGL_KHR_partial_update EGL_KHR_mutable_render_buffer EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_KHR_no_config_context EGL_ARM_implicit_external_sync EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_create_context_robustness",
    "info": {
      "AzureCanvasBackend": "skia",
      "AzureFallbackCanvasBackend": "none",
      "AzureContentBackend": "skia",
      "ApzTouchInput": 1,
      "ApzAutoscrollInput": 1,
      "TileHeight": 256,
      "TileWidth": 256,
      "DisplayCount": 1,
      "Display0": "720x1280"
    },
    "featureLog": {
      "features": [
        {
          "name": "HW_COMPOSITING",
          "description": "Compositing",
          "status": "force_enabled",
          "log": [
            {
              "type": "default",
              "status": "available"
            },
            {
              "type": "user",
              "status": "force_enabled",
              "message": "Force-enabled by pref"
            }
          ]
        },
        {
          "name": "OPENGL_COMPOSITING",
          "description": "OpenGL Compositing",
          "status": "force_enabled",
          "log": [
            {
              "type": "default",
              "status": "available"
            },
            {
              "type": "user",
              "status": "force_enabled",
              "message": "Force-enabled by pref"
            }
          ]
        },
        {
          "name": "WEBRENDER",
          "description": "WebRender",
          "status": "available",
          "log": [
            {
              "type": "default",
              "status": "opt-in",
              "message": "WebRender is an opt-in feature"
            },
            {
              "type": "user",
              "status": "available",
              "message": "Force enabled by pref"
            }
          ]
        },
        {
          "name": "WEBRENDER_QUALIFIED",
          "description": "WebRender qualified",
          "status": "blacklisted",
          "log": [
            {
              "type": "default",
              "status": "available"
            },
            {
              "type": "env",
              "status": "blacklisted",
              "message": "No qualified hardware"
            }
          ]
        },
        {
          "name": "WEBRENDER_COMPOSITOR",
          "description": "WebRender native compositor",
          "status": "disabled",
          "log": [
            {
              "type": "default",
              "status": "disabled",
              "message": "Disabled by default"
            }
          ]
        },
        {
          "name": "OMTP",
          "description": "Off Main Thread Painting",
          "status": "disabled",
          "log": [
            {
              "type": "default",
              "status": "disabled",
              "message": "Disabled by default"
            }
          ]
        },
        {
          "name": "WEBGPU",
          "description": "WebGPU",
          "status": "disabled",
          "log": [
            {
              "type": "default",
              "status": "disabled",
              "message": "Disabled by default"
            }
          ]
        }
      ],
      "fallbacks": []
    },
    "crashGuards": []
  },
  "extensions": [],
  "features": []
}
Keywords: mobile, perf
Priority: -- → P3
Version: unspecified → 73 Branch

I confirmed that this doesn't seem to be a problem on desktop or Adreno.

Same problem also on https://websummit.com/speakers

Scrolling with Firefox Preview Nightly with WebRender enabled is really stuttering.

With WebRender disabled the scrolling is fluent. Also fluent with normal stable Firefox on Android.

The https://websummit.com/speakers also has huge, many fotos like https://webassembly-summit.org/speakers/ - maybe that's the main reason.

I am the original reporter, so same phone specs.

No longer blocks: wr-android

@Jamie: can you profile?

Flags: needinfo?(jnicol)

Profile on Galaxy A5 2017: https://share.firefox.dev/2ZSGwD5

Scrolling is definitely sluggish, and there's a couple stutters which correspond to hundreds of milliseconds glCopyImageSubData calls in the profile. Need to get to the bottom of this before shipping to Mali-T. It's fine on Mali-G.

Blocks: wr-malit-release
No longer blocks: wr-mali
Flags: needinfo?(jnicol)
Blocks: wr-android-perf
No longer blocks: wr-perf
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.