This repository was archived by the owner on Sep 4, 2024. It is now read-only.
Commit 6bc710d
i965: Avoid NULL drawbuffer in brw_flush_front
Commit 17e62a3 made _mesa_make_current
begin calling ctx->Driver.Flush() in more cases, including when called
during context destruction, after _mesa_free_context_data has set
ctx->DrawBuffer to NULL. i965's flush hook wasn't prepared for this,
and assumed that ctx->DrawBuffer was non-NULL. This led to a crash
with the following backtrace:
#0 0x00007ffff5bf97b5 in _mesa_is_winsys_fbo (fb=0x0)
at ../../src/mesa/main/fbobject.h:52
android-rpi#1 0x00007ffff5bfa359 in brw_flush_front (ctx=0x5555555a4110)
at ../../src/mesa/drivers/dri/i965/brw_context.c:242
android-rpi#2 0x00007ffff5bfa587 in brw_glFlush (ctx=0x5555555a4110,
gallium_flush_flags=0) at ../../src/mesa/drivers/dri/i965/brw_context.c:301
android-rpi#3 0x00007ffff5d46b2b in _mesa_make_current (newCtx=0x0, drawBuffer=0x0,
readBuffer=0x0) at ../../src/mesa/main/context.c:1616
#4 0x00007ffff5d46484 in _mesa_free_context_data (ctx=0x5555555a4110,
destroy_debug_output=true) at ../../src/mesa/main/context.c:1309
#5 0x00007ffff5bfcb59 in brw_destroy_context (driContextPriv=0x555555590260)
at ../../src/mesa/drivers/dri/i965/brw_context.c:1301
There is really no point in worrying about front buffer flushing during
the context's destruction when we've already discarded the drawbuffer,
so just add a NULL check in brw_flush_front and skip that work.
Fixes: 17e62a3 ("mesa: (correctly) flush more in _mesa_make_current")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5957
Reviewed-by: Adam Jackson <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14828>1 parent fe18c96 commit 6bc710d
1 file changed
+2
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
239 | 239 | | |
240 | 240 | | |
241 | 241 | | |
242 | | - | |
| 242 | + | |
| 243 | + | |
243 | 244 | | |
244 | 245 | | |
245 | 246 | | |
| |||
0 commit comments