Closed Bug 1149923 Opened 10 years ago Closed 10 years ago

[Flame][Search] The search bar becomes a rectangle when you switch device to landscape mode.

Categories

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

ARM
Gonk (Firefox OS)
defect

Tracking

()

VERIFIED FIXED
mozilla43
blocking-b2g 2.5+
tracking-b2g +
Tracking Status
firefox43 --- fixed
b2g-v2.2 --- affected
b2g-master --- verified

People

(Reporter: liuke, Assigned: chenpighead)

References

()

Details

(Whiteboard: gfx-noted)

Attachments

(7 files, 2 obsolete files)

[1.Description]: [Flame v2.2 & v3.0][E.me Integration] After you launch Browser, tap the address bar, then switch device to landscape, the search bar box will become a rectangle. Found time:10:24 See attachment: 2015-04-01-10-23-59.png and logcat_1024.txt [2.Testing Steps]: 1.Launch Browser. 2.Tap the address bar. 3.Switch device to landscape, input some words. [3.Expected Result]: 3.The corners of search box should be arc-shaped. [4.Actual Result]: 3.The search box becomes a rectangle. [5.Reproduction build]: Flame 2.2(Affected): Build ID 20150331002503 Gaia Revision cc11248ab69f13e89416c8e6bb2e184187e72088 Gaia Date 2015-03-30 22:22:58 Gecko Revision https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/90a26917ee8f Gecko Version 37.0 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150331.034811 Firmware Date Tue Mar 31 03:48:21 EDT 2015 Bootloader L1TC000118D0 Flame 3.0(Affected): Build ID 20150331160205 Gaia Revision 03164bd160809747e6a198e0dba1b7c3ee7789f5 Gaia Date 2015-03-31 14:48:14 Gecko Revision https://hg.mozilla.org/mozilla-central/rev/18a8ea7c2c62 Gecko Version 40.0a1 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150331.191641 Firmware Date Tue Mar 31 19:16:50 EDT 2015 Bootloader L1TC000118D0 [6.Reproduction Frequency]: Always Recurrence,5/5 [7.TCID]: Free Test
Attached file logcat_1024.txt
Attached image 2015-04-01-10-23-59.png
Flags: needinfo?(hcheng)
I think it is a CSS layout problem. Could you take a look?
blocking-b2g: --- → 2.2?
Component: Gaia::Everything.me → Gaia::Search
Flags: needinfo?(hcheng) → needinfo?(dale)
Summary: [Flame][E.me Integration]The search bar becomes a rectangle when you switch device to landscape mode. → [Flame][Search] The search bar becomes a rectangle when you switch device to landscape mode.
Whiteboard: [systemsfe]
I have noticed this, will take a look
Assignee: nobody → dale
Flags: needinfo?(dale)
not a blocker, quick css change that team will fix
blocking-b2g: 2.2? → ---
This isnt a basic CSS problem, its a graphics issue. I tried reproducing the CSS @ http://jsbin.com/yamasikeda/1/edit and cant get it to render the same #rocketbar-form has the background and border-radius applied, if I remove the transform from #rocketbar then the border-radius is rendered, at all other times it is as well, just in the specific expanded in landscape case it doesnt render properly (it does change the appearance but not by much) I think we have seen this before, Chris / Kevin happen to remember the previous bug?
Flags: needinfo?(kgrandon)
Flags: needinfo?(chrislord.net)
Sounds like bug 1062475.
Flags: needinfo?(chrislord.net)
Flags: needinfo?(chung)
Sorry it autosubmitted, Chiajung is this something you would be able to look into? its not 100% but very close to consistent steps to reproduce (open browser app, go to landscape, expand the rocketbar)
Ping me again if bug 1062475 turns out to be a dead end and you need further investigation here. Thanks.
Flags: needinfo?(kgrandon)
Deassigning myself and putting in the right component, unless graphics can advice a possible workaround I think this is too deep in graphics for me to manage, sorry
Assignee: dale → nobody
Component: Gaia::Search → Graphics: Layers
Product: Firefox OS → Core
From comment 3 and 6, not sure this is actually a graphics bug versus a layout bug.
Component: Graphics: Layers → Layout
Whiteboard: [systemsfe] → [systemsfe], gfx-noted
(In reply to Dale Harvey (:daleharvey) from comment #8) > its not 100% but very close to consistent steps to reproduce (open > browser app, go to landscape, expand the rocketbar) FWIW: I wasn't able to reproduce on 3.0 *until I typed some characters* into the rocketbar (in portrait orientation). Then I was able to reproduce consistently.
I see this bug when #rocketbar gets the "active" class. Looking in devtools, we have this rule (from #rocketbar.active) #rocketbar.active { opacity: 1; [...] } If I tweak that opacity (in devtools) to e.g. 0.95 or 0.5, I don't hit this bug. So I think this is a layerization-related bug.
(Or rather: this bug can be worked around by explicitly triggering layerization, I guess.) I think that means this is more graphics than layout, as originally suspected. Reclassifying as Gfx:Layers for now.
Component: Layout → Graphics: Layers
I can not reproduce this on my device(3/26 code base), so I think this may be a regression.
Flags: needinfo?(chung)
:dholbert told me that this issue may be reproducible on Flame 2.2. However, I can not reproduce this on both local build of 2.2 (4/6) and 2.2 PVT build (4/8). I tried STR in comment 0 and comment 12, but no luck. @Lance Can you try to disable hardware composer and see if it still happen? And what base image do you use to test this?
Hi Chiajung, No matter we disable or enable hardware composer, the bug still exists in latest Flame 2.2 & 3.0. And the base image is v18D. Fail rate:5/5 See attachment:1042.mp4 Flame 2.2 version(Affected): Build ID 20150407162504 Gaia Revision ea735c21bfb0d78333213ff0376fce1eac89ead6 Gaia Date 2015-04-07 20:58:15 Gecko Revision https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/3f86ddb7f719 Gecko Version 37.0 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150407.195227 Firmware Date Tue Apr 7 19:52:39 EDT 2015 Bootloader L1TC000118D0 Flame 3.0 version(Affected): Build ID 20150407160201 Gaia Revision 84cbd4391fb7175d5380fa72c04d68873ce77e6d Gaia Date 2015-04-07 17:33:14 Gecko Revision https://hg.mozilla.org/mozilla-central/rev/078128c2600a Gecko Version 40.0a1 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150407.193600 Firmware Date Tue Apr 7 19:36:12 EDT 2015 Bootloader L1TC000118D0
Flags: needinfo?(chung)
Attached video 1042.MP4
That's weird, I can not reproduce this in several try, so I can not tell whether it is a gfx issue or not. To disable hardware composer is to make all layer composition runs on GPU, which was the cause of previous bugs.
Flags: needinfo?(chung)
(In reply to Chiajung Hung [:chiajung] from comment #15) > I can not reproduce this on my device(3/26 code base), so I think this may > be a regression. I can reproduce this issue on latest 3.0 as well as on 3/26 nightly central. Removing window-wanted tag. Reproducible on: Device: Flame 3.0 BuildID: 20150326010205 Gaia: 8dc256a2de273be3abfa2cb2103d872d677834f7 Gecko: 37d3dcbf23a9 Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b Version: 39.0a1 (3.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0 Device: Flame 3.0 BuildID: 20150414072436 Gaia: c8cb0c0ebb8dd1f5c0c9037e38f8e4b237beb77b Gecko: 388f5861dc7d Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b Version: 40.0a1 (3.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:40.0) Gecko/40.0 Firefox/40.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
[Blocking Requested - why for this release]: This was marked as a blocker on the duped bug so nominating this 2.5?
blocking-b2g: --- → 2.5?
Carrying 2.5+ from bug 1184477.
blocking-b2g: 2.5? → 2.5+
Jerry, could you help on this?
Flags: needinfo?(hshih)
tracking-b2g: --- → +
Whiteboard: [systemsfe], gfx-noted → gfx-noted
Any updates here?
I haven't check this bug yet. Will have a look later.
Jeremy and Boris, Could you please check this issue?
Flags: needinfo?(jeremychen)
Flags: needinfo?(hshih)
Flags: needinfo?(boris.chiou)
(In reply to Jerry Shih[:jerry] (UTC+8) from comment #27) > Jeremy and Boris, > Could you please check this issue? I can reproduce this issue on latest 3.0. As comment 12 said, typing some characters into the rocketbar (either in portrait/landscape orientation) is an essential step. I'll start the investigation today. Build ID 20150816150205 Gaia Revision 47c91ffe7f500ca1aaa60de0aabf4d2429120733 Gaia Date 2015-08-14 18:55:02 Gecko Revision https://hg.mozilla.org/mozilla-central/rev/0876695d1abdeb363a780bda8b6cc84f20ba51c9 Gecko Version 43.0a1 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150816.182145 Firmware Date Sun Aug 16 18:21:56 EDT 2015 Bootloader L1TC000118D0
Flags: needinfo?(jeremychen)
Flags: needinfo?(boris.chiou)
See Also: → 1195651
Jeremy, Since you are taking action, assign this bug to you first.
Assignee: nobody → jeremychen
After tracing the code path back and forth, I finally found the root cause. In original code path, we compute mEffectiveTransform for each mask in [1], then pass it to maskQuadTransform in [2]. The maskQuadTransform is then sent as a parameter to shader program by BindMaskForProgram() in [3]. After binding, a mis-sampled mask is generated, which leads to this bug, a broken mask effect. Looks like mask effect in rotation case is not well-handled. To be more clear about the mis-sampling, please see pictures [4] and [5]. We expect maskQuadTransform may take rotation into consideration, like [4] shows. However, the actual result is like [5] shows. I also recorded a video (please see [6]) to illustrate this phenomenon. In [6], for observation purpose, I change the mask color. Rocketbar height and border-radius are also enlarged. Actions: From patch for Bug 768079, MASK_3D will use intermediate surface, however MASK_2D is not taken into consideration. It can be seen from [7], MASK_2D on mobile will not always enter the for loop since MOZ_GFX_OPTIMIZE_MOBILE flag is set to true. In MASK_2D case, we check another condition, (!contTransform.PreservesAxisAlignedRectangles()), which is designed for checking clipRect case. I think MASK_2D should have its own logic. I made few tests and found that shader program can only handle MASK_2D with positive scaling and/or translation. It means that rotations and negative scalings (i.e. flips) should use intermediate surface. I've tested locally and the bug is fixed. I'll remove debug messages and upload a clean patch soon. [1] https://dxr.mozilla.org/mozilla-central/source/gfx/layers/Layers.cpp#1203 [2] https://dxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/CompositorOGL.cpp?from=compositorogl.cpp#1040 [3] https://dxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/CompositorOGL.cpp?from=compositorogl.cpp#1186 [4] attached file: expected_coord_transform [5] attached file: actual_coord_transform [6] attached video: http://youtu.be/mx4pLx_25t4 [7] https://dxr.mozilla.org/mozilla-central/source/gfx/layers/Layers.cpp#1226-1245
Separate maskLayer check logic from clipRect check logic. To avoid running for loop twice, two bool flags, checkClipRect and checkMaskLayers, are added.
Attachment #8653424 - Flags: review?(roc)
Comment on attachment 8653424 [details] [diff] [review] Let 2D mask effect can check whether to use IntermediateSurface or not in its own logic. r=roc (v1) Review of attachment 8653424 [details] [diff] [review]: ----------------------------------------------------------------- Please make a reftest for this
Attachment #8653424 - Flags: review?(roc) → review+
Correct the usage of HasNonAxisAlignedTransform() in this patch. Comments for HasNonAxisAlignedTransform() in Matrix.h could be ambiguous, so I fixed it.
Attachment #8653424 - Attachment is obsolete: true
Attachment #8654000 - Flags: review+
Attached patch Part2: Reftest. r=roc (v1) (obsolete) — Splinter Review
To simulate the phenomenon of changing from portrait mode to landscape mode, a rotation with 90 degrees is used. "will-change: transform;" is used here to avoid layer merging and force mask has its independent layer.
Attachment #8654003 - Flags: review?(roc)
Comment on attachment 8654003 [details] [diff] [review] Part2: Reftest. r=roc (v1) Got few oranges on try: https://treeherder.mozilla.org/#/jobs?repo=try&revision=c0b0980b0578 Figuring out what's going on, so clear review request first.
Attachment #8654003 - Flags: review?(roc)
To simulate the phenomenon of changing from portrait mode to landscape mode, a rotation with 90 degrees is used. "will-change: transform;" is used to force mask has its independent layer. According to [1], there always be few distorted pixels caused by border-raduis effect. So, I use fuzzy equivalence in this test. [1] https://treeherder.mozilla.org/#/jobs?repo=try&revision=ac07d3dfa330
Attachment #8654003 - Attachment is obsolete: true
Attachment #8655228 - Flags: review?(roc)
:roc, thank you for the quick review. I'm thinking about filing a follow up bug to let maskQuadTransform in [1] take ratation into consideration. Thoughts? [1] https://dxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/CompositorOGL.cpp?from=compositorogl.cpp#1040-1043
Flags: needinfo?(roc)
try with test only: https://treeherder.mozilla.org/#/jobs?repo=try&revision=5582ece8b0f5 try with both test and patch: https://treeherder.mozilla.org/#/jobs?repo=try&revision=a270b772cb46 Looks good. Please check in Part1 and Part2 patches. Thanks.
Keywords: checkin-needed
(In reply to Jeremy Chen [:jeremychen] from comment #40) > :roc, thank you for the quick review. I'm thinking about filing a follow up > bug to let maskQuadTransform in [1] take ratation into consideration. > Thoughts? > > [1] > https://dxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/ > CompositorOGL.cpp?from=compositorogl.cpp#1040-1043 Yes, I guess that's worth doing for FxOS.
Flags: needinfo?(roc)
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla43
It looks like the reftest is causing intermittents (see bug 1202316) on Windows because the fuzz is inadequate. The intermittent started shortly after this test was added. Can you please fix?
Status: RESOLVED → REOPENED
Flags: needinfo?(jeremychen)
Resolution: FIXED → ---
Blocks: 1202316
(In reply to Lee Salzman [:eihrul] from comment #45) > It looks like the reftest is causing intermittents (see bug 1202316) on > Windows because the fuzz is inadequate. The intermittent started shortly > after this test was added. Can you please fix? Oops, sorry, It seems the reftest in this bug has not been verified on winxp. I should have verified it in all platforms. I've taken some actions. Please see Bug 1202316.
Flags: needinfo?(jeremychen)
Priority: -- → P3
Set to resolved since Bug 1202316 has been fixed.
Status: REOPENED → RESOLVED
Closed: 10 years ago10 years ago
Resolution: --- → FIXED
This bug has been verified as "pass" on the latest build of Flame KK master by the STR in comment 0. Actual result: The corners of search box is arc-shaped. Occurrence rate: 0/10. Device: Flame KK master (pass) Build ID 20151208150206 Gaia Revision 6b430ea7274af4c352de16b75e6bb85d7621ca83 Gaia Date 2015-12-08 06:31:07 Gecko Revision https://hg.mozilla.org/mozilla-central/rev/a8965ae93c5d098a4f91ad9da72150bb43df07a7 Gecko Version 45.0a1 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20151208.183034 Firmware Date Tue Dec 8 18:30:47 EST 2015 Fireware Version v18D v4 Bootloader L1TC000118D0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
Depends on: 1239564
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: