Add a softpipe graphics card for board bringup |
||
Issue descriptionWhen trying to bring up boards it's nice to be able to see the browser even before the GPU is up and running. marcheu@ suggests a softpipe should be doable and hopefully not too hard. Let's add support for that.
,
Jan 30 2018
I don't know if this is mesa's fault or something about my board (or its kernel config?), but when I tried using softpipe I got crashes: (none) ~ # cat /var/log/ui/ui.LATEST [2432:2432:0101/160001.724119:ERROR:memory_pressure_monitor_chromeos.cc(122)] Cannot open kernel listener libEGL warning: DRI2: failed to open msm (search paths /usr/lib/dri) libEGL warning: No hardware driver found, falling back to software rendering Received signal 11 SEGV_MAPERR 000000000000 #0 0x0000022d2190 <unknown> #1 0x0000022d20d8 <unknown> #2 0x0000f75ca2a0 <unknown> [end of stack trace] Calling _exit(1). Core file will not be generated. libEGL warning: DRI2: failed to open msm (search paths /usr/lib/dri) libEGL warning: No hardware driver found, falling back to software rendering [2432:2432:0101/160002.081366:ERROR:input_method_manager_impl.cc(1031)] IMEEngine for "fgoepimhcoialccpbmpnnblemnepkkao" is not registered [2432:2432:0101/160002.120835:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files [2432:2432:0101/160002.120971:ERROR:device_event_log_impl.cc(156)] [16:00:02.120] Network: shill_property_handler.cc:298 ManagerPropertiesCallback Failed: 0 [2432:2432:0101/160002.121084:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files [2432:2432:0101/160002.121135:ERROR:network_profile_handler.cc(83)] Manager properties returned from Shill don't contain the field Profiles [2432:2432:0101/160002.121232:ERROR:device_event_log_impl.cc(156)] [16:00:02.121] Network: network_handler_callbacks.cc:84 SetTechnologiesProhibited Failed: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files [2432:2432:0101/160002.121345:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files [2432:2432:0101/160002.121397:ERROR:network_sms_handler.cc(404)] NetworkSmsHandler: Failed to get manager properties. [2432:2432:0101/160002.121465:ERROR:object_proxy.cc(626)] Failed to call method: org.chromium.flimflam.Manager.GetProperties: object_path= /: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files device-enumerator: scan all dirs device-enumerator: scanning /sys/bus device-enumerator: scanning /sys/class device-enumerator: scan all dirs device-enumerator: scanning /sys/bus device-enumerator: scanning /sys/class [2432:2432:0101/160002.134150:ERROR:device_event_log_impl.cc(156)] [16:00:02.134] Network: network_handler_callbacks.cc:84 SetHostname Failed: Manager: org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.flimflam was not provided by any .service files [2432:2432:0101/160002.144419:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.144562:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.144647:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.144704:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.144758:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.144849:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.144930:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb [2432:2432:0101/160002.145039:ERROR:component_extension_ime_manager_impl.cc(138)] IME extension file path does not exist: /usr/share/chromeos-assets/input_methods/xkb Received signal 11 SEGV_MAPERR 000000000000 #0 0x000002357190 <unknown> #1 0x0000023570d8 <unknown> #2 0x0000f78552a0 <unknown> [end of stack trace] Calling _exit(1). Core file will not be generated. device-enumerator: scan all dirs device-enumerator: scanning /sys/bus device-enumerator: scanning /sys/class Received signal 6 Received signal 6 #0 0x0000025a9190 <unknown> #1 0x0000025a90d8 <unknown> #2 0x0000f718f2a0 <unknown> #3 0x0000f717fb36 <unknown> #4 0x0000f71fa634 ppoll #5 0x000001460c50 <unknown> #6 0x0000014638ac <unknown> #7 0x000002376bf4 #0 0x000001f98190<unknown> #8 0x000002377a20 <unknown> #1<unknown> #9 0x00000237db880x 000001f980d8 <unknown> #10<unknown> 0x000002376b64 <unknown> #11 0x000001035c1c <unknown> #12 0x0000f717f8a0 #2 0x0000f71922a0 __libc_start_main [end of stack trace] Calling _exit(1). Core file will not be generated. <unknown> #3 0x0000f77de516 <unknown> #4 0x0000f77d657c pthread_join #5 0x000001fdfba2 <unknown> #6 0x000001fe2e2e <unknown> #7 0x000000ebcf78 <unknown> #8 0x000000eb7392 <unknown> #9 0x000000eb66ee <unknown> #10 0x000000eb84d4 <unknown> #11 0x000000eb320e <unknown> #12 0x000001d66a20 <unknown> #13 0x000001d6cb88 <unknown> #14 0x000001d65b64 <unknown> #15 0x000000a24c1c <unknown> #16 0x0000f71828a0 __libc_start_main [end of stack trace] Calling _exit(1). Core file will not be generated.
,
Jan 30 2018
OK, status update here: --- 1. The "signal 6" above might have been because I killed UI because it was spewing too much to the serial console. Maybe ignore? 2. I managed to get this into the debugger with the following things in /etc/chrome_dev.conf: --no-sandbox --disable-gpu-watchdog --gpu-startup-dialog ...once I did that then I could start chrome and look in /var/log/ui/ui.LATEST for the GPU process ID. I could then attach to it on the device: gdb --pid=<pid_of_gpu_process> ...and then I could Ctrl-Z and send kill -SIGUSR1 <pid_of_gpu_process> ...and then "fg" back into gdb and continue a few times till it crashed. ...that gave me garbage, but then I managed to get the symbol files over for "kms_swrast_dri.so.debug". They were in '/build/cheza/usr/lib/debug/usr/lib/dri/kms_swrast_dri.so.debug'. I stuck them in the root filesystem in /usr/lib/debug/usr/lib/dri/ and tried gdb again. I then got this track: --- (gdb) bt #0 0x00000000 in ?? () #1 0xf61affb0 in pipe_sampler_view_reference (ptr=0x84c8640, view=<optimized out>) at ./util/u_inlines.h:159 #2 aaline_destroy (stage=0x84c8600) at draw/draw_pipe_aaline.c:760 #3 0xf61b1774 in draw_pipeline_destroy (draw=0x84e7600) at draw/draw_pipe.c:101 #4 0xf61ace20 in draw_destroy (draw=0x84e7600) at draw/draw_context.c:219 #5 0xf623bed4 in softpipe_destroy (pipe=0x8537000) at sp_context.c:76 #6 0xf60b7822 in st_destroy_context_priv (st=0xb7ac000, destroy_pipe=<optimized out>) at state_tracker/st_context.c:284 #7 0xf60b76ba in st_destroy_context (st=0xb7ac000) at state_tracker/st_context.c:644 #8 0xf61a5a62 in dri_destroy_context (cPriv=<optimized out>) at dri_context.c:216 #9 0xf61a4da2 in driDestroyContext (pcp=0x851d080) at dri_util.c:506 #10 0xf6365d42 in ?? () from /usr/lib/libEGL.so.1 --- marcheu@ says: > there is a bug where the lifetime of some objects in mesa is buggy, i.e. they outlive the context needed to destroy them > we have this worked around for llvmpipe and other drivers we use > but not for softpipe of course
,
Jan 31 2018
See marcheu@'s fix at <https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/894852>
,
Jan 31 2018
With the latest patches, AKA: * https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/892301/7 media-libs/mesa: add USE flag for softpipe * https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/894852/4 media-libs/mesa: Add sampler_view_destroy workaround for softpipe I still get a crash. Now I get: Thread 1 "chrome" received signal SIGSEGV, Segmentation fault. pipe_get_tile_rgba_format (pt=0x0, src=0x0, x=8208, y=<optimized out>, w=134928384, h=134928508, format=372649984, p=0xaddbf800) at util/u_tile.c:447 (gdb) bt #0 pipe_get_tile_rgba_format (pt=0x0, src=0x0, x=8208, y=<optimized out>, w=134928384, h=134928508, format=372649984, p=0xaddbf800) at util/u_tile.c:447 #1 0xf62825b8 in sp_find_cached_tile (tc=0x80ad800, addr=...) at sp_tile_cache.c:609 #2 0xf626fcfe in sp_get_cached_tile (tc=0x0, x=1024, y=2048, layer=<optimized out>) at ./sp_tile_cache.h:155 #3 blend_fallback (qs=0x80a50c0, quads=0xd3f64ac, nr=8) at sp_quad_blend.c:935 #4 0xf6276444 in flush_spans (setup=0xd3f4000) at sp_setup.c:251 #5 0xf627626c in subtriangle (setup=0x0, eleft=0x0, eright=0x400, lines=512, viewport_index=0) at sp_setup.c:763 #6 0xf6276166 in sp_setup_tri (setup=<optimized out>, v0=0x1639f000, v1=<optimized out>, v2=<optimized out>) at sp_setup.c:871 #7 0xf626f0c8 in sp_vbuf_draw_elements (vbr=<optimized out>, indices=0xa0cc824, nr=<optimized out>) at sp_prim_vbuf.c:209 #8 0xf61e9de2 in draw_pt_emit (emit=<optimized out>, vert_info=<optimized out>, prim_info=0xfff0532c) at draw/draw_pt_emit.c:197 #9 0xf61eb0f0 in emit ( emit={void (struct pt_emit *)} 0xf61eb0ba <fetch_pipeline_generic+562>, vert_info=<optimized out>, prim_info=<optimized out>) at draw/draw_pt_fetch_shade_pipeline.c:199 #10 fetch_pipeline_generic (middle=0x80be5f0, fetch_info=0xfff0534c, in_prim_info=0xfff0532c) at draw/draw_pt_fetch_shade_pipeline.c:352 #11 0xf61ead50 in fetch_pipeline_run (middle=0x0, fetch_elts=<optimized out>, fetch_count=<optimized out>, draw_elts=0x800, draw_count=6, prim_flags=0) at draw/draw_pt_fetch_shade_pipeline.c:398 #12 0xf61eee2e in vsplit_flush_cache (vsplit=0xa0cb800, flags=0) at draw/draw_pt_vsplit.c:79 #13 vsplit_segment_cache_ushort (vsplit=<optimized out>, spoken=0 '\000', ispoken=0, close=0 '\000', iclose=0, flags=<optimized out>, istart=<optimized out>, icount=<optimized out>) at draw/draw_pt_vsplit_tmp.h:170 #14 vsplit_segment_simple_ushort (vsplit=0xa0cb800, flags=<optimized out>, istart=0, icount=<optimized out>) at draw/draw_pt_vsplit_tmp.h:179 #15 0xf61ee520 in vsplit_run_ushort (frontend=0xa0cb800, start=0, count=6) at draw/draw_split_tmp.h:110 #16 0xf61e9ae6 in draw_pt_arrays (draw=<optimized out>, prim=<optimized out>, start=<optimized out>, count=<optimized out>) at draw/draw_pt.c:149 #17 0xf61e9992 in draw_vbo (draw=<optimized out>, info=<optimized out>) at draw/draw_pt.c:564 #18 0xf626d892 in softpipe_draw_vbo (pipe=0xa072000, info=<optimized out>) at sp_draw_arrays.c:144 #19 0xf60e8f72 in st_draw_vbo (ctx=0xd48f000, prims=<optimized out>, nr_prims=1, ib=0xfff05578, index_bounds_valid=<optimized out>, min_index=0, max_index=<optimized out>, tfb_vertcount=0x0, stream=<optimized out>, indirect=0x0) at state_tracker/st_draw.c:227 #20 0xf60bf704 in vbo_validated_drawrangeelements (ctx=0xd48f000, mode=<optimized out>, index_bounds_valid=0 '\000', start=<optimized out>, end=<optimized out>, count=<optimized out>, type=<optimized out>, indices=<optimized out>, basevertex=<optimized out>, numInstances=<optimized out>, baseInstance=<optimized out>) at vbo/vbo_exec_array.c:925 #21 0xf60bdb32 in vbo_exec_DrawElements (mode=4, count=<optimized out>, type=<optimized out>, indices=<optimized out>) at vbo/vbo_exec_array.c:1075
,
Feb 2 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/84a7f85ccebbdd626f26e995818602ce49e42f39 commit 84a7f85ccebbdd626f26e995818602ce49e42f39 Author: Gurchetan Singh <gurchetansingh@chromium.org> Date: Fri Feb 02 11:40:24 2018 media-libs/mesa: add USE flag for softpipe There are 3 use flags that affect this ebuild: - llvm (we sometimes need llvm, but not llvmpipe, i.e --with-gallium-drivers=radeonsi --enable-llvm) - llvmpipe (we want to build llvmpipe driver, i.e --with-gallium-drivers=swrast --enable-llvm) - softpipe (we want to build the softpipe driver, i.e --with-gallium-drivers=swrast --disable-llvm) BUG= chromium:807099 TEST=modify variables, check configure output Change-Id: I3177d241a50f91556b207249e965b5983e0adfe5 Reviewed-on: https://chromium-review.googlesource.com/892301 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> [rename] https://crrev.com/84a7f85ccebbdd626f26e995818602ce49e42f39/media-libs/mesa/mesa-17.2.3-r16.ebuild [modify] https://crrev.com/84a7f85ccebbdd626f26e995818602ce49e42f39/media-libs/mesa/mesa-17.2.3.ebuild [modify] https://crrev.com/84a7f85ccebbdd626f26e995818602ce49e42f39/media-libs/mesa/mesa-9999.ebuild
,
Feb 2 2018
crosreview.com/894852 was also part of this fix. This is working now, so marking as Fixed. Thanks!
,
Feb 2 2018
...also: just in case some future search turns up this bug, that crash from #6 was due to the lack of forward ports of 4.4 patches to 4.14. Namely crosreview.com/896229 and crosreview.com/896230. |
||
►
Sign in to add a comment |
||
Comment 1 by diand...@chromium.org
, Jan 30 2018