add new va_DisplayContextGetDriverName, remove 'x11/XX' include folder name 67/567/1 PO-ww19.3-new
authorRen Zhaohan <zhaohan.ren@intel.com>
Wed, 5 May 2010 08:19:39 +0000 (16:19 +0800)
committerRen Zhaohan <zhaohan.ren@intel.com>
Wed, 5 May 2010 08:19:39 +0000 (16:19 +0800)
va/Android.mk
va/android/va_android.c
va/va_android.h
va/va_backend.h

index eb9967d..5eb8e6d 100644 (file)
@@ -17,6 +17,7 @@ LOCAL_CFLAGS += -DHAVE_CONFIG_H \
 LOCAL_C_INCLUDES += \
    $(TOPDIR)kernel/include \
    $(TARGET_OUT_HEADERS)/libva \
+   $(LOCAL_PATH)/x11 \
    $(TOPDIR)kernel/include/drm
 
 LOCAL_COPY_HEADERS_TO := libva/va
index 5ccf998..39b1876 100644 (file)
@@ -26,7 +26,7 @@
 #include "va.h"
 #include "va_backend.h"
 #include "va_android.h"
-#include "x11/va_dricommon.h" /* needs some helper functions from this file */
+#include "va_dricommon.h" /* needs some helper functions from this file */
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <fcntl.h>
 #include <dlfcn.h>
 #include <errno.h>
+#ifndef ANDROID
+#include <libudev.h>
+#include "drm_test.h"
+#endif
 
 #define CHECK_SYMBOL(func) { if (!func) printf("func %s not found\n", #func); return VA_STATUS_ERROR_UNKNOWN; }
 #define DEVICE_NAME "/dev/dri/card0"
@@ -110,7 +114,7 @@ static void va_DisplayContextDestroy (
     free(pDisplayContext);
 }
 
-
+#ifdef ANDROID
 static VAStatus va_DisplayContextGetDriverName (
     VADisplayContextP pDisplayContext,
     char **driver_name
@@ -154,7 +158,51 @@ static VAStatus va_DisplayContextGetDriverName (
     
     return VA_STATUS_SUCCESS;
 }
+#else
+static VAStatus va_DisplayContextGetDriverName (
+    VADisplayContextP pDisplayContext,
+    char **driver_name
+)
+{
+    VADriverContextP ctx = pDisplayContext->pDriverContext;
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    char *driver_name_env;
+
+    struct {
+        unsigned int vendor_id;
+        unsigned int device_id;
+        char driver_name[64];
+    } devices[] = {
+        { 0x8086, 0x4100, "pvr" },
+    };
 
+    memset(dri_state, 0, sizeof(*dri_state));
+    dri_state->fd = drm_open_any_master();
+    if (dri_state->fd < 0) {
+        fprintf(stderr, "open DRM device by udev failed, try /dev/dri/card0\n");
+        dri_state->fd = open("/dev/dri/card0", O_RDWR);
+    }
+
+    if (dri_state->fd < 0) {
+        fprintf(stderr,"can't open DRM devices\n");
+        return VA_STATUS_ERROR_UNKNOWN;
+    }
+
+    if ((driver_name_env = getenv("LIBVA_DRIVER_NAME")) != NULL
+        && geteuid() == getuid())
+    {
+        /* don't allow setuid apps to use LIBVA_DRIVER_NAME */
+        *driver_name = strdup(driver_name_env);
+        return VA_STATUS_SUCCESS;
+    } else /* TBD: other vendor driver names */
+        *driver_name = strdup(devices[0].driver_name);
+
+
+    dri_state->driConnectedFlag = VA_DUMMY;
+
+    return VA_STATUS_SUCCESS;
+}
+#endif
 
 VADisplay vaGetDisplay (
     void *native_dpy /* implementation specific */
@@ -245,7 +293,6 @@ VAStatus vaPutSurface (
 
   CHECK_DISPLAY(dpy);
   ctx = CTX(dpy);
-
   return ctx->vtable.vaPutSurface( ctx, surface, (void *)draw, srcx, srcy, srcw, srch, 
                                    destx, desty, destw, desth,
                                    cliprects, number_cliprects, flags );
index 3e050b8..43b2730 100644 (file)
@@ -5,7 +5,6 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-
 /*
  * Returns a suitable VADisplay for VA API
  */
@@ -16,7 +15,7 @@ VADisplay vaGetDisplay (
 #if ANDROID    
 //#include <ui/Surface.h>
 //class Surface;
-    
+
 /*
  * Output rendering
  * Following is the rendering interface for X windows, 
index 54db430..f457cc4 100644 (file)
@@ -185,7 +185,11 @@ struct VADriverVTable
        VAStatus (*vaPutSurface) (
                VADriverContextP ctx,
                VASurfaceID surface,
-               void * draw, /* Drawable of window system */
+#ifdef ANDROID
+               Surface* draw, /* Drawable of window system */
+#else
+               Drawable draw,
+#endif
                short srcx,
                short srcy,
                unsigned short srcw,
@@ -199,25 +203,6 @@ struct VADriverVTable
                unsigned int flags /* de-interlacing flags */
        );
 
-       VAStatus (*vaPutSurfaceBuf) (
-               VADriverContextP ctx,
-                VASurfaceID surface,
-                Drawable draw, /* X Drawable */
-                unsigned char* data,
-                int* data_len,
-                short srcx,
-                short srcy,
-                unsigned short srcw,
-                unsigned short srch,
-                short destx,
-                short desty,
-                unsigned short destw,
-                unsigned short desth,
-               VARectangle *cliprects, /* client supplied clip list */
-               unsigned int number_cliprects, /* number of clip rects in the clip list */
-                unsigned int flags /* de-interlacing flags */
-       );
-
        VAStatus (*vaQueryImageFormats) (
                VADriverContextP ctx,
                VAImageFormat *format_list,        /* out */