modetest: add support for DRM_FORMAT_NV{24,42}
authorGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 5 Jul 2023 13:24:02 +0000 (15:24 +0200)
committerDmitry Baryshkov <dbaryshkov@gmail.com>
Fri, 8 Sep 2023 17:42:38 +0000 (17:42 +0000)
Add support for creating buffers using semi-planar YUV formats with
non-subsampled chroma planes.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
v2:
  - Add Reviewed-by.

tests/modetest/buffers.c

index 4119f04..c122fb3 100644 (file)
@@ -129,6 +129,8 @@ bo_create(int fd, unsigned int format,
        case DRM_FORMAT_NV21:
        case DRM_FORMAT_NV16:
        case DRM_FORMAT_NV61:
+       case DRM_FORMAT_NV24:
+       case DRM_FORMAT_NV42:
        case DRM_FORMAT_YUV420:
        case DRM_FORMAT_YVU420:
                bpp = 8;
@@ -208,6 +210,11 @@ bo_create(int fd, unsigned int format,
                virtual_height = height * 2;
                break;
 
+       case DRM_FORMAT_NV24:
+       case DRM_FORMAT_NV42:
+               virtual_height = height * 3;
+               break;
+
        default:
                virtual_height = height;
                break;
@@ -255,6 +262,19 @@ bo_create(int fd, unsigned int format,
                planes[1] = virtual + offsets[1];
                break;
 
+       case DRM_FORMAT_NV24:
+       case DRM_FORMAT_NV42:
+               offsets[0] = 0;
+               handles[0] = bo->handle;
+               pitches[0] = bo->pitch;
+               pitches[1] = pitches[0] * 2;
+               offsets[1] = pitches[0] * height;
+               handles[1] = bo->handle;
+
+               planes[0] = virtual;
+               planes[1] = virtual + offsets[1];
+               break;
+
        case DRM_FORMAT_YUV420:
        case DRM_FORMAT_YVU420:
                offsets[0] = 0;