OSDN Git Service

modetest: Add support for all 16/32 bpp RGB formats
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 17 Apr 2013 19:18:03 +0000 (19:18 +0000)
committerJerome Glisse <jglisse@redhat.com>
Thu, 18 Apr 2013 18:52:21 +0000 (14:52 -0400)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
tests/modetest/buffers.c

index 00269e8..b249f1f 100644 (file)
@@ -102,17 +102,44 @@ static const struct format_info format_info[] = {
        /* YUV planar */
        { DRM_FORMAT_YVU420, "YV12", MAKE_YUV_INFO(YUV_YCrCb, 2, 2, 1) },
        /* RGB16 */
+       { DRM_FORMAT_ARGB4444, "AR12", MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 4, 12) },
+       { DRM_FORMAT_XRGB4444, "XR12", MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 0, 0) },
+       { DRM_FORMAT_ABGR4444, "AB12", MAKE_RGB_INFO(4, 0, 4, 4, 4, 8, 4, 12) },
+       { DRM_FORMAT_XBGR4444, "XB12", MAKE_RGB_INFO(4, 0, 4, 4, 4, 8, 0, 0) },
+       { DRM_FORMAT_RGBA4444, "RA12", MAKE_RGB_INFO(4, 12, 4, 8, 4, 4, 4, 0) },
+       { DRM_FORMAT_RGBX4444, "RX12", MAKE_RGB_INFO(4, 12, 4, 8, 4, 4, 0, 0) },
+       { DRM_FORMAT_BGRA4444, "BA12", MAKE_RGB_INFO(4, 4, 4, 8, 4, 12, 4, 0) },
+       { DRM_FORMAT_BGRX4444, "BX12", MAKE_RGB_INFO(4, 4, 4, 8, 4, 12, 0, 0) },
        { DRM_FORMAT_ARGB1555, "AR15", MAKE_RGB_INFO(5, 10, 5, 5, 5, 0, 1, 15) },
        { DRM_FORMAT_XRGB1555, "XR15", MAKE_RGB_INFO(5, 10, 5, 5, 5, 0, 0, 0) },
+       { DRM_FORMAT_ABGR1555, "AB15", MAKE_RGB_INFO(5, 0, 5, 5, 5, 10, 1, 15) },
+       { DRM_FORMAT_XBGR1555, "XB15", MAKE_RGB_INFO(5, 0, 5, 5, 5, 10, 0, 0) },
+       { DRM_FORMAT_RGBA5551, "RA15", MAKE_RGB_INFO(5, 11, 5, 6, 5, 1, 1, 0) },
+       { DRM_FORMAT_RGBX5551, "RX15", MAKE_RGB_INFO(5, 11, 5, 6, 5, 1, 0, 0) },
+       { DRM_FORMAT_BGRA5551, "BA15", MAKE_RGB_INFO(5, 1, 5, 6, 5, 11, 1, 0) },
+       { DRM_FORMAT_BGRX5551, "BX15", MAKE_RGB_INFO(5, 1, 5, 6, 5, 11, 0, 0) },
        { DRM_FORMAT_RGB565, "RG16", MAKE_RGB_INFO(5, 11, 6, 5, 5, 0, 0, 0) },
+       { DRM_FORMAT_BGR565, "BG16", MAKE_RGB_INFO(5, 0, 6, 5, 5, 11, 0, 0) },
        /* RGB24 */
        { DRM_FORMAT_BGR888, "BG24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 0, 0) },
        { DRM_FORMAT_RGB888, "RG24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0) },
        /* RGB32 */
        { DRM_FORMAT_ARGB8888, "AR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 8, 24) },
-       { DRM_FORMAT_BGRA8888, "BA24", MAKE_RGB_INFO(8, 8, 8, 16, 8, 24, 8, 0) },
        { DRM_FORMAT_XRGB8888, "XR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0) },
+       { DRM_FORMAT_ABGR8888, "AB24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 8, 24) },
+       { DRM_FORMAT_XBGR8888, "XB24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 0, 0) },
+       { DRM_FORMAT_RGBA8888, "RA24", MAKE_RGB_INFO(8, 24, 8, 16, 8, 8, 8, 0) },
+       { DRM_FORMAT_RGBX8888, "RX24", MAKE_RGB_INFO(8, 24, 8, 16, 8, 8, 0, 0) },
+       { DRM_FORMAT_BGRA8888, "BA24", MAKE_RGB_INFO(8, 8, 8, 16, 8, 24, 8, 0) },
        { DRM_FORMAT_BGRX8888, "BX24", MAKE_RGB_INFO(8, 8, 8, 16, 8, 24, 0, 0) },
+       { DRM_FORMAT_ARGB2101010, "AR30", MAKE_RGB_INFO(10, 20, 10, 10, 10, 0, 2, 30) },
+       { DRM_FORMAT_XRGB2101010, "XR30", MAKE_RGB_INFO(10, 20, 10, 10, 10, 0, 0, 0) },
+       { DRM_FORMAT_ABGR2101010, "AB30", MAKE_RGB_INFO(10, 0, 10, 10, 10, 20, 2, 30) },
+       { DRM_FORMAT_XBGR2101010, "XB30", MAKE_RGB_INFO(10, 0, 10, 10, 10, 20, 0, 0) },
+       { DRM_FORMAT_RGBA1010102, "RA30", MAKE_RGB_INFO(10, 22, 10, 12, 10, 2, 2, 0) },
+       { DRM_FORMAT_RGBX1010102, "RX30", MAKE_RGB_INFO(10, 22, 10, 12, 10, 2, 0, 0) },
+       { DRM_FORMAT_BGRA1010102, "BA30", MAKE_RGB_INFO(10, 2, 10, 12, 10, 22, 2, 0) },
+       { DRM_FORMAT_BGRX1010102, "BX30", MAKE_RGB_INFO(10, 2, 10, 12, 10, 22, 0, 0) },
 };
 
 unsigned int format_fourcc(const char *name)
@@ -577,19 +604,47 @@ fill_smpte(const struct format_info *info, void *planes[3], unsigned int width,
                return fill_smpte_yuv_planar(&info->yuv, planes[0], planes[1],
                                             planes[2], width, height, stride);
 
+       case DRM_FORMAT_ARGB4444:
+       case DRM_FORMAT_XRGB4444:
+       case DRM_FORMAT_ABGR4444:
+       case DRM_FORMAT_XBGR4444:
+       case DRM_FORMAT_RGBA4444:
+       case DRM_FORMAT_RGBX4444:
+       case DRM_FORMAT_BGRA4444:
+       case DRM_FORMAT_BGRX4444:
        case DRM_FORMAT_RGB565:
+       case DRM_FORMAT_BGR565:
        case DRM_FORMAT_ARGB1555:
        case DRM_FORMAT_XRGB1555:
+       case DRM_FORMAT_ABGR1555:
+       case DRM_FORMAT_XBGR1555:
+       case DRM_FORMAT_RGBA5551:
+       case DRM_FORMAT_RGBX5551:
+       case DRM_FORMAT_BGRA5551:
+       case DRM_FORMAT_BGRX5551:
                return fill_smpte_rgb16(&info->rgb, planes[0],
                                        width, height, stride);
+
        case DRM_FORMAT_BGR888:
        case DRM_FORMAT_RGB888:
                return fill_smpte_rgb24(&info->rgb, planes[0],
                                        width, height, stride);
        case DRM_FORMAT_ARGB8888:
-       case DRM_FORMAT_BGRA8888:
        case DRM_FORMAT_XRGB8888:
+       case DRM_FORMAT_ABGR8888:
+       case DRM_FORMAT_XBGR8888:
+       case DRM_FORMAT_RGBA8888:
+       case DRM_FORMAT_RGBX8888:
+       case DRM_FORMAT_BGRA8888:
        case DRM_FORMAT_BGRX8888:
+       case DRM_FORMAT_ARGB2101010:
+       case DRM_FORMAT_XRGB2101010:
+       case DRM_FORMAT_ABGR2101010:
+       case DRM_FORMAT_XBGR2101010:
+       case DRM_FORMAT_RGBA1010102:
+       case DRM_FORMAT_RGBX1010102:
+       case DRM_FORMAT_BGRA1010102:
+       case DRM_FORMAT_BGRX1010102:
                return fill_smpte_rgb32(&info->rgb, planes[0],
                                        width, height, stride);
        }
@@ -807,19 +862,47 @@ fill_tiles(const struct format_info *info, void *planes[3], unsigned int width,
                return fill_tiles_yuv_planar(&info->yuv, planes[0], planes[1],
                                             planes[2], width, height, stride);
 
+       case DRM_FORMAT_ARGB4444:
+       case DRM_FORMAT_XRGB4444:
+       case DRM_FORMAT_ABGR4444:
+       case DRM_FORMAT_XBGR4444:
+       case DRM_FORMAT_RGBA4444:
+       case DRM_FORMAT_RGBX4444:
+       case DRM_FORMAT_BGRA4444:
+       case DRM_FORMAT_BGRX4444:
        case DRM_FORMAT_RGB565:
+       case DRM_FORMAT_BGR565:
        case DRM_FORMAT_ARGB1555:
        case DRM_FORMAT_XRGB1555:
+       case DRM_FORMAT_ABGR1555:
+       case DRM_FORMAT_XBGR1555:
+       case DRM_FORMAT_RGBA5551:
+       case DRM_FORMAT_RGBX5551:
+       case DRM_FORMAT_BGRA5551:
+       case DRM_FORMAT_BGRX5551:
                return fill_tiles_rgb16(&info->rgb, planes[0],
                                        width, height, stride);
+
        case DRM_FORMAT_BGR888:
        case DRM_FORMAT_RGB888:
                return fill_tiles_rgb24(&info->rgb, planes[0],
                                        width, height, stride);
        case DRM_FORMAT_ARGB8888:
-       case DRM_FORMAT_BGRA8888:
        case DRM_FORMAT_XRGB8888:
+       case DRM_FORMAT_ABGR8888:
+       case DRM_FORMAT_XBGR8888:
+       case DRM_FORMAT_RGBA8888:
+       case DRM_FORMAT_RGBX8888:
+       case DRM_FORMAT_BGRA8888:
        case DRM_FORMAT_BGRX8888:
+       case DRM_FORMAT_ARGB2101010:
+       case DRM_FORMAT_XRGB2101010:
+       case DRM_FORMAT_ABGR2101010:
+       case DRM_FORMAT_XBGR2101010:
+       case DRM_FORMAT_RGBA1010102:
+       case DRM_FORMAT_RGBX1010102:
+       case DRM_FORMAT_BGRA1010102:
+       case DRM_FORMAT_BGRX1010102:
                return fill_tiles_rgb32(&info->rgb, planes[0],
                                        width, height, stride);
        }
@@ -983,15 +1066,42 @@ create_test_buffer(struct kms_driver *kms, unsigned int format,
                planes[2] = virtual + offsets[2];
                break;
 
-       case DRM_FORMAT_RGB565:
+       case DRM_FORMAT_ARGB4444:
+       case DRM_FORMAT_XRGB4444:
+       case DRM_FORMAT_ABGR4444:
+       case DRM_FORMAT_XBGR4444:
+       case DRM_FORMAT_RGBA4444:
+       case DRM_FORMAT_RGBX4444:
+       case DRM_FORMAT_BGRA4444:
+       case DRM_FORMAT_BGRX4444:
        case DRM_FORMAT_ARGB1555:
        case DRM_FORMAT_XRGB1555:
+       case DRM_FORMAT_ABGR1555:
+       case DRM_FORMAT_XBGR1555:
+       case DRM_FORMAT_RGBA5551:
+       case DRM_FORMAT_RGBX5551:
+       case DRM_FORMAT_BGRA5551:
+       case DRM_FORMAT_BGRX5551:
+       case DRM_FORMAT_RGB565:
+       case DRM_FORMAT_BGR565:
        case DRM_FORMAT_BGR888:
        case DRM_FORMAT_RGB888:
        case DRM_FORMAT_ARGB8888:
-       case DRM_FORMAT_BGRA8888:
        case DRM_FORMAT_XRGB8888:
+       case DRM_FORMAT_ABGR8888:
+       case DRM_FORMAT_XBGR8888:
+       case DRM_FORMAT_RGBA8888:
+       case DRM_FORMAT_RGBX8888:
+       case DRM_FORMAT_BGRA8888:
        case DRM_FORMAT_BGRX8888:
+       case DRM_FORMAT_ARGB2101010:
+       case DRM_FORMAT_XRGB2101010:
+       case DRM_FORMAT_ABGR2101010:
+       case DRM_FORMAT_XBGR2101010:
+       case DRM_FORMAT_RGBA1010102:
+       case DRM_FORMAT_RGBX1010102:
+       case DRM_FORMAT_BGRA1010102:
+       case DRM_FORMAT_BGRX1010102:
                offsets[0] = 0;
                kms_bo_get_prop(bo, KMS_HANDLE, &handles[0]);
                kms_bo_get_prop(bo, KMS_PITCH, &pitches[0]);