gallium: Incorporate the device release in dri_destroy_screen_helper
The code to release the device was actually always used after the call to this function. Signed-off-by: Corentin Noël <corentin.noel@collabora.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23054>
This commit is contained in:
@@ -2291,7 +2291,7 @@ dri2_init_screen(struct dri_screen *screen)
|
||||
}
|
||||
|
||||
if (!pscreen)
|
||||
goto release_pipe;
|
||||
goto fail;
|
||||
|
||||
screen->throttle = pscreen->get_param(pscreen, PIPE_CAP_THROTTLE);
|
||||
|
||||
@@ -2302,7 +2302,7 @@ dri2_init_screen(struct dri_screen *screen)
|
||||
|
||||
configs = dri_init_screen_helper(screen, pscreen);
|
||||
if (!configs)
|
||||
goto destroy_screen;
|
||||
goto fail;
|
||||
|
||||
screen->can_share_buffer = true;
|
||||
screen->auto_fake_front = dri_with_format(screen);
|
||||
@@ -2323,13 +2323,9 @@ dri2_init_screen(struct dri_screen *screen)
|
||||
|
||||
return configs;
|
||||
|
||||
destroy_screen:
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
|
||||
release_pipe:
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -2353,13 +2349,13 @@ dri_swrast_kms_init_screen(struct dri_screen *screen)
|
||||
#endif
|
||||
|
||||
if (!pscreen)
|
||||
goto release_pipe;
|
||||
goto fail;
|
||||
|
||||
dri2_init_screen_extensions(screen, pscreen, true);
|
||||
|
||||
configs = dri_init_screen_helper(screen, pscreen);
|
||||
if (!configs)
|
||||
goto destroy_screen;
|
||||
goto fail;
|
||||
|
||||
screen->can_share_buffer = false;
|
||||
screen->auto_fake_front = dri_with_format(screen);
|
||||
@@ -2380,13 +2376,9 @@ dri_swrast_kms_init_screen(struct dri_screen *screen)
|
||||
|
||||
return configs;
|
||||
|
||||
destroy_screen:
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
|
||||
release_pipe:
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
|
||||
#endif // GALLIUM_SOFTPIPE
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -776,6 +776,11 @@ dri_destroy_screen_helper(struct dri_screen * screen)
|
||||
if (screen->base.screen)
|
||||
screen->base.screen->destroy(screen->base.screen);
|
||||
|
||||
if (screen->dev) {
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
screen->dev = NULL;
|
||||
}
|
||||
|
||||
mtx_destroy(&screen->opencl_func_mutex);
|
||||
}
|
||||
|
||||
@@ -784,8 +789,6 @@ dri_destroy_screen(struct dri_screen *screen)
|
||||
{
|
||||
dri_destroy_screen_helper(screen);
|
||||
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
|
||||
free(screen->options.force_gl_vendor);
|
||||
free(screen->options.force_gl_renderer);
|
||||
free(screen->options.mesa_extension_override);
|
||||
|
||||
@@ -594,8 +594,6 @@ drisw_init_screen(struct dri_screen *screen)
|
||||
return configs;
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -169,8 +169,6 @@ kopper_init_screen(struct dri_screen *screen)
|
||||
return configs;
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user