| Summary: | dri3: chrome/chromium gpu acceleration (and therefore webgl) doesn't work | ||
|---|---|---|---|
| Product: | Mesa | Reporter: | Christoph Haag <haagch> |
| Component: | Drivers/DRI/i965 | Assignee: | Ian Romanick <idr> |
| Status: | RESOLVED NOTOURBUG | QA Contact: | Intel 3D Bugs Mailing List <intel-3d-bugs> |
| Severity: | normal | ||
| Priority: | medium | CC: | eero.t.tamminen, js314592, loic.yhuel, naelphin, paulo.miguel.dias, tomi |
| Version: | git | ||
| Hardware: | x86-64 (AMD64) | ||
| OS: | Linux (All) | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
|
Description
Christoph Haag
2014-07-24 07:51:43 UTC
It's more or less intel specific. With (dri3) offloading to a radeonsi GPU all the gpu stuff works. But directly running it on intel doesn't. On different intel hardware I can confirm this bug. LIBGL_DRI3_DISABLE=1 fixed the problem, thanks to Haag for the fix. OpenSUSE Factory AMD64 Information [ 31.368] Current Operating System: Linux OpenSUSE.Linux 3.16.0-rc7-2-desktop #1 SMP PREEMPT Wed Jul 30 09:38:03 UTC 2014 (9b5a5f0) x86_64 Information [ 31.462] compiled for 1.16.0, module version = 2.99.914 Information X.Org X Server 1.16.0 GPU: Intel GM45 CPU: Pentium(R) Dual-Core CPU T4200 @ 2.00GHz Chrome 38 beta crashes on start-up in i965_dri.so if dri3 is enabled with: sandy bridge, xserver 1.16, driver 2.99.916, mesa 10.2.7 Core was generated by `/usr/lib64/chromium-browser/chrome --type=gpu-process --channel=85383.0.1648497'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000032b4096f237 in brw_workaround_depthstencil_alignment () from /usr/lib64/dri/i965_dri.so (gdb) bt #0 0x0000032b4096f237 in brw_workaround_depthstencil_alignment () from /usr/lib64/dri/i965_dri.so #1 0x0000032b40911888 in brw_clear () from /usr/lib64/dri/i965_dri.so #2 0x0000007c4e294af9 in gpu::gles2::GLES2DecoderImpl::Initialize(scoped_refptr<gfx::GLSurface> const&, scoped_refptr<gfx::GLContext> const&, bool, gfx::Size const&, gpu::gles2::DisallowedFeatures const&, std::vector<int, std::allocator<int> > const&) () #3 0x0000007c4e2491ce in content::GpuCommandBufferStub::OnInitialize(base::FileDescriptor, IPC::Message*) () #4 0x0000007c4e24ab4e in content::GpuCommandBufferStub::OnMessageReceived(IPC::Message const&) () #5 0x0000007c4e236c15 in content::MessageRouter::RouteMessage(IPC::Message const&) () #6 0x0000007c4e243c9a in content::GpuChannel::HandleMessage() () #7 0x0000007c4b5cb0f3 in base::debug::TaskAnnotator::RunTask(char const*, char const*, base::PendingTask const&) () #8 0x0000007c4b58ab18 in base::MessageLoop::RunTask(base::PendingTask const&) () #9 0x0000007c4b58ada9 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask const&) () #10 0x0000007c4b58c56e in base::MessageLoop::DoWork() () #11 0x0000007c4b5c35eb in base::MessagePumpGlib::Run(base::MessagePump::Delegate*) () #12 0x0000007c4b59d9a4 in base::RunLoop::Run() () #13 0x0000007c4b5890cc in base::MessageLoop::Run() () #14 0x0000007c4e11bd3d in content::GpuMain(content::MainFunctionParams const&) () #15 0x0000007c4b538f97 in content::ContentMainRunnerImpl::Run() () #16 0x0000007c4b537a2b in content::ContentMain(content::ContentMainParams const&) () #17 0x0000007c4aff31fb in ChromeMain () #18 0x0000032b46b03f1b in __libc_start_main () from /lib64/libc.so.6 #19 0x0000007c4aff3079 in _start () Oh right, I had noticed that the gpu threads are segfaulting, but totally forgot that it could be relevant here.
Ivy Bridge here:
Core was generated by `/opt/google/chrome-unstable/chrome --type=gpu-process --channel=21942.4.5215851'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f84164044b8 in get_stencil_miptree (irb=0xf09fc2270b0) at brw_misc_state.c:225
225 if (irb->mt->stencil_mt)
(gdb) bt full
#0 0x00007f84164044b8 in get_stencil_miptree (irb=0xf09fc2270b0) at brw_misc_state.c:225
No locals.
#1 0x00007f8416404551 in brw_workaround_depthstencil_alignment (brw=0xf09fd940030, clear_mask=50) at brw_misc_state.c:241
ctx = 0xf09fd940030
fb = 0xf09fea11200
rebase_depth = false
rebase_stencil = false
depth_irb = 0xf09fc22af20
stencil_irb = 0xf09fc2270b0
depth_mt = 0x0
stencil_mt = 0xf09fd9717c0
tile_x = 32767
tile_y = 2049073776
stencil_tile_x = 3849
stencil_tile_y = 4254335024
stencil_draw_x = 4271968768
stencil_draw_y = 3849
invalidate_depth = 255
invalidate_stencil = false
tile_mask_x = 4254335024
tile_mask_y = 3849
#2 0x00007f84163a6ff3 in brw_clear (ctx=0xf09fd940030, mask=50) at brw_clear.c:235
brw = 0xf09fd940030
fb = 0xf09fea11200
partial_clear = false
tri_mask = 4254335024
#3 0x00007f841603028b in _mesa_Clear (mask=17664) at ../../src/mesa/main/clear.c:226
bufferMask = 50
ctx = 0xf09fd940030
__func__ = "_mesa_Clear"
__PRETTY_FUNCTION__ = "_mesa_Clear"
#4 0x00007f842933836a in ?? ()
No symbol table info available.
#5 0x0000000000000000 in ?? ()
No symbol table info available.
For the people only reading this bug report: In IRC keithp found the cause. With dri3 temporary files are created with O_TMPFILE. The chromium sandbox does not allow creating temporary files with O_TMPFILE. So another workaround for now is to use chromium/chrome with the --no-sandbox option (which will possibly reduce security). There's a corresponding bugreport at chromium that was not publicly visible before, but now is: https://code.google.com/p/chromium/issues/detail?id=415681#c9 Close this with NOTOURBUG/WONTFIX? It's getting fixed in chromium, so no action is necessary for mesa: https://code.google.com/p/chromium/issues/detail?id=415681#c52 "who has the long-term fix almost ready." I suggest keeping this here open until chromium is actually fixed and then closing it. Resolved upstream - their sandbox allows the creation of the necessary files now (at least in testing releases). |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.