summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/egl/kms/native_kms.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers/egl/kms/native_kms.c')
-rw-r--r--src/gallium/state_trackers/egl/kms/native_kms.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/gallium/state_trackers/egl/kms/native_kms.c b/src/gallium/state_trackers/egl/kms/native_kms.c
index 09a08f32b3..8ee80996a4 100644
--- a/src/gallium/state_trackers/egl/kms/native_kms.c
+++ b/src/gallium/state_trackers/egl/kms/native_kms.c
@@ -768,37 +768,40 @@ kms_create_display(int fd, struct native_event_handler *event_handler)
return &kdpy->base;
}
-struct native_probe *
-native_create_probe(void *dpy)
+static struct native_display *
+native_create_display(void *dpy, struct native_event_handler *event_handler)
{
- return NULL;
-}
+ struct native_display *ndpy;
+ int fd;
-enum native_probe_result
-native_get_probe_result(struct native_probe *nprobe)
-{
- return NATIVE_PROBE_UNKNOWN;
+ /* well, this makes fd 0 being ignored */
+ fd = (dpy) ? (int) pointer_to_intptr(dpy) : -1;
+ ndpy = kms_create_display(fd, event_handler);
+
+ return ndpy;
}
-const char *
-native_get_name(void)
+static void
+kms_init_platform(struct native_platform *nplat)
{
static char kms_name[32];
+ if (nplat->name)
+ return;
util_snprintf(kms_name, sizeof(kms_name), "KMS/%s", driver_descriptor.name);
- return kms_name;
+ nplat->name = kms_name;
+ nplat->create_probe = NULL;
+ nplat->get_probe_result = NULL;
+ nplat->create_display = native_create_display;
}
-struct native_display *
-native_create_display(void *dpy, struct native_event_handler *event_handler)
-{
- struct native_display *ndpy = NULL;
- int fd;
-
- fd = (dpy != EGL_DEFAULT_DISPLAY) ? (int) pointer_to_intptr((void *) dpy) : -1;
- ndpy = kms_create_display(fd, event_handler);
+static struct native_platform kms_platform;
- return ndpy;
+const struct native_platform *
+native_get_platform(void)
+{
+ kms_init_platform(&kms_platform);
+ return &kms_platform;
}