Closed Bug 598538 Opened 10 years ago Closed 9 years ago

Applying a rotate transform changes dimensions with GL layers on Mac

Categories

(Core :: Graphics, defect)

x86
macOS
defect
Not set

Tracking

()

RESOLVED FIXED
Tracking Status
blocking2.0 --- beta7+

People

(Reporter: bzbarsky, Assigned: mattwoodrow)

References

Details

Attachments

(3 files, 1 obsolete file)

Attached file Testcase
BUILD: Current tip build (or today's nightly, pick your poison)

STEPS TO REPRODUCE:
1)  Start the browser with MOZ_ACCELERATED=1
2)  Load the attached testcase
3)  Hover over the green square

EXPECTED RESULTS: The square rotates 720 degrees clockwise and stays a square the whole time

ACTUAL RESULTS: The square becomes decidedly nonsquare when it's not axis-aligned.

Rendering without MOZ_ACCELERATED=1 is correct
Blocks: ogl-osx-beta
blocking2.0: --- → ?
Attached patch Fix (obsolete) — Splinter Review
When we have transformed content, we can end up needing a temporary surface larger than the window size.

gDumpPaintList output showing a window of size 973x715 and a ContainerLayer with a visible area size of 1106x1124 - http://pastebin.mozilla.org/795640

This patch resets the viewport rect (and tells the manager to setup the view matrices) when we create a temporary FBO.
Attachment #478114 - Flags: review?(vladimir)
There's an extra fViewport in ContainerLayerOGL::RenderLayer, which isn't needed because SetupPipeline also does fViewport.
We still end up calling fViewport twice when resetting the viewport, but this seems cleaner than not using PushViewport
Attachment #478114 - Attachment is obsolete: true
Attachment #478186 - Flags: review?(vladimir)
Attachment #478114 - Flags: review?(vladimir)
blocking2.0: ? → beta7+
Assignee: nobody → matt.woodrow+bugzilla
http://hg.mozilla.org/mozilla-central/rev/879acd43522e
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
This plus bug 598143 being fixed makes this testcase happy (and fast!).
You need to log in before you can comment on or make changes to this bug.