Closed
Bug 1063046
Opened 9 years ago
Closed 9 years ago
[Flame] Graphics UI shows black artifact on 50% of the time
Categories
(Core :: Graphics, defect)
Tracking
()
People
(Reporter: njpark, Assigned: BenWa)
References
Details
(Keywords: regression)
Attachments
(9 files, 4 obsolete files)
58.30 KB,
image/png
|
Details | |
63.46 KB,
image/png
|
Details | |
59.97 KB,
text/plain
|
Details | |
70.79 KB,
text/plain
|
Details | |
50.49 KB,
image/png
|
Details | |
1.55 KB,
text/html
|
Details | |
4.57 KB,
text/plain
|
Details | |
5.15 KB,
patch
|
BenWa
:
review+
|
Details | Diff | Splinter Review |
1.72 KB,
patch
|
mstange
:
review+
bajaj
:
approval-mozilla-aurora+
|
Details | Diff | Splinter Review |
Version Info: Gaia a2393917a358a616950d0b02280e03c5c10795b9 Gecko (git commit) 54b65f9f37946f3eeffea00652fc04ff634eecaf BuildID 20140904101243 Version 34.0a2 ro.build.date Thu Aug 28 15:16:38 CST 2014 ro.bootloader L1TC00011660 STR: With about 50% rate of reproduction, UIs show black artifacts when opened. When an HTML image email is opened and the artifact appears, after clicking 'show external image', the email cannot be scrolled.
Reporter | ||
Comment 1•9 years ago
|
||
Reporter | ||
Comment 3•9 years ago
|
||
Sorry, here's the logcat, Is "Error::Loading image failed with ret = -1" msg related to this bug?
Flags: needinfo?(npark)
Reporter | ||
Comment 4•9 years ago
|
||
[Blocking Requested - why for this release]: Bad UI experience - Black artifact appears across different Apps
blocking-b2g: --- → 2.1?
Reporter | ||
Comment 5•9 years ago
|
||
Comment 6•9 years ago
|
||
(In reply to No-Jun Park [:njpark] from comment #3) > Created attachment 8484384 [details] > logcat when artifact appeared on Email App > > Sorry, here's the logcat, Is "Error::Loading image failed with ret = -1" msg > related to this bug? It seems not related to this bug. The problem seems to happen without error log. One possibility is that OpenGL Texture mapping is incorrect. Since JB, genlock is removed, by it even when gralloc ownership/mapping is incorrect, gralloc does not print error in logcat.
Reporter | ||
Comment 7•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #6) > (In reply to No-Jun Park [:njpark] from comment #3) > > Created attachment 8484384 [details] > > logcat when artifact appeared on Email App > > > > Sorry, here's the logcat, Is "Error::Loading image failed with ret = -1" msg > > related to this bug? > > It seems not related to this bug. > > The problem seems to happen without error log. One possibility is that > OpenGL Texture mapping is incorrect. Since JB, genlock is removed, by it > even when gralloc ownership/mapping is incorrect, gralloc does not print > error in logcat. I'll see whether this happens in on JB on tip of 2.1 as well.
Reporter | ||
Comment 8•9 years ago
|
||
This seems to occur in JB as well with same frequency, so at least it's not KK specific. Is there any developer option that I can turn on to isolate the cause?
Comment 9•9 years ago
|
||
Sorry, I did not read the bug carefully. This is a bug about black rectangle. Then, comment6 is not related to this bug. This bug seems dup of Bug 1050468.
Comment 10•9 years ago
|
||
This bug might be a bug of layout area.
Comment 11•9 years ago
|
||
It might be better to check regression window. Since firefox os v2.0, Bug 1022612 is very big change around layout. It might be related to this bug.
Reporter | ||
Comment 13•9 years ago
|
||
This also happens in Calendar app, when the view is set to weekly and swipe to move to next week. The top part becomes black.
Assignee | ||
Comment 14•9 years ago
|
||
Can someone turn on tile boundary from the Settings app and see if the black squares are algined to tiles? We used to have a bug like this with tiling. If it matches tile boundary maybe we have a similar bug again.
Flags: needinfo?(bgirard)
Assignee | ||
Comment 15•9 years ago
|
||
Based on the screenshot it seems like it does. The problem we had was that we support a format per tile. In some case we would reuse a tile surface with a format that didn't match the tile or didn't clear the surface properly for the new format.
Reporter | ||
Comment 16•9 years ago
|
||
The first nightly build this happens is 20140903160206. The previous nightly build, 20140903000204, does not have this issue.
Reporter | ||
Comment 17•9 years ago
|
||
In case of calendar app, it matches the boundary, but not so sure about the contacts app (attached)
Reporter | ||
Updated•9 years ago
|
Keywords: regression
Reporter | ||
Updated•9 years ago
|
Summary: [Flame][KK] Graphics UI shows black artifact on 50% of the time → [Flame] Graphics UI shows black artifact on 50% of the time
Reporter | ||
Comment 18•9 years ago
|
||
Adding qawanted to find the reg range. Comment 16 would be useful for bisection.
Updated•9 years ago
|
Keywords: qawanted → regressionwindow-wanted
Comment 19•9 years ago
|
||
Possible dupe of 1060006, but definitely related - adding to 'see also'
See Also: → 1060006
Updated•9 years ago
|
QA Contact: ckreinbring
Surely a duplicate of bug 1060006, which is currently pointing to the usage of gaia-header, but apparently there are other scenarios as well.
blocking-b2g: 2.1? → 2.1+
Comment 21•9 years ago
|
||
Regression window Last working BuildID: 20140902111800 Gaia: 7e469783859785a8bd4bf02a802f32561c84be7b Gecko: c24ec895b156 Platform Version: 35.0a1 Firmware Version: V123 User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0 First broken BuildID: 20140902113441 Gaia: 7e469783859785a8bd4bf02a802f32561c84be7b Gecko: 7753c52d5976 Platform Version: 35.0a1 Firmware Version: V123 User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0 Working Gaia / Broken Gecko = Repro Gaia: 7e469783859785a8bd4bf02a802f32561c84be7b Gecko: 7753c52d5976 Broken Gaia / Working Gecko = No repro Gaia: 7e469783859785a8bd4bf02a802f32561c84be7b Gecko: c24ec895b156 Gecko pushlog: http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=c24ec895b156&tochange=7753c52d5976 Mozilla inbound Last working BuildID: 20140902021513 Gaia: 44bf2e3bc5ddea9db9a8c851bd353cb234aa883c Gecko: 39a8d9b2b639 Platform Version: 34.0a1 Firmware Version: V123 User Agent: Mozilla/5.0 (Mobile; rv:33.0) Gecko/33.0 Firefox/33.0 First broken BuildID: 20140902025713 Gaia: 44bf2e3bc5ddea9db9a8c851bd353cb234aa883c Gecko: ea4cfd84e417 Platform Version: 34.0a1 Firmware Version: V123 User Agent: Mozilla/5.0 (Mobile; rv:33.0) Gecko/33.0 Firefox/33.0 Working Gaia / Broken Gecko = Repro Gaia: 44bf2e3bc5ddea9db9a8c851bd353cb234aa883c Gecko: ea4cfd84e417 Broken Gaia / Working Gecko = No repro Gaia: 44bf2e3bc5ddea9db9a8c851bd353cb234aa883c Gecko: 39a8d9b2b639 Gecko pushlog: http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=39a8d9b2b639&tochange=ea4cfd84e417
Comment 22•9 years ago
|
||
broken by Bug 967844? Can you take a look Robert?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmitchell) → needinfo?(roc)
Updated•9 years ago
|
Blocks: multi-layer-apz
Reporter | ||
Comment 23•9 years ago
|
||
I think bug 1060006 is same issue as well?
Comment 25•9 years ago
|
||
I can reproduce this on my Flame in the import contacts dialog. I'll take a look.
Assignee: nobody → mstange
Comment 26•9 years ago
|
||
I've seen this quite a lot; most frequently either writing a long message in the messaging app (seems to trigger once the text entry gets long enough), or scrolling down in an e-mail (temporarily shows black at the top of the message as you scroll down).
Comment 27•9 years ago
|
||
Bug 1064181 is also likely the same issue.
Comment 29•9 years ago
|
||
This is a bug with progressive painting. When the layer stops being opaque, its surface mode changes. In that case we need to throw away the old buffers of each tile. This is supposed to happen here: http://hg.mozilla.org/mozilla-central/annotate/2255d7d187b2/gfx/layers/client/TiledContentClient.cpp#l1096 However, mLastPaintContentType / mLastPaintSurfaceMode (which ClientTiledLayerBuffer::HasFormatChanged() compares the layer's current required format to) are updated at the end of ClientTiledLayerBuffer::PaintThebes, which is called for every tile during the progressive update loop. Consequently, we only throw away the first tile we encounter during the update, because for subsequent tiles mLastPaintContentType and mLastPaintSurfaceMode have already been updated to the new values.
Comment 30•9 years ago
|
||
Something like this maybe? This patch at least fixes the bug, but it doesn't look very pretty to me. Is TileClient is a good place to store the information? Maybe we should just discard all tiles of a layer as soon as the layer's format changes?
Attachment #8485873 -
Flags: review?(bgirard)
Comment 31•9 years ago
|
||
For testing I used these steps to reproduce: 1. Kill the Phone app using the app switcher if it's already running. 2. Launch the Phone app. 3. Switch from the dialer pane to the contacts pane. 4. Press the gear icon in the top right corner. 5. Wait for the settings pane to slide in from the bottom.
Assignee | ||
Comment 32•9 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #30) > Created attachment 8485873 [details] [diff] [review] > track format per tile > > Something like this maybe? This patch at least fixes the bug, but it doesn't > look very pretty to me. Is TileClient is a good place to store the > information? IMO I think TextureClient (per front/back buffer) would be better. When we go to paint it we should check what format the paint will be in and perform the discard then if there's a format mismatch. > Maybe we should just discard all tiles of a layer as soon as > the layer's format changes? Perhaps, my goal was to let tiling support having a non homogenous format. The goal of tiling is to amortize changes as we wish. So ideally the discard/allocation would be done over two frames. As well we can even support knowing which tiles need to be transparent and which do not. In practice maybe this is just too complex for to little win and it's the second time we see a bug like this. So if we want to make the conscious decision to not amortize format changes then I'm happy to take a patch like the one here.
Comment 33•9 years ago
|
||
Interesting. Unfortunately I'm not familiar enough with tiling to be able to provide useful input on this question. Can somebody else take over from here, now that we've established that it's not caused by invalidation?
Assignee: mstange → nobody
Updated•9 years ago
|
Flags: needinfo?(milan)
Comment 34•9 years ago
|
||
Unfortunately this testcase doesn't show the bug. I'm attaching it here anyway in case somebody knows what to change, so that we can turn it into a reftest.
Updated•9 years ago
|
Assignee: nobody → bgirard
Flags: needinfo?(milan)
Blocks: 1062792
Updated•9 years ago
|
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][lead-review+]
Updated•9 years ago
|
Flags: needinfo?(roc)
Comment 38•9 years ago
|
||
hey guys, just poking here. whats the status and do we have a path to a fix?
Assignee | ||
Comment 40•9 years ago
|
||
Going to work on this bug this week.
Comment 41•9 years ago
|
||
Is it doable to backout bug 967844 until this bug is resolved, or is it too much work?
(In reply to Tony Chung [:tchung] from comment #38) > hey guys, just poking here. whats the status and do we have a path to a fix? Right, too many duplicate bugs - what Benoit just said, and what I mentioned in https://bugzilla.mozilla.org/show_bug.cgi?id=1060006#c23 last Wednesday.
No longer blocks: 1060006
Comment 43•9 years ago
|
||
It seems we can test to turn this off with this pref: pref("layout.async-containerless-scrolling.enabled", false); Milan, Roc: is that right?
Flags: needinfo?(roc)
Flags: needinfo?(milan)
Yes. But it would be better to fix this bug so we don't have to do that.
Flags: needinfo?(roc)
Updated•9 years ago
|
Flags: needinfo?(milan)
Assignee | ||
Comment 45•9 years ago
|
||
Along the same lines but use the format from the TileClient.
Attachment #8485873 -
Attachment is obsolete: true
Attachment #8485873 -
Flags: review?(bgirard)
Attachment #8490217 -
Flags: review?(mstange)
Comment 46•9 years ago
|
||
Comment on attachment 8490217 [details] [diff] [review] patch Review of attachment 8490217 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/layers/client/ClientTiledThebesLayer.cpp @@ -336,5 @@ > MOZ_ASSERT(mContentClient->GetForwarder()); > } > > - if (mContentClient->mTiledBuffer.HasFormatChanged()) { > - mValidRegion = nsIntRegion(); Don't we still need something like this somewhere?
Assignee | ||
Comment 47•9 years ago
|
||
Actually you're right. Let's leave that in.
Attachment #8490217 -
Attachment is obsolete: true
Attachment #8490217 -
Flags: review?(mstange)
Attachment #8490267 -
Flags: review?(mstange)
Comment 48•9 years ago
|
||
Comment on attachment 8490267 [details] [diff] [review] patch v2 Review of attachment 8490267 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/layers/client/TiledContentClient.h @@ +238,4 @@ > > void DiscardBackBuffer(); > > + void UpdateFormatAndMaybeDiscard(gfxContentType aNewContentType, Maybe call this DiscardIfFormatChanged or something like that instead. With the "update" part I was referring to the fact that the function was storing the new format on the TileClient, and you're no longer doing that.
Attachment #8490267 -
Flags: review?(mstange) → review+
Assignee | ||
Comment 49•9 years ago
|
||
remote: You can view the progress of your build at the following URL: remote: https://tbpl.mozilla.org/?tree=Try&rev=900ecce6b088 remote: Alternatively, view them on Treeherder (experimental): remote: https://treeherder.mozilla.org/ui/#/jobs?repo=try&revision=900ecce6b088
Assignee | ||
Comment 50•9 years ago
|
||
Assignee | ||
Comment 52•9 years ago
|
||
https://tbpl.mozilla.org/?tree=Try&rev=0bdde994800e
Attachment #8490267 -
Attachment is obsolete: true
Attachment #8490912 -
Flags: review+
Comment on attachment 8490912 [details] [diff] [review] patch v3 Review of attachment 8490912 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/layers/client/TiledContentClient.cpp @@ +1124,5 @@ > // the calling code will already have taken care of invalidating the entire > // layer. > + SurfaceMode mode; > + gfxContentType content = GetContentType(&mode); > + aTile.DiscardIfFormatChanged(content, mode); We're in good shape when all we're arguing is what to name methods :) We already have 'HasFormatChanged' which compares the "new" format from what was last painted, and that seems to be a useful one to keep. 'DiscardIfFormatChanged' sounds suspiciously like it would do something based on the results of 'HasFormatChanged', but that's not really the case here. It's really more of a 'IsBufferFormatCompatible' + the discard (ignoring the fact that these are on two different classes) It almost file like we should have the 'IsBufferFormatCompatible', that doesn't do any discarding, and do what we did before - check and call aTile.Discard...x2 if it isn't compatible. Feel free to fully ignore this; as I said, when we start talking about method names, we're in good shape.
Assignee | ||
Comment 54•9 years ago
|
||
My original patch removed HasFormatChanged because it's really misleading but a mstange points out it would change more of the behavior. I decided to restore it not to change the discard behavior which is unrelated to this bug. Particularly since we're looking for a branch patch. I'm happy to update the name again.
Reporter | ||
Comment 55•9 years ago
|
||
(In reply to Benoit Girard (:BenWa) from comment #52) > Created attachment 8490912 [details] [diff] [review] > patch v3 > > https://tbpl.mozilla.org/?tree=Try&rev=0bdde994800e I ran this patch on my KK flame build, and I can still see the artifact by doing the following: 1. Open calendar app, change to Week view. 2. Instead of swiping to left/right to change weeks (it used to show artifacts before the patch, but now it doesn't anymore), scroll down to see the timeslots. Black artifacts start to show on top.
Assignee | ||
Comment 56•9 years ago
|
||
I'm looking a bit deeper into this. If we decide to discard a buffer it wont force it to be repainted. So the code as to carefully match 1:1 with the format change. I think the right thing to do here is to stop supporting having different format for different tiles. We don't benefit from it right now. We would need to modify the display list/frame layer builder code and supporting this optimization wouldn't be highly beneficial. Most of the work would be in tweaking display list/frame layer builder. If we ever did want to support this could easy restore the support in TileClient. I'm just going to stop supporting this and simplify the code for now. I just need to make sure it doesn't have any adverse effects with progressive drawing.
Assignee | ||
Comment 57•9 years ago
|
||
Waiting on try to open
Assignee | ||
Comment 58•9 years ago
|
||
Try looking good so far: https://tbpl.mozilla.org/?tree=Try&rev=975e2d6a0f46
Assignee | ||
Comment 60•9 years ago
|
||
Attachment #8491666 -
Attachment is obsolete: true
Attachment #8492349 -
Flags: review?(bas)
Assignee | ||
Comment 61•9 years ago
|
||
https://tbpl.mozilla.org/?tree=Try&rev=71356226518e
Updated•9 years ago
|
Attachment #8492349 -
Flags: review?(bas) → review+
Assignee | ||
Comment 63•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/77995516ba17
https://hg.mozilla.org/mozilla-central/rev/77995516ba17
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla35
Updated•9 years ago
|
Comment 66•9 years ago
|
||
AFAICT this never landed on Aurora. How is this verified on v2.1 already?
status-firefox33:
--- → wontfix
status-firefox34:
--- → affected
status-firefox35:
--- → fixed
Flags: needinfo?(tchung)
Comment 67•9 years ago
|
||
Still reproducible on v2.1.
Comment 69•9 years ago
|
||
Please request Aurora approval on this when you get a chance :)
Flags: needinfo?(bgirard)
Assignee | ||
Comment 70•9 years ago
|
||
Comment on attachment 8492349 [details] [diff] [review] patch v5: Simplify format change for tiled layers Approval Request Comment [Feature/regressing bug #]: This would of regressed when turning on tiling for scrollable content on b2g. [User impact if declined]: Risk of showing black square while drawing some scrollable content. [Describe test coverage new/current, TBPL]: Changes to the drawing code. This has good test coverage on OS X + Fennec + B2G [Risks and why]: Low. This could lead to incorrect/incomplete rendering if we didn't account for some cases. [String/UUID change made/needed]: None Best to just keep aurora and central in sync. This has good test coverage so we're not taking a big risk in uplifting.
Attachment #8492349 -
Flags: approval-mozilla-aurora?
Flags: needinfo?(bgirard)
Updated•9 years ago
|
Attachment #8492349 -
Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Comment 74•9 years ago
|
||
Issue is verified fixed in Flame 2.2, 2.1 (Full Flash, nightly). Actual Results: Graphical errors do not appear in applications. Device: Flame Master Build ID: 20141016040204 Gaia: 841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9 Gecko: a280a03c9f3c Version: 36.0a1 (Master) Firmware Version: v180 User Agent: Mozilla/5.0 (Mobile; rv:36.0) Gecko/36.0 Firefox/36.0 Device: Flame 2.1 Build ID: 20141016001201 Gaia: 477a9e61c3edf12f32a62a19d329cd277202cc6b Gecko: 67573e422a0f Version: 34.0 (2.1) Firmware Version: v180 User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+][lead-review+] → [QAnalyst-Triage?][lead-review+]
Flags: needinfo?(ktucker)
Updated•9 years ago
|
QA Whiteboard: [QAnalyst-Triage?][lead-review+] → [QAnalyst-Triage+][lead-review+]
Flags: needinfo?(ktucker)
You need to log in
before you can comment on or make changes to this bug.
Description
•