modetest: Allocate NV buffers large enough for the two planes

Multiple the image height by 1.5 for NV12/NV21 and by 2 for NV16/NV61 to
make room for the chroma plane.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
main
Laurent Pinchart 2013-06-14 22:57:49 +02:00
parent 1ef179d09c
commit 3c967e7155
1 changed files with 18 additions and 1 deletions

View File

@ -1038,12 +1038,29 @@ create_test_buffer(struct kms_driver *kms, unsigned int format,
unsigned int handles[4], unsigned int pitches[4],
unsigned int offsets[4], enum fill_pattern pattern)
{
unsigned int virtual_height;
struct kms_bo *bo;
void *planes[3] = { 0, };
void *virtual;
int ret;
bo = allocate_buffer(kms, width, height, &pitches[0]);
switch (format) {
case DRM_FORMAT_NV12:
case DRM_FORMAT_NV21:
virtual_height = height * 3 / 2;
break;
case DRM_FORMAT_NV16:
case DRM_FORMAT_NV61:
virtual_height = height * 2;
break;
default:
virtual_height = height;
break;
}
bo = allocate_buffer(kms, width, virtual_height, &pitches[0]);
if (!bo)
return NULL;