[PATCH v6 23/23] modetest: Allocate NV buffers large enough for the two planes

2013-06-15 Thread Laurent Pinchart
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 
---
 tests/modetest/buffers.c | 19 ++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c
index 1575bf6..8206ce3 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, [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, [0]);
if (!bo)
return NULL;

-- 
1.8.1.5



[PATCH v6 23/23] modetest: Allocate NV buffers large enough for the two planes

2013-06-14 Thread Laurent Pinchart
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.pinch...@ideasonboard.com
---
 tests/modetest/buffers.c | 19 ++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c
index 1575bf6..8206ce3 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;
 
-- 
1.8.1.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel