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)