Closed Bug 990080 Opened 11 years ago Closed 11 years ago

TiledLayerBufferComposite::RecycleCallback() is not called from second time.

Categories

(Core :: Graphics: Layers, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla31
tracking-b2g backlog

People

(Reporter: sotaro, Assigned: sotaro)

References

Details

(Keywords: regression)

Attachments

(1 file)

+++ This bug was initially created as a clone of Bug #977880 +++ Within TiledLayerBufferComposite::RecycleCallback(), TextureParent::CompositorRecycle() is called. TextureParent::CompositorRecycle() is originally created for SimpleTextureClient. It expects that TextureParent::RecvClientRecycle() is called from child side. In the function increment TextureHost's reference count by holding TextureHost's pointer to TextureParent::mWaitForClientRecycle. But TiledLayerBufferComposite does not expect it. Therefore, since TiledLayerBufferComposite::RecycleCallback() is called once, TextuteHost's reference count is kept more than 2. Then TiledLayerBufferComposite::RecycleCallback() is not called after once called. TiledLayerBufferComposite::RecycleCallback() is called when TextuteHost's reference count becomes one.
Nominate to 1.4 blocker. This bug could regress bug 977880.
blocking-b2g: --- → 1.4?
What's the user impact? Is there a performance hit from this?
Flags: needinfo?(bgirard)
(In reply to Jason Smith [:jsmith] from comment #2) > What's the user impact? Is there a performance hit from this? There is no performance impact. This could case, flicker or artifact problem on tiled thebes layers.
(In reply to Sotaro Ikeda [:sotaro] from comment #3) > (In reply to Jason Smith [:jsmith] from comment #2) > > What's the user impact? Is there a performance hit from this? > > There is no performance impact. This could case, flicker or artifact problem > on tiled thebes layers. This is a potential problem. Even Bug 977880 is very hard to reproduce. I could not reproduce it.
There seems 2 choices to solve the problem. - [1] Adding argument to TextureParent::CompositorRecycle() to differentiate the recycling. When TiledLayerBufferComposite's case, do not call the following. > mWaitForClientRecycle = mTextureHost; - [2] Change SimpleTiledContentClient as not to use TextureParent::RecvClientRecycle(). [1] is simpler way to fix the problem.
Is this only a problem with SimpleTiledContentClient? If so, is it particularly urgent?
This is a potential problem of ClientTiledThebesLayer, not of SimpleTiledContentClient. The reason of "potential" is that no one can re-generate bug 977880 in recent rom. SimpleTiledContentClient uses TextureParent::CompositorRecycle() as recycling. But ClientTiledThebesLayer uses it just as Fence delivery. TextureParent::CompositorRecycle() does not care about the difference. It causes ClientTiledThebesLayer's TextureHost reference count more than 2.
(In reply to Chris Lord [:cwiiis] from comment #6) > Is this only a problem with SimpleTiledContentClient? If so, is it > particularly urgent? This is a potential problem as comment 7. So, not urgent in my understanding.
Next week BenWa is going to look into this bug.
blocking-b2g: 1.4? → backlog
On JB gonk, TiledContentHost uses recycling only on Host side. This patch handle the case.
Attachment #8405476 - Flags: review?(bgirard)
Attachment #8405476 - Flags: review?(bgirard) → review+
Assignee: nobody → sotaro.ikeda.g
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
Flags: needinfo?(bgirard)
blocking-b2g: backlog → ---
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: