modetest: add support for DRM_FORMAT_NV{24,42}

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.
main
Geert Uytterhoeven 2023-07-05 15:24:02 +02:00 committed by Dmitry Baryshkov
parent 8e5286d4f9
commit be42051ead
1 changed files with 20 additions and 0 deletions

View File

@ -129,6 +129,8 @@ bo_create(int fd, unsigned int format,
case DRM_FORMAT_NV21: case DRM_FORMAT_NV21:
case DRM_FORMAT_NV16: case DRM_FORMAT_NV16:
case DRM_FORMAT_NV61: case DRM_FORMAT_NV61:
case DRM_FORMAT_NV24:
case DRM_FORMAT_NV42:
case DRM_FORMAT_YUV420: case DRM_FORMAT_YUV420:
case DRM_FORMAT_YVU420: case DRM_FORMAT_YVU420:
bpp = 8; bpp = 8;
@ -208,6 +210,11 @@ bo_create(int fd, unsigned int format,
virtual_height = height * 2; virtual_height = height * 2;
break; break;
case DRM_FORMAT_NV24:
case DRM_FORMAT_NV42:
virtual_height = height * 3;
break;
default: default:
virtual_height = height; virtual_height = height;
break; break;
@ -255,6 +262,19 @@ bo_create(int fd, unsigned int format,
planes[1] = virtual + offsets[1]; planes[1] = virtual + offsets[1];
break; 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_YUV420:
case DRM_FORMAT_YVU420: case DRM_FORMAT_YVU420:
offsets[0] = 0; offsets[0] = 0;