From fdf9ebf317da2607f9d4315998439f4713cad0cb Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 30 Jul 2021 14:35:53 -0700 Subject: [PATCH] gallium/dri2: Make dri_init_options just init DRI options. pipe_loader_create_screen() sets up the driconf anyway, so we can just call this after that. Reviewed-by: Emil Velikov Part-of: --- src/gallium/auxiliary/pipe-loader/pipe_loader.c | 9 ++++++++- src/gallium/auxiliary/pipe-loader/pipe_loader.h | 10 +++++----- src/gallium/frontends/dri/dri2.c | 5 ++--- src/gallium/frontends/dri/dri_screen.c | 12 ++---------- src/gallium/frontends/dri/drisw.c | 3 +-- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.c b/src/gallium/auxiliary/pipe-loader/pipe_loader.c index 5ec9355b70c..1c46cb429e6 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.c @@ -105,7 +105,14 @@ merge_driconf(const driOptionDescription *driver_driconf, unsigned driver_count, return merged; } -void +/** + * Ensure that dev->option_cache is initialized appropriately for the driver. + * + * This function can be called multiple times. + * + * \param dev Device for which options should be loaded. + */ +static void pipe_loader_load_options(struct pipe_loader_device *dev) { if (dev->option_info.info) diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.h b/src/gallium/auxiliary/pipe-loader/pipe_loader.h index 5cd1b994213..8c532e60157 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.h +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.h @@ -100,14 +100,14 @@ struct pipe_screen * pipe_loader_create_screen(struct pipe_loader_device *dev); /** - * Ensure that dev->option_cache is initialized appropriately for the driver. + * Ensures that the driconf option cache has been parsed for the driver. * - * This function can be called multiple times. - * - * \param dev Device for which options should be loaded. + * Drivers may parse during screen creation, but for those that don't (probably + * due to not having any driver-specific driconf options), this can be used to + * finish the parsing so that general driconf options can be queried. */ void -pipe_loader_load_options(struct pipe_loader_device *dev); +pipe_loader_config_options(struct pipe_loader_device *dev); /** * Get the driinfo XML string used by the given driver. diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c index ebc18a73c86..6dcbd3365c2 100644 --- a/src/gallium/frontends/dri/dri2.c +++ b/src/gallium/frontends/dri/dri2.c @@ -2330,9 +2330,8 @@ dri2_init_screen(__DRIscreen * sPriv) sPriv->driverPrivate = (void *)screen; if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd)) { - dri_init_options(screen); - pscreen = pipe_loader_create_screen(screen->dev); + dri_init_options(screen); } if (!pscreen) @@ -2387,8 +2386,8 @@ dri_kms_init_screen(__DRIscreen * sPriv) sPriv->driverPrivate = (void *)screen; if (pipe_loader_sw_probe_kms(&screen->dev, screen->fd)) { - dri_init_options(screen); pscreen = pipe_loader_create_screen(screen->dev); + dri_init_options(screen); } if (!pscreen) diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c index b565a1fe8ec..c53501429b2 100644 --- a/src/gallium/frontends/dri/dri_screen.c +++ b/src/gallium/frontends/dri/dri_screen.c @@ -56,8 +56,8 @@ const __DRIconfigOptionsExtension gallium_config_options = { #define false 0 -static void -dri_fill_st_options(struct dri_screen *screen) +void +dri_init_options(struct dri_screen *screen) { struct st_config_options *options = &screen->options; const struct driOptionCache *optionCache = &screen->dev->option_cache; @@ -583,14 +583,6 @@ dri_set_background_context(struct st_context_iface *st, hud_add_queue_for_monitoring(ctx->hud, queue_info); } -void -dri_init_options(struct dri_screen *screen) -{ - pipe_loader_load_options(screen->dev); - - dri_fill_st_options(screen); -} - const __DRIconfig ** dri_init_screen_helper(struct dri_screen *screen, struct pipe_screen *pscreen) diff --git a/src/gallium/frontends/dri/drisw.c b/src/gallium/frontends/dri/drisw.c index bf80d9fc268..5f5d475c45f 100644 --- a/src/gallium/frontends/dri/drisw.c +++ b/src/gallium/frontends/dri/drisw.c @@ -522,9 +522,8 @@ drisw_init_screen(__DRIscreen * sPriv) } if (pipe_loader_sw_probe_dri(&screen->dev, lf)) { - dri_init_options(screen); - pscreen = pipe_loader_create_screen(screen->dev); + dri_init_options(screen); } if (!pscreen)