OSDN Git Service

modetest: Add YUV420 support and fix YVU420 Cb/Cr ordering
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 18 Apr 2013 15:26:59 +0000 (15:26 +0000)
committerJerome Glisse <jglisse@redhat.com>
Thu, 18 Apr 2013 18:53:14 +0000 (14:53 -0400)
YUV420 support is trivial to add since the code already supports
YVU420.

But it looks like the YVU420 support is a bit broken. The chroma
planes are passed in the wrong order to the fill functions, so
fix that while were at it.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
tests/modetest/buffers.c

index 2f3adf8..9b2bf72 100644 (file)
@@ -100,6 +100,7 @@ static const struct format_info format_info[] = {
        { DRM_FORMAT_NV16, "NV16", MAKE_YUV_INFO(YUV_YCbCr, 2, 1, 2) },
        { DRM_FORMAT_NV61, "NV61", MAKE_YUV_INFO(YUV_YCrCb, 2, 1, 2) },
        /* YUV planar */
+       { DRM_FORMAT_YUV420, "YU12", MAKE_YUV_INFO(YUV_YCbCr, 2, 2, 1) },
        { 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) },
@@ -600,10 +601,14 @@ fill_smpte(const struct format_info *info, void *planes[3], unsigned int width,
                return fill_smpte_yuv_planar(&info->yuv, planes[0], u, v,
                                             width, height, stride);
 
-       case DRM_FORMAT_YVU420:
+       case DRM_FORMAT_YUV420:
                return fill_smpte_yuv_planar(&info->yuv, planes[0], planes[1],
                                             planes[2], width, height, stride);
 
+       case DRM_FORMAT_YVU420:
+               return fill_smpte_yuv_planar(&info->yuv, planes[0], planes[2],
+                                            planes[1], width, height, stride);
+
        case DRM_FORMAT_ARGB4444:
        case DRM_FORMAT_XRGB4444:
        case DRM_FORMAT_ABGR4444:
@@ -863,10 +868,14 @@ fill_tiles(const struct format_info *info, void *planes[3], unsigned int width,
                return fill_tiles_yuv_planar(info, planes[0], u, v,
                                             width, height, stride);
 
-       case DRM_FORMAT_YVU420:
+       case DRM_FORMAT_YUV420:
                return fill_tiles_yuv_planar(info, planes[0], planes[1],
                                             planes[2], width, height, stride);
 
+       case DRM_FORMAT_YVU420:
+               return fill_tiles_yuv_planar(info, planes[0], planes[2],
+                                            planes[1], width, height, stride);
+
        case DRM_FORMAT_ARGB4444:
        case DRM_FORMAT_XRGB4444:
        case DRM_FORMAT_ABGR4444:
@@ -1055,6 +1064,7 @@ create_test_buffer(struct kms_driver *kms, unsigned int format,
                planes[1] = virtual + offsets[1];
                break;
 
+       case DRM_FORMAT_YUV420:
        case DRM_FORMAT_YVU420:
                offsets[0] = 0;
                kms_bo_get_prop(bo, KMS_HANDLE, &handles[0]);