OSDN Git Service

Added Support for 64bit RGB format
[android-x86/external-minigbm.git] / i915_private.c
index 8196586..b1921c6 100644 (file)
 
 static const uint32_t private_linear_source_formats[] = { DRM_FORMAT_R16,    DRM_FORMAT_NV16,
                                                          DRM_FORMAT_YUV420, DRM_FORMAT_YUV422,
-                                                         DRM_FORMAT_YUV444, DRM_FORMAT_NV21 };
+                                                         DRM_FORMAT_YUV444, DRM_FORMAT_NV21,
+                                                         DRM_FORMAT_P010, DRM_FORMAT_RGB888, DRM_FORMAT_BGR888,
+                                                         DRM_FORMAT_XRGB161616, DRM_FORMAT_XBGR161616 };
 
-static const uint32_t private_source_formats[] = { DRM_FORMAT_NV12_Y_TILED_INTEL };
+static const uint32_t private_source_formats[] = { DRM_FORMAT_P010, DRM_FORMAT_NV12_Y_TILED_INTEL };
 
 #if !defined(DRM_CAP_CURSOR_WIDTH)
 #define DRM_CAP_CURSOR_WIDTH 0x8
@@ -82,7 +84,13 @@ int i915_private_add_combinations(struct driver *drv)
        drv_modify_combination(drv, DRM_FORMAT_NV12, &metadata,
                               BO_USE_RENDERING | BO_USE_TEXTURE | BO_USE_CAMERA_MASK);
        drv_modify_combination(drv, DRM_FORMAT_YUYV, &metadata,
-                              BO_USE_TEXTURE | BO_USE_CAMERA_MASK);
+                              BO_USE_TEXTURE | BO_USE_CAMERA_MASK | BO_USE_RENDERING);
+       drv_modify_combination(drv, DRM_FORMAT_VYUY, &metadata,
+                              BO_USE_TEXTURE | BO_USE_CAMERA_MASK | BO_USE_RENDERING);
+       drv_modify_combination(drv, DRM_FORMAT_UYVY, &metadata,
+                              BO_USE_TEXTURE | BO_USE_CAMERA_MASK | BO_USE_RENDERING);
+       drv_modify_combination(drv, DRM_FORMAT_YVYU, &metadata,
+                              BO_USE_TEXTURE | BO_USE_CAMERA_MASK | BO_USE_RENDERING);
        drv_modify_combination(drv, DRM_FORMAT_YVU420_ANDROID, &metadata,
                               BO_USE_TEXTURE | BO_USE_CAMERA_MASK);
 
@@ -134,6 +142,8 @@ uint32_t i915_private_bpp_from_format(uint32_t format, size_t plane)
        switch (format) {
        case DRM_FORMAT_NV12_Y_TILED_INTEL:
                return (plane == 0) ? 8 : 4;
+       case DRM_FORMAT_P010:
+               return (plane == 0) ? 16 : 8;
        case DRM_FORMAT_YUV420:
        case DRM_FORMAT_YUV422:
        case DRM_FORMAT_YUV444:
@@ -141,6 +151,9 @@ uint32_t i915_private_bpp_from_format(uint32_t format, size_t plane)
                return 8;
        case DRM_FORMAT_R16:
                return 16;
+        case DRM_FORMAT_XRGB161616:
+        case DRM_FORMAT_XBGR161616:
+                return 64;
        }
 
        fprintf(stderr, "drv: UNKNOWN FORMAT %d\n", format);
@@ -153,6 +166,7 @@ void i915_private_vertical_subsampling_from_format(uint32_t *vertical_subsamplin
        switch (format) {
        case DRM_FORMAT_NV12_Y_TILED_INTEL:
        case DRM_FORMAT_YUV420:
+       case DRM_FORMAT_P010:
                *vertical_subsampling = (plane == 0) ? 1 : 2;
                break;
        default:
@@ -164,9 +178,12 @@ size_t i915_private_num_planes_from_format(uint32_t format)
 {
        switch (format) {
        case DRM_FORMAT_R16:
+        case DRM_FORMAT_XRGB161616:
+        case DRM_FORMAT_XBGR161616:
                return 1;
        case DRM_FORMAT_NV12_Y_TILED_INTEL:
        case DRM_FORMAT_NV16:
+       case DRM_FORMAT_P010:
                return 2;
        case DRM_FORMAT_YUV420:
        case DRM_FORMAT_YUV422: