Skip to content
Snippets Groups Projects
Commit bda1c081 authored by Pierre-Eric Pelloux-Prayer's avatar Pierre-Eric Pelloux-Prayer Committed by Marge Bot
Browse files

radeonsi: add helper to use si_screen::aux_context


This context needs to be locked before usage, and flushed after.
If it's forgotten, radeonsi may crash (eg #6666).

To avoid this kind of error, introduce 2 helpers.

cc: mesa-stable

Reviewed-by: default avatarMarek Olšák <marek.olsak@amd.com>
Part-of: <mesa/mesa!17032>
parent 81d6ae31
No related branches found
No related tags found
Loading
......@@ -1469,3 +1469,16 @@ struct pipe_screen *radeonsi_screen_create(int fd, const struct pipe_screen_conf
drmFreeVersion(version);
return rw ? rw->screen : NULL;
}
struct si_context* si_get_aux_context(struct si_screen *sscreen)
{
simple_mtx_lock(&sscreen->aux_context_lock);
return (struct si_context*)sscreen->aux_context;
}
void si_put_aux_context_flush(struct si_screen *sscreen)
{
struct pipe_context *c = &((struct si_context*)sscreen->aux_context)->b;
c->flush(c, NULL, 0);
simple_mtx_unlock(&sscreen->aux_context_lock);
}
......@@ -1526,6 +1526,8 @@ void si_init_compute_functions(struct si_context *sctx);
/* si_pipe.c */
bool si_init_compiler(struct si_screen *sscreen, struct ac_llvm_compiler *compiler);
void si_init_aux_async_compute_ctx(struct si_screen *sscreen);
struct si_context* si_get_aux_context(struct si_screen *sscreen);
void si_put_aux_context_flush(struct si_screen *sscreen);
/* si_perfcounters.c */
void si_init_perfcounters(struct si_screen *screen);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment