From: Alex Hung <[email protected]> [WHY] The atomic regamma, shaper, and blend helpers were only exercised on their linear bypass paths, leaving the generated transfer-function cases untested.
[HOW] Add sRGB success-path tests that verify the generated transfer functions and the corresponding plane color-management enable flags. Assisted-by: Copilot:GPT-5.6-Sol Reviewed-by: Bhawanpreet Lakha <[email protected]> Signed-off-by: Alex Hung <[email protected]> Signed-off-by: Fangzhi Zuo <[email protected]> Tested-by: Dan Wheeler <[email protected]> --- .../amdgpu_dm/tests/amdgpu_dm_color_test.c | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c index de11a606a88c..4945f5429bc1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_color_test.c @@ -1535,6 +1535,23 @@ static void dm_test_set_atomic_regamma_bypass(struct kunit *test) KUNIT_EXPECT_EQ(test, (int)out_tf->tf, (int)TRANSFER_FUNCTION_LINEAR); } +/** + * dm_test_set_atomic_regamma_srgb - Non-linear TF enables generated regamma + * @test: KUnit test context + */ +static void dm_test_set_atomic_regamma_srgb(struct kunit *test) +{ + struct dc_transfer_func *out_tf; + + out_tf = kunit_kzalloc(test, sizeof(*out_tf), GFP_KERNEL); + KUNIT_ASSERT_NOT_NULL(test, out_tf); + + KUNIT_EXPECT_EQ(test, + amdgpu_dm_set_atomic_regamma(out_tf, NULL, 0, true, TRANSFER_FUNCTION_SRGB), + 0); + KUNIT_EXPECT_EQ(test, (int)out_tf->type, (int)TF_TYPE_DISTRIBUTED_POINTS); +} + /** * dm_test_atomic_shaper_lut_bypass - No LUT and linear TF: must take bypass path * @test: KUnit test context @@ -1577,6 +1594,28 @@ static void dm_test_atomic_blend_lut_bypass(struct kunit *test) KUNIT_EXPECT_EQ(test, (int)cm->blend_func.tf, (int)TRANSFER_FUNCTION_LINEAR); } +/** + * dm_test_atomic_shaper_blend_srgb - Non-linear TFs enable shaper and blend + * @test: KUnit test context + */ +static void dm_test_atomic_shaper_blend_srgb(struct kunit *test) +{ + struct dc_plane_cm *cm; + + cm = kunit_kzalloc(test, sizeof(*cm), GFP_KERNEL); + KUNIT_ASSERT_NOT_NULL(test, cm); + + KUNIT_EXPECT_EQ(test, + amdgpu_dm_atomic_shaper_lut(NULL, true, TRANSFER_FUNCTION_SRGB, 0, cm), + 0); + KUNIT_EXPECT_TRUE(test, cm->flags.bits.shaper_enable); + + KUNIT_EXPECT_EQ(test, + amdgpu_dm_atomic_blend_lut(NULL, false, TRANSFER_FUNCTION_SRGB, 0, cm), + 0); + KUNIT_EXPECT_TRUE(test, cm->flags.bits.blend_enable); +} + /* ---- Tests for __set_colorop_in_tf_1d_curve ---- */ /** @@ -2533,10 +2572,12 @@ static struct kunit_case dm_color_test_cases[] = { KUNIT_CASE(dm_test_set_transfer_funcs_with_luts), /* amdgpu_dm_set_atomic_regamma */ KUNIT_CASE(dm_test_set_atomic_regamma_bypass), + KUNIT_CASE(dm_test_set_atomic_regamma_srgb), /* amdgpu_dm_atomic_shaper_lut */ KUNIT_CASE(dm_test_atomic_shaper_lut_bypass), /* amdgpu_dm_atomic_blend_lut */ KUNIT_CASE(dm_test_atomic_blend_lut_bypass), + KUNIT_CASE(dm_test_atomic_shaper_blend_srgb), /* __set_colorop_in_tf_1d_curve */ KUNIT_CASE(dm_test_set_colorop_in_tf_1d_curve_invalid_type), KUNIT_CASE(dm_test_set_colorop_in_tf_1d_curve_unsupported_curve), -- 2.53.0
