summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>2019-01-18 00:58:18 -0800
committerDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>2019-01-18 15:54:27 -0800
commitd4199510374514489b1ab56e3416f53f6c1d6291 (patch)
tree230e975525a25f30dd20b4c2f81cd099be98de09
parent1c0790447d6c3827819eafa341aeacd6c076d10e (diff)
tests/kms_modes_available_crc: Fix NV12 failure
The size of the UV plane is not calculated correctly - height is not tile aligned. Make use of the stride and offset values intitialized in the previous patch to calculate plane size. The next step would be to rewrite the test to make use of library functions, but for now this should fix NV12. Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
-rw-r--r--tests/kms_available_modes_crc.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/tests/kms_available_modes_crc.c b/tests/kms_available_modes_crc.c
index 3551061a..7ff385f2 100644
--- a/tests/kms_available_modes_crc.c
+++ b/tests/kms_available_modes_crc.c
@@ -197,17 +197,18 @@ static bool fill_in_fb(data_t *data, igt_output_t *output, igt_plane_t *plane,
writesize = data->size;
break;
case BYTES_PP_1:
- memset((void*)data->buf, fillers[i].value, data->size);
+ memset((void *)data->buf, fillers[i].value, data->size);
writesize = data->size;
break;
case NV12:
- memset((void*)data->buf, fillers[i].value&0xff,
- data->size);
+ memset((void *)data->buf, fillers[i].value&0xff,
+ data->fb.offsets[1]);
- memset((void*)(data->buf+data->size),
- (fillers[i].value>>8)&0xff, data->size/2);
+ memset((void *)(data->buf+data->fb.offsets[1]),
+ (fillers[i].value>>8)&0xff,
+ data->size - data->fb.offsets[1]);
- writesize = data->size+data->size/2;
+ writesize = data->size;
break;
case P010:
ptemp_16_buf = (unsigned short*)data->buf;
@@ -302,6 +303,10 @@ static bool setup_fb(data_t *data, igt_output_t *output, igt_plane_t *plane,
data->fb.offsets[1] = data->size;
data->fb.strides[1] = data->fb.strides[0];
gemsize = data->size * 2;
+
+ if (fillers[i].bpp == NV12)
+ data->size += data->fb.strides[1] * ALIGN(h/2, tile_height);
+
num_planes = 2;
}