Skip to content

zink: implement pipe_device_reset_callback

He Haocheng requested to merge hch12907/mesa:master into master

While reviewable, this MR is marked as WIP because there is a segfault that occurs only during a reset, and I have no idea how to track it down. (The reset is forced by making zink_get_device_reset_status() always return PIPE_GUILTY_CONTEXT_RESET)

Thread 1 "glxgears" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00007ffff63a229f in dri2_allocate_textures (ctx=0x5555558f8da0, drawable=0x5555555c9a70, statts=0x5555555ca138, statts_count=2) at ../../src/gallium/frontends/dri/dri2.c:450
#2  0x00007ffff63a713d in dri_st_framebuffer_validate (stctx=0x5555555ab070, stfbi=0x5555555c9a70, statts=0x5555555ca138, count=2, out=0x7fffffffe2c0)
    at ../../src/gallium/frontends/dri/dri_drawable.c:82
#3  0x00007ffff63b65e7 in st_framebuffer_validate (stfb=0x5555555c9c60, st=0x5555555ab070) at ../../src/mesa/state_tracker/st_manager.c:223
#4  0x00007ffff63b8588 in st_manager_validate_framebuffers (st=0x5555555ab070) at ../../src/mesa/state_tracker/st_manager.c:1185
#5  0x00007ffff63edb16 in st_validate_state (st=0x5555555ab070, pipeline=ST_PIPELINE_CLEAR) at ../../src/mesa/state_tracker/st_atom.c:203
#6  0x00007ffff63f6c4d in st_Clear (ctx=0x555555ad7500, mask=18) at ../../src/mesa/state_tracker/st_cb_clear.c:442
#7  0x00007ffff67c6df6 in clear (no_error=false, mask=16640, ctx=0x555555ad7500) at ../../src/mesa/main/clear.c:220
#8  _mesa_Clear (mask=16640) at ../../src/mesa/main/clear.c:241
#9  0x0000555555556d9f in ?? ()
#10 0x00005555555568d9 in ?? ()
#11 0x00007ffff7af3152 in __libc_start_main () from /usr/lib/libc.so.6
#12 0x0000555555556b7e in ?? ()

Based on !6789 (merged).

Rebased on master, things seem to be working fine on my end. No tests though.

This closes #3378 (closed).

Edited by He Haocheng

Merge request reports