frontends/dri: always init opencl_func_mutex in InitScreen hooks

this otherwise leads to a mismatch where some types of screen may have
the mutex initialized while others don't, in which case dri_release_screen()
will attempt to destroy an uninitialized mutex

cc: mesa-stable

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29021>
(cherry picked from commit bc15c95c7a)
This commit is contained in:
Mike Blumenkrantz 2024-05-02 08:15:56 -04:00 committed by Eric Engestrom
parent b397496ee8
commit 1b9927bc48
3 changed files with 5 additions and 1 deletions

View file

@ -414,7 +414,7 @@
"description": "frontends/dri: always init opencl_func_mutex in InitScreen hooks",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -582,6 +582,8 @@ drisw_init_screen(struct dri_screen *screen, bool implicit)
struct pipe_screen *pscreen = NULL;
const struct drisw_loader_funcs *lf = &drisw_lf;
(void) mtx_init(&screen->opencl_func_mutex, mtx_plain);
screen->swrast_no_present = debug_get_option_swrast_no_present();
if (loader->base.version >= 4) {

View file

@ -116,6 +116,8 @@ kopper_init_screen(struct dri_screen *screen, bool implicit)
const __DRIconfig **configs;
struct pipe_screen *pscreen = NULL;
(void) mtx_init(&screen->opencl_func_mutex, mtx_plain);
if (!screen->kopper_loader) {
fprintf(stderr, "mesa: Kopper interface not found!\n"
" Ensure the versions of %s built with this version of Zink are\n"