summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2013-06-14 22:57:49 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2013-08-05 14:21:45 +0200
commit3c967e715528ee52195c178c4d09d03b643f0c06 (patch)
tree92a15950c4a9a31258c66e5f8a3f5f849bc9b852
parent1ef179d09c465248db47f62f00e718f4911e0e34 (diff)
downloaddrm-3c967e715528ee52195c178c4d09d03b643f0c06.tar.gz
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>
-rw-r--r--tests/modetest/buffers.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c
index 1575bf67..8206ce31 100644
--- a/tests/modetest/buffers.c
+++ b/tests/modetest/buffers.c
@@ -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;