egl/android: chose node type based on swrast and preprocessor flags
authorGurchetan Singh <gurchetansingh@chromium.org>
Wed, 27 Mar 2019 02:20:13 +0000 (19:20 -0700)
committerGurchetan Singh <gurchetansingh@chromium.org>
Wed, 27 Mar 2019 17:26:21 +0000 (17:26 +0000)
kms_swrast can work with primary nodes out of the box, but also
with rendernodes if the build environment specifies the
EGL_FORCE_RENDERNODE flag.

Suggested-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
src/egl/drivers/dri2/platform_android.c

index e25a6f73ed829a356fa155e26036f4034c740739..e9ea9e6002bef62f7cb51be68bf5d92828398fb1 100644 (file)
@@ -1480,6 +1480,12 @@ droid_open_device(_EGLDisplay *disp, bool swrast)
    char *vendor_name = NULL;
    char vendor_buf[PROPERTY_VALUE_MAX];
 
+#ifdef EGL_FORCE_RENDERNODE
+   const unsigned node_type = DRM_NODE_RENDER;
+#else
+   const unsigned node_type = swrast ? DRM_NODE_PRIMARY : DRM_NODE_RENDER;
+#endif
+
    if (property_get("drm.gpu.vendor_name", vendor_buf, NULL) > 0)
       vendor_name = vendor_buf;
 
@@ -1490,13 +1496,13 @@ droid_open_device(_EGLDisplay *disp, bool swrast)
    for (int i = 0; i < num_devices; i++) {
       device = devices[i];
 
-      if (!(device->available_nodes & (1 << DRM_NODE_RENDER)))
+      if (!(device->available_nodes & (1 << node_type)))
          continue;
 
-      dri2_dpy->fd = loader_open_device(device->nodes[DRM_NODE_RENDER]);
+      dri2_dpy->fd = loader_open_device(device->nodes[node_type]);
       if (dri2_dpy->fd < 0) {
          _eglLog(_EGL_WARNING, "%s() Failed to open DRM device %s",
-                 __func__, device->nodes[DRM_NODE_RENDER]);
+                 __func__, device->nodes[node_type]);
          continue;
       }