Mesa (master): st/egl: Make KMS support optional in KMS backend.

Chia-I Wu olv at kemper.freedesktop.org
Thu Aug 26 08:40:14 UTC 2010


Module: Mesa
Branch: master
Commit: c5279fd795eb4a0445285d5a9815de68b0c77626
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c5279fd795eb4a0445285d5a9815de68b0c77626

Author: Chia-I Wu <olv at lunarg.com>
Date:   Thu Aug 26 00:38:59 2010 +0800

st/egl: Make KMS support optional in KMS backend.

It should be called DRM backend now.

---

 src/gallium/state_trackers/egl/kms/native_kms.c |   46 ++++++++++++-----------
 1 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/src/gallium/state_trackers/egl/kms/native_kms.c b/src/gallium/state_trackers/egl/kms/native_kms.c
index 0a69919..208f733 100644
--- a/src/gallium/state_trackers/egl/kms/native_kms.c
+++ b/src/gallium/state_trackers/egl/kms/native_kms.c
@@ -588,7 +588,9 @@ kms_display_get_configs(struct native_display *ndpy, int *num_configs)
 
       nconf->color_format = format;
 
-      nconf->scanout_bit = TRUE;
+      /* support KMS */
+      if (kdpy->resources)
+         nconf->scanout_bit = TRUE;
    }
 
    configs = MALLOC(sizeof(*configs));
@@ -746,32 +748,32 @@ kms_create_display(int fd, struct native_event_handler *event_handler,
       return NULL;
    }
 
+   kdpy->base.destroy = kms_display_destroy;
+   kdpy->base.get_param = kms_display_get_param;
+   kdpy->base.get_configs = kms_display_get_configs;
+
    /* resources are fixed, unlike crtc, connector, or encoder */
    kdpy->resources = drmModeGetResources(kdpy->fd);
-   if (!kdpy->resources) {
-      kms_display_destroy(&kdpy->base);
-      return NULL;
-   }
+   if (kdpy->resources) {
+      kdpy->saved_crtcs =
+         CALLOC(kdpy->resources->count_crtcs, sizeof(*kdpy->saved_crtcs));
+      if (!kdpy->saved_crtcs) {
+         kms_display_destroy(&kdpy->base);
+         return NULL;
+      }
 
-   kdpy->saved_crtcs =
-      CALLOC(kdpy->resources->count_crtcs, sizeof(*kdpy->saved_crtcs));
-   if (!kdpy->saved_crtcs) {
-      kms_display_destroy(&kdpy->base);
-      return NULL;
-   }
+      kdpy->shown_surfaces =
+         CALLOC(kdpy->resources->count_crtcs, sizeof(*kdpy->shown_surfaces));
+      if (!kdpy->shown_surfaces) {
+         kms_display_destroy(&kdpy->base);
+         return NULL;
+      }
 
-   kdpy->shown_surfaces =
-      CALLOC(kdpy->resources->count_crtcs, sizeof(*kdpy->shown_surfaces));
-   if (!kdpy->shown_surfaces) {
-      kms_display_destroy(&kdpy->base);
-      return NULL;
+      kdpy->base.modeset = &kms_display_modeset;
+   }
+   else {
+      _eglLog(_EGL_DEBUG, "Failed to get KMS resources.  Disable modeset.");
    }
-
-   kdpy->base.destroy = kms_display_destroy;
-   kdpy->base.get_param = kms_display_get_param;
-   kdpy->base.get_configs = kms_display_get_configs;
-
-   kdpy->base.modeset = &kms_display_modeset;
 
    return &kdpy->base;
 }




More information about the mesa-commit mailing list