#ifndef LOADER_H
#define LOADER_H
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct __DRIextensionRec;
+
/* Helpers to figure out driver and device name, eg. from pci-id, etc. */
-#define _LOADER_DRI (1 << 0)
-#define _LOADER_GALLIUM (1 << 1)
+int
+loader_open_device(const char *);
int
+loader_open_render_node(const char *name);
+
+bool
loader_get_pci_id_for_fd(int fd, int *vendor_id, int *chip_id);
char *
-loader_get_driver_for_fd(int fd, unsigned driver_types);
+loader_get_driver_for_fd(int fd);
+
+const struct __DRIextensionRec **
+loader_open_driver(const char *driver_name,
+ void **out_driver_handle,
+ const char **search_path_vars);
char *
loader_get_device_name_for_fd(int fd);
*/
int
-loader_get_user_preferred_fd(int default_fd, int *different_device);
+loader_get_user_preferred_fd(int default_fd, bool *different_device);
/* for logging.. keep this aligned with egllog.h so we can just use
* _eglLog directly.
#define _LOADER_INFO 2 /* just useful info */
#define _LOADER_DEBUG 3 /* useful info for debugging */
+typedef void loader_logger(int level, const char *fmt, ...);
void
-loader_set_logger(void (*logger)(int level, const char *fmt, ...));
+loader_set_logger(loader_logger *logger);
+
+char *
+loader_get_extensions_name(const char *driver_name);
+
+#ifdef __cplusplus
+}
+#endif
#endif /* LOADER_H */