Code clean up around RenderAndroidSurfaceTextureHostOGL
Categories
(Core :: Graphics: WebRender, task)
Tracking
()
Tracking | Status | |
---|---|---|
firefox72 | --- | fixed |
People
(Reporter: sotaro, Assigned: sotaro)
References
Details
Attachments
(1 file)
(deleted),
text/x-phabricator-request
|
Details |
RenderThread::PrepareForUse() hit an assertion failure on android.
https://treeherder.mozilla.org/#/jobs?repo=try&selectedJob=273962887&author=jnicol%40mozilla.com
It seems like a false alarm.
RenderThread::RegisterExternalImage() and RenderThread::UnregisterExternalImage() update mRenderTextures on calling thread(compositor thread). But RenderThread::PrepareForUse() and RenderThread::NotifyNotUsed() post a task to render thread and access mRenderTextures. There could be a race situation.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
Assignee | ||
Comment 2•5 years ago
|
||
RenderThread::PrepareForUse() and RenderThread::NotifyNotUsed() are called only for SurfaceTextureHost. Then problen only happen on android.
https://searchfox.org/mozilla-central/source/gfx/layers/wr/WebRenderTextureHost.cpp#177
Assignee | ||
Comment 3•5 years ago
|
||
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 4•5 years ago
|
||
The patch addressed the assertion failure. But RenderThread::PrepareForUse() still has a problem. In the STR of Bug 1593311 comment 0, there was a case that PrepareForUse() was called after NofityForUse(). PrepareForUse() should be called before NofityForUse().
NofityForUse() handling is delivered via wr::Checkpoint, but NofityForUse() is posted via Loop()->PostTask() since PrepareForUse() needs to be called at RenderAndroidSurfaceTextureHostOGL even when the texture host is not used by WR.
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 5•5 years ago
|
||
Comment 7•5 years ago
|
||
bugherder |
Description
•