+static const struct drm_driver_descriptor *
+get_driver_descriptor(const char *driver_name, struct util_dl_library **plib)
+{
+#ifdef GALLIUM_STATIC_TARGETS
+ for (int i = 0; i < ARRAY_SIZE(driver_descriptors); i++) {
+ if (strcmp(driver_descriptors[i].driver_name, driver_name) == 0)
+ return &driver_descriptors[i];
+ }
+#else
+ *plib = pipe_loader_find_module(driver_name, PIPE_SEARCH_DIR);
+ if (!*plib)
+ return NULL;
+
+ const struct drm_driver_descriptor *dd =
+ (const struct drm_driver_descriptor *)
+ util_dl_get_proc_address(*plib, "driver_descriptor");
+
+ /* sanity check on the driver name */
+ if (dd && strcmp(dd->driver_name, driver_name) == 0)
+ return dd;
+#endif
+
+ return NULL;
+}
+