PKG_CHECK_MODULES(EGL_COMPOSITOR, [eagle libpng cairo gdk-pixbuf-2.0 libudev])
PKG_CHECK_MODULES(GL_COMPOSITOR, [gl x11])
-PKG_CHECK_MODULES(CLIENT, [eagle cairo glib-2.0])
+PKG_CHECK_MODULES(CLIENT, [eagle cairo glib-2.0 libudev])
if test $CC = gcc; then
GCC_CFLAGS="-Wall -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden"
const int x = 200, y = 200, width = 450, height = 500;
EGLint major, minor, count;
EGLConfig configs[64];
+ struct udev *udev;
+ struct udev_device *device;
struct gears *gears;
int i;
+ udev = udev_new();
+ device = udev_device_new_from_syspath(udev, "/sys/class/drm/card0");
+
gears = malloc(sizeof *gears);
memset(gears, 0, sizeof *gears);
gears->wl_display = display;
gears->window = window_create(display, fd, "Wayland Gears",
x, y, width, height);
- gears->display = eglCreateDisplayNative("/dev/dri/card0", "i965");
+ gears->display = eglCreateDisplayNative(device);
if (gears->display == NULL)
die("failed to create egl display\n");
return NULL;
}
-struct dri_driver_entry {
- uint32_t vendor_id;
- uint32_t chip_id;
- const char *driver;
-};
-
-static const struct dri_driver_entry driver_map[] = {
- /* FIXME: We need to extract this table from the dri drivers
- * and store it on disk. For now, map my i965 to i965,
- * anything else intel to i915 and that's that. */
-
- { 0x8086, 0x2a02, "i965" },
- { 0x8086, ~0, "i915" },
- { 0, }
-};
-
-static const char *
-get_driver_for_device(struct udev_device *device)
-{
- struct udev_device *parent;
- const char *pci_id;
- uint32_t vendor_id, chip_id;
- int i;
-
- parent = udev_device_get_parent(device);
- pci_id = get_udev_property(parent, "PCI_ID");
- if (sscanf(pci_id, "%x:%x", &vendor_id, &chip_id) != 2)
- return NULL;
-
- for (i = 0; i < ARRAY_LENGTH(driver_map); i++) {
- if (driver_map[i].vendor_id == vendor_id &&
- (driver_map[i].chip_id == ~0 || driver_map[i].chip_id == chip_id))
- return driver_map[i].driver;
- }
-
- return NULL;
-}
-
static int
init_egl(struct egl_compositor *ec, struct udev_device *device)
{
EGL_NONE
};
- const char *path, *driver;
EGLint major, minor;
- path = udev_device_get_devnode(device);
- driver = get_driver_for_device(device);
- if (driver == NULL) {
- fprintf(stderr, "didn't find driver for %s\n",
- udev_device_get_devpath(device));
- return -1;
- }
-
- ec->display = eglCreateDisplayNative(path, driver);
+ ec->display = eglCreateDisplayNative(device);
if (ec->display == NULL) {
fprintf(stderr, "failed to create display\n");
return -1;