Startup crash running android sw-wr in debug build
Categories
(Core :: Graphics: WebRender, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox92 | --- | fixed |
People
(Reporter: jnicol, Assigned: jnicol)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
webrender::device::gl::Device::new::_$u7b$$u7b$closure$u7d$$u7d$::ha1b29d8a2b0ff9d4 gl.rs:1417
_$LT$gleam..gl..ErrorReactingGl$LT$F$GT$$u20$as$u20$gleam..gl..Gl$GT$::get_integer_v::h0e22586238e0fe57 gl.rs:101
webrender::device::gl::Device::new::h74762ab367f0b573 gl.rs:1477
webrender_bindings::bindings::wr_device_new::h4e1f6eb09bbf9ba0 bindings.rs:1190
wr_shaders_new bindings.rs:3932
mozilla::wr::WebRenderShaders::WebRenderShaders(mozilla::gl::GLContext*, mozilla::wr::WebRenderProgramCache*) RenderThread.cpp:1028
mozilla::detail::UniqueSelector<mozilla::wr::WebRenderShaders>::SingleObject mozilla::MakeUnique<mozilla::wr::WebRenderShaders, RefPtr<mozilla::gl::GLContext>&, mozilla::wr::WebRenderProgramCache*>(RefPtr<mozilla::gl::GLContext>&, mozilla::wr::WebRenderProgramCache*&&) UniquePtr.h:609
mozilla::wr::RenderThread::SingletonGL(nsTSubstring<char>&) RenderThread.cpp:925
mozilla::wr::RenderThread::SingletonGL() RenderThread.cpp:906
mozilla::wr::RenderCompositorOGLSWGL::Create(RefPtr<mozilla::widget::CompositorWidget> const&, nsTSubstring<char>&) RenderCompositorOGLSWGL.cpp:47
mozilla::wr::RenderCompositorLayersSWGL::Create(RefPtr<mozilla::widget::CompositorWidget> const&, nsTSubstring<char>&) RenderCompositorLayersSWGL.cpp:36
mozilla::wr::RenderCompositor::Create(RefPtr<mozilla::widget::CompositorWidget> const&, nsTSubstring<char>&) RenderCompositor.cpp:168
mozilla::wr::NewRenderer::Run(mozilla::wr::RenderThread&, mozilla::wr::WrWindowId) WebRenderAPI.cpp:95
mozilla::wr::RenderThread::RunEvent(mozilla::wr::WrWindowId, mozilla::UniquePtr<mozilla::wr::RendererEvent, mozilla::DefaultDelete<mozilla::wr::RendererEvent> >) RenderThread.cpp:414
decltype(*(fp).*fp0(Get<0u>(fp1).PassAsParameter(), Get<1u>(fp1).PassAsParameter()))
We assert due to an OpenGL error caused by this. This is caused by the RenderThread initializing the shaders here. We create a webrender Device to initialize the shaders, and attempt to query the opengl version during device initialization. We use the constants GL_MAJOR_VERSION
and GL_MINOR_VERSION
, which are not supported in GLES 2, so this causes the error.
Sotaro, do we need to initialize the shared shaders for software webrender? I wouldn't think we do. If so, skipping that seems like the best solution. I don't think it makes sense to make Device::new() work on GLES 2 when we require GLES 3 for hardware webrender.
This is on my Mali-400 device, which only supports GLES 2. Perhaps this crash doesn't occur on devices which support GLES 3, so we do not encounter it on CI.
Comment 1•3 years ago
|
||
(In reply to Jamie Nicol [:jnicol] from comment #0)
Sotaro, do we need to initialize the shared shaders for software webrender? I wouldn't think we do. If so, skipping that seems like the best solution. I don't think it makes sense to make Device::new() work on GLES 2 when we require GLES 3 for hardware webrender.
We do not need to initialize the shared shaders for software webrender. Then we could skip it on GLES 2.
Updated•3 years ago
|
Assignee | ||
Comment 2•3 years ago
|
||
It leads to OpenGL errors, as we must initialize a webrender Device in
order to initialize the shaders, and this Device attempts to use
OpenGL commands not supported by the GL context. For example the GL
context may only support GLES 2, hence why we are using SWGL in the
first place.
Updated•3 years ago
|
Comment 4•3 years ago
|
||
bugherder |
Description
•