mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-21 14:10:37 +02:00
llvmpipe: wrap late screen init with a mutex.
Next step can just move this into context init Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10338>
This commit is contained in:
parent
c93e95156a
commit
3172289d8b
2 changed files with 18 additions and 3 deletions
|
|
@ -878,19 +878,30 @@ void lp_disk_cache_insert_shader(struct llvmpipe_screen *screen,
|
|||
static bool
|
||||
llvmpipe_screen_late_init(struct llvmpipe_screen *screen)
|
||||
{
|
||||
bool ret = true;
|
||||
mtx_lock(&screen->late_mutex);
|
||||
|
||||
if (screen->late_init_done)
|
||||
goto out;
|
||||
|
||||
screen->rast = lp_rast_create(screen->num_threads);
|
||||
if (!screen->rast) {
|
||||
return false;
|
||||
ret = false;
|
||||
goto out;
|
||||
}
|
||||
|
||||
screen->cs_tpool = lp_cs_tpool_create(screen->num_threads);
|
||||
if (!screen->cs_tpool) {
|
||||
lp_rast_destroy(screen->rast);
|
||||
return false;
|
||||
ret = false;
|
||||
goto out;
|
||||
}
|
||||
|
||||
lp_disk_cache_create(screen);
|
||||
return true;
|
||||
screen->late_init_done = true;
|
||||
out:
|
||||
mtx_unlock(&screen->late_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -959,6 +970,7 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
|
|||
(void) mtx_init(&screen->cs_mutex, mtx_plain);
|
||||
(void) mtx_init(&screen->rast_mutex, mtx_plain);
|
||||
|
||||
(void) mtx_init(&screen->late_mutex, mtx_plain);
|
||||
if (!llvmpipe_screen_late_init(screen)) {
|
||||
lp_jit_screen_cleanup(screen);
|
||||
FREE(screen);
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@ struct llvmpipe_screen
|
|||
bool use_tgsi;
|
||||
bool allow_cl;
|
||||
|
||||
mtx_t late_mutex;
|
||||
bool late_init_done;
|
||||
|
||||
struct disk_cache *disk_shader_cache;
|
||||
unsigned num_disk_shader_cache_hits;
|
||||
unsigned num_disk_shader_cache_misses;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue