diff options
author | Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> | 2019-01-18 00:58:18 -0800 |
---|---|---|
committer | Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> | 2019-01-18 15:54:27 -0800 |
commit | d4199510374514489b1ab56e3416f53f6c1d6291 (patch) | |
tree | 230e975525a25f30dd20b4c2f81cd099be98de09 /tests/kms_available_modes_crc.c | |
parent | 1c0790447d6c3827819eafa341aeacd6c076d10e (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>
Diffstat (limited to 'tests/kms_available_modes_crc.c')
-rw-r--r-- | tests/kms_available_modes_crc.c | 17 |
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; } |