From 2ecafcae8a215d9994fb26a122d97bcb5437c5e8 Mon Sep 17 00:00:00 2001 From: James Zhu Date: Thu, 5 Oct 2017 10:57:42 -0400 Subject: [PATCH] tests/amdgpu: fix uvd enc data corruption issue In uvd encode parameter package, parameters input_pic_luma_pitch and input_pic_chroma_pitch should be picture width align with hardware alignment. The hardware alignment is 16 for amdgpu family earlier than AMDGPU_FAMILY_AI, and 256 for later than and including AMDGPU_FAMILY_AI. Signed-off-by: James Zhu Reviewed-by: Leo Liu --- tests/amdgpu/uvd_enc_tests.c | 4 +++- tests/amdgpu/uve_ib.h | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/amdgpu/uvd_enc_tests.c b/tests/amdgpu/uvd_enc_tests.c index 75181035..bbda1312 100644 --- a/tests/amdgpu/uvd_enc_tests.c +++ b/tests/amdgpu/uvd_enc_tests.c @@ -272,7 +272,7 @@ static void amdgpu_cs_uvd_enc_create(void) static void check_result(struct amdgpu_uvd_enc *enc) { uint64_t sum; - uint32_t s = 26382; + uint32_t s = 175602; uint32_t *ptr, size; int i, j, r; @@ -463,6 +463,8 @@ static void amdgpu_cs_uvd_enc_encode(void) ib_cpu[len++] = chroma_offset >> 32; ib_cpu[len++] = chroma_offset; memcpy((ib_cpu + len), uve_encode_param, sizeof(uve_encode_param)); + ib_cpu[len] = ALIGN(enc.width, align); + ib_cpu[len + 1] = ALIGN(enc.width, align); len += sizeof(uve_encode_param) / 4; memcpy((ib_cpu + len), uve_op_speed_enc_mode, sizeof(uve_op_speed_enc_mode)); diff --git a/tests/amdgpu/uve_ib.h b/tests/amdgpu/uve_ib.h index 9abd4066..cb72be22 100644 --- a/tests/amdgpu/uve_ib.h +++ b/tests/amdgpu/uve_ib.h @@ -297,8 +297,8 @@ static const uint32_t uve_slice_header[] = { }; static const uint32_t uve_encode_param[] = { - 0x000000a0, - 0x00000080, + 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0xffffffff,