Mesa (main): gallium/dri2: Make dri_init_options just init DRI options.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 3 00:25:18 UTC 2021


Module: Mesa
Branch: main
Commit: fdf9ebf317da2607f9d4315998439f4713cad0cb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdf9ebf317da2607f9d4315998439f4713cad0cb

Author: Emma Anholt <emma at anholt.net>
Date:   Fri Jul 30 14:35:53 2021 -0700

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 <emil.l.velikov at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12135>

---

 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)



More information about the mesa-commit mailing list