Closed Bug 1714227 Opened 3 years ago Closed 3 years ago

Scrolling down/up or typing causes odd structures and shapes to be formed on pages (after updating to 89.1.1)

Categories

(Core :: Graphics, defect, P3)

Unspecified
Android
defect

Tracking

()

RESOLVED FIXED
92 Branch
Tracking Status
firefox92 --- fixed

People

(Reporter: kbrosnan, Assigned: jnicol)

References

Details

Attachments

(1 file)

From github: https://github.com/mozilla-mobile/fenix/issues/19783.

Steps to reproduce

Scrolling down or up inside web pages, or typing inside a web page displays weird structures or shapes that are being randomly formed throughout the page. They disappear again if I scroll up or down. This behavior started after I updated my Firefox For Android from version 88.1.4 to version 89.1.1.

Expected behavior

Scrolling or typing should not cause weird shapes to be formed throughout web pages.

Actual behavior

  1. Random, weird structures keep forming and disappearing throughout the web pages when scrolling down or up.
  2. Weird structures seem to appear around boxes while I am typing inside them. They are forming even around this github issue creation box, the one I am typing this to create an issue. They keep forming and disappearing randomly as I type.

Device information

  • Device vendor / model and Android version:
    Swipe Elite Plus
    Android 5.0.1
    Qualcomm Snapdragon 615

  • Firefox for Android version:
    89.1.1 (Build #2015812947)
    AC: 75.0.22, 5204f4025
    GV: 89.0-20210527174632
    AS: 74.0.1

Screenshots


.

.

.

.

.

.

Change performed by the Move to Bugzilla add-on.

Blocks: gfx-triage
Severity: -- → S3
Priority: -- → P3

Android rendering issue to investigate

No longer blocks: gfx-triage
Flags: needinfo?(jnicol)
Summary: [Bug] Scrolling down/up or typing causes odd structures and shapes to be formed on pages (after updating to 89.1.1) → Scrolling down/up or typing causes odd structures and shapes to be formed on pages (after updating to 89.1.1)

I can partially reproduce this on my Nexus 6. (Adreno 420) running Android 5.1, driver version V@104.0. Like in the screenshot, border corners are obviously rendered incorrectly (usually as solid rectangles rather than curved). I also see corruption within the coloured tags/labels on github. For me this appears as lots of coloured circles within what is supposed to be a solid-coloured rounded-corner rectangular background. I don't, however, see coloured polygons extending outwith the bounds of the elements.

The reporter's device is an Adreno 405, Android 5.0.1, driver version V@100.0. So the difference may be due to the slightly different GPU model, or slightly newer driver.

I will try to fix the issues I can reproduce, and hopefully that will fix all of the issues the reporter encounters too. If not, I can try to order a more similar device (the exact one the user has appears to be India-only.)

Assignee: nobody → jnicol
Flags: needinfo?(jnicol)

Okay, so I'm pretty sure we do indeed have (at least) 2 separate issues here. The rounded corners described above are actually from cs_clip_rectangle rather than borders. It seems like the mask does not get rendered sometimes, and we therefore clip brush_solid (for example) against stale render target data rather than the correct mask. This can be worked around by always clearing alpha render targets prior to rendering. I'll do that in this bug.

I have now been able to reproduce the second issue (the weird shaped glitches) on my Nexus 6. I also sometimes see glyphs partially clipped and flickering. I believe this is a bug to do with the driver recycling, and perhaps not synchronizing correctly, VBOs for instance data. I struggled to find a workaround for this, but eventually found that always using a fixed size VBO for instance data avoids this. I'll do this in a separate bug.

See Also: → 1720169

On some Adreno 4xx devices with older drivers we have seen cases where
rendering of masks to alpha targets appears to have no effect. This
results in stale mask data being used for clipping resulting in, for
example, rounded corners appearing as rectangles or strange shapes
rather than solid colours.

This patch performs an unscissored glClear of an alpha target prior to
rendering to it on affected devices, which works around the bug.

Pushed by jnicol@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/82f992bc4ae8
Fully clear alpha targets prior to rendering on Adreno 4xx. r=gfx-reviewers,aosmond
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 92 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: