From 4d25ae350f75c36aa09f815966ec4360d175bf03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Wed, 24 May 2023 16:32:26 +0200 Subject: [PATCH] gallium: Only call dri_init_options when the screen is actually created MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avoid calling this function on screen creation failure as we will discard its result right after. Signed-off-by: Corentin Noël Reviewed-by: Erik Faye-Lund Reviewed-by: Emil Velikov Part-of: --- src/gallium/frontends/dri/dri2.c | 10 ++++------ src/gallium/frontends/dri/drisw.c | 6 +++--- src/gallium/frontends/dri/kopper.c | 6 +++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c index 10d997e7572..cfba4649503 100644 --- a/src/gallium/frontends/dri/dri2.c +++ b/src/gallium/frontends/dri/dri2.c @@ -2285,14 +2285,13 @@ dri2_init_screen(struct dri_screen *screen) (void) mtx_init(&screen->opencl_func_mutex, mtx_plain); - if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd)) { + if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd)) pscreen = pipe_loader_create_screen(screen->dev); - dri_init_options(screen); - } if (!pscreen) goto fail; + dri_init_options(screen); screen->throttle = pscreen->get_param(pscreen, PIPE_CAP_THROTTLE); dri2_init_screen_extensions(screen, pscreen, false); @@ -2342,15 +2341,14 @@ dri_swrast_kms_init_screen(struct dri_screen *screen) struct pipe_screen *pscreen = NULL; #ifdef HAVE_DRISW_KMS - if (pipe_loader_sw_probe_kms(&screen->dev, screen->fd)) { + if (pipe_loader_sw_probe_kms(&screen->dev, screen->fd)) pscreen = pipe_loader_create_screen(screen->dev); - dri_init_options(screen); - } #endif if (!pscreen) goto fail; + dri_init_options(screen); dri2_init_screen_extensions(screen, pscreen, true); configs = dri_init_screen_helper(screen, pscreen); diff --git a/src/gallium/frontends/dri/drisw.c b/src/gallium/frontends/dri/drisw.c index 203e873268b..cdca90e8bc1 100644 --- a/src/gallium/frontends/dri/drisw.c +++ b/src/gallium/frontends/dri/drisw.c @@ -560,14 +560,14 @@ drisw_init_screen(struct dri_screen *screen) #endif if (!success) success = pipe_loader_sw_probe_dri(&screen->dev, lf); - if (success) { + + if (success) pscreen = pipe_loader_create_screen(screen->dev); - dri_init_options(screen); - } if (!pscreen) goto fail; + dri_init_options(screen); configs = dri_init_screen_helper(screen, pscreen); if (!configs) goto fail; diff --git a/src/gallium/frontends/dri/kopper.c b/src/gallium/frontends/dri/kopper.c index b1121cd4faa..2fc16034146 100644 --- a/src/gallium/frontends/dri/kopper.c +++ b/src/gallium/frontends/dri/kopper.c @@ -130,14 +130,14 @@ kopper_init_screen(struct dri_screen *screen) success = pipe_loader_drm_probe_fd(&screen->dev, screen->fd); else success = pipe_loader_vk_probe_dri(&screen->dev, NULL); - if (success) { + + if (success) pscreen = pipe_loader_create_screen(screen->dev); - dri_init_options(screen); - } if (!pscreen) goto fail; + dri_init_options(screen); screen->unwrapped_screen = trace_screen_unwrap(pscreen); configs = dri_init_screen_helper(screen, pscreen);