android: make DRM optional
authorChia-I Wu <olv@lunarg.com>
Thu, 25 Aug 2011 13:36:19 +0000 (21:36 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Sat, 27 Aug 2011 10:02:11 +0000 (18:02 +0800)
For BOARD_GPU_DRIVERS=swrast build, DRM is not needed.

Android.mk
src/gallium/state_trackers/egl/Android.mk
src/gallium/state_trackers/egl/android/native_android.cpp
src/gallium/targets/egl-static/Android.mk
src/gallium/targets/egl-static/egl.c

index 9dbb3c9a3d88c1b3d9619c1a12510f3c95be606e..ed68aec65ca1a6d3048759c9a96df98ea6472ba4 100644 (file)
@@ -38,7 +38,7 @@ DRM_GRALLOC_TOP := hardware/drm_gralloc
 classic_drivers :=
 gallium_drivers := swrast i915g nouveau r300g r600g vmwgfx
 
-MESA_GPU_DRIVERS := $(BOARD_GPU_DRIVERS)
+MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS))
 
 # warn about invalid drivers
 invalid_drivers := $(filter-out \
@@ -97,12 +97,16 @@ LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_egl
 
 LOCAL_SHARED_LIBRARIES := \
        libglapi \
-       libdrm \
        libdl \
        libhardware \
        liblog \
        libcutils
 
+# hardware drivers require DRM
+ifneq ($(MESA_GPU_DRIVERS),swrast)
+LOCAL_SHARED_LIBRARIES += libdrm
+endif
+
 ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
 
 gallium_DRIVERS :=
index e459bd4655ebbd6abccfe8a66484d8f88b6c85cf..13b013babc401ee8f56ebe23cc10714e7e75e55a 100644 (file)
@@ -45,8 +45,14 @@ LOCAL_CFLAGS := -DHAVE_ANDROID_BACKEND
 LOCAL_C_INCLUDES := \
        $(GALLIUM_TOP)/state_trackers/egl \
        $(GALLIUM_TOP)/winsys/sw \
-       $(MESA_TOP)/src/egl/main \
-       $(DRM_GRALLOC_TOP)
+       $(MESA_TOP)/src/egl/main
+
+# swrast only
+ifeq ($(MESA_GPU_DRIVERS),swrast)
+LOCAL_CFLAGS += -DANDROID_BACKEND_NO_DRM
+else
+LOCAL_C_INCLUDES += $(DRM_GRALLOC_TOP)
+endif
 
 LOCAL_MODULE := libmesa_st_egl
 
index 211d6a2aeefb4f639eacba3f8cf13e1cc7525f3a..338427d6925bbf14d2fa3b88ec10c90ea9fb3128 100644 (file)
@@ -136,6 +136,8 @@ get_pipe_format(int native)
    return fmt;
 }
 
+#ifndef ANDROID_BACKEND_NO_DRM
+
 #include <gralloc_drm_handle.h>
 static int
 get_handle_name(buffer_handle_t handle)
@@ -148,6 +150,16 @@ get_handle_name(buffer_handle_t handle)
    return (dh) ? dh->name : 0;
 }
 
+#else
+
+static int
+get_handle_name(buffer_handle_t handle)
+{
+   return 0;
+}
+
+#endif /* ANDROID_BACKEND_NO_DRM */
+
 /**
  * Import an android_native_buffer_t allocated by the server.
  */
@@ -581,6 +593,7 @@ android_display_init_drm(struct native_display *ndpy)
    const hw_module_t *mod;
    int fd, err;
 
+#ifndef ANDROID_BACKEND_NO_DRM
    /* get the authorized fd from gralloc */
    err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &mod);
    if (!err) {
@@ -594,6 +607,7 @@ android_display_init_drm(struct native_display *ndpy)
       adpy->base.screen =
          adpy->event_handler->new_drm_screen(&adpy->base, NULL, fd);
    }
+#endif
 
    if (adpy->base.screen) {
       LOGI("using DRM screen");
index 8bdbeda61f4a89973f779d2b40c6704906051556..21b6dc27921beb674d339dc4b88b24f46c435a3a 100644 (file)
@@ -39,13 +39,20 @@ LOCAL_C_INCLUDES := \
        $(GALLIUM_TOP)/state_trackers/vega \
        $(GALLIUM_TOP)/state_trackers/egl \
        $(MESA_TOP)/src/egl/main \
-       $(MESA_TOP)/src/mesa \
-       $(DRM_TOP)/include/drm \
-       $(DRM_TOP)
+       $(MESA_TOP)/src/mesa
 
 # swrast
 LOCAL_CFLAGS += -DGALLIUM_SOFTPIPE
 
+# swrast only
+ifeq ($(MESA_GPU_DRIVERS),swrast)
+LOCAL_CFLAGS += -D_EGL_NO_DRM
+else
+LOCAL_C_INCLUDES += \
+       $(DRM_TOP)/include/drm \
+       $(DRM_TOP)
+endif
+
 ifneq ($(filter i915g, $(MESA_GPU_DRIVERS)),)
 LOCAL_CFLAGS += -D_EGL_PIPE_I915=1
 endif
index 5a66e3c34c342ee577c2361f409bd4b0193be09b..adf1229caba7a1a0495b5b301e1e132a65d831ea 100644 (file)
@@ -109,7 +109,7 @@ out:
    return (*chip_id >= 0);
 }
 
-#elif defined(PIPE_OS_ANDROID)
+#elif defined(PIPE_OS_ANDROID) && !defined(_EGL_NO_DRM)
 
 #include <xf86drm.h>
 /* for i915 */