Closed Bug 2034283 Opened 14 days ago Closed 12 days ago

transform-style: preserve-3D does not preserve as expected in vers. 150+

Categories

(Core :: Graphics: WebRender, defect)

Firefox 150
defect

Tracking

()

RESOLVED FIXED
152 Branch
Tracking Status
relnote-firefox --- 150+
firefox-esr140 --- unaffected
firefox150 --- fixed
firefox151 --- fixed
firefox152 --- fixed

People

(Reporter: fiend, Assigned: gw)

References

(Regression)

Details

(Keywords: regression)

Attachments

(4 files)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:150.0) Gecko/20100101 Firefox/150.0

Steps to reproduce:

Visited my game website, which heavily utilizes 3D CSS transforms and transform-style, simulating an explorable environment.

Actual results:

All elements that acted as 3D-transformed graphic divs to form the environment are invisible due to their transforms, which are no longer being preserved in 3D compared to FF 149 and lower + chrome. (see attached file)

Expected results:

The transform style should be preserved, allowing the divs to form a 3D environment. See attached file for current visuals, alongside visuals as they appear on pre-150 FF and Chromium.

The Bugbug bot thinks this bug should belong to the 'Core::Layout' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Layout
Product: Firefox → Core

Something to note is that if you use the "pick an element from a page" feature and click where one of the lamp graphics ought to be, it still does select the element correctly. If the transform is changed to not have the rotateX(-90deg) in it (or to be at a reduced rotation), it will also be visible on the ground, showing that the graphic is not being preserved. Visualized here: https://corru.works/ext/transformdisplay.gif

3:29.52 INFO: Narrowed integration regression window from [0d805fc7, 399801f5] (4 builds) to [2fc8246f, 399801f5] (2 builds) (~1 steps left)
3:29.52 INFO: No more integration revisions, bisection finished.
3:29.52 INFO: Last good revision: 2fc8246f8b2e66a6cdb607200e31bce0e7c1dc73
3:29.52 INFO: First bad revision: 399801f5e270aefd936ab342512d1991487d4585
3:29.52 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=2fc8246f8b2e66a6cdb607200e31bce0e7c1dc73&tochange=399801f5e270aefd936ab342512d1991487d4585

Keywords: regression
Regressed by: 2021812
Component: Layout → Graphics: WebRender
Status: UNCONFIRMED → NEW
Ever confirmed: true

Set release status flags based on info from the regressing bug 2021812

:gw, since you are the author of the regressor, bug 2021812, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Severity: -- → S3

Propagate the stacking context's own transform_style to the injected
reference frame instead, in both the Gecko binding path and the wrench
yaml_frame_reader. Add a wrench reftest covering the preserve-3d +
non-zero origin + no-transform case.

Assignee: nobody → mozilla
Status: NEW → ASSIGNED

Attached patch appears to fix the regression - will do a final try run then land.

Flags: needinfo?(mozilla)
Pushed by gwatson@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/2647a4fe5347 https://hg.mozilla.org/integration/autoland/rev/359bc263727d Inherit transform-style on translate-only SC reference frame r=gfx-reviewers,tnikkel
Status: ASSIGNED → RESOLVED
Closed: 12 days ago
Resolution: --- → FIXED
Target Milestone: --- → 152 Branch

The patch landed in nightly and beta is affected.
:gw, is this bug important enough to require an uplift?

For more information, please visit BugBot documentation.

Flags: needinfo?(mozilla)

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: Some websites with complex 3d CSS transforms won't render correctly.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: Very small patch, has automated tests.
  • String changes made/needed?: No
  • Is Android affected?: yes
Attachment #9574277 - Flags: approval-mozilla-beta?

Propagate the stacking context's own transform_style to the injected
reference frame instead, in both the Gecko binding path and the wrench
yaml_frame_reader. Add a wrench reftest covering the preserve-3d +
non-zero origin + no-transform case.

Original Revision: https://phabricator.services.mozilla.com/D296246

Requested uplift for beta.

Flags: needinfo?(mozilla)
Attachment #9574277 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

Probably worth a Release uplift request also.

Flags: needinfo?(mozilla)

firefox-release Uplift Approval Request

  • User impact if declined/Reason for urgency: Some pages with complex 3d css transforms don't render correctly. Suggested by RyanVM.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: Small patch
  • String changes made/needed?: No
  • Is Android affected?: yes
Attachment #9574877 - Flags: approval-mozilla-release?

Propagate the stacking context's own transform_style to the injected
reference frame instead, in both the Gecko binding path and the wrench
yaml_frame_reader. Add a wrench reftest covering the preserve-3d +
non-zero origin + no-transform case.

Original Revision: https://phabricator.services.mozilla.com/D296246

Flags: needinfo?(mozilla)
Attachment #9574877 - Flags: approval-mozilla-release? → approval-mozilla-release+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: