drm/amd/display: add HDR multiplier support
authorJoshua Ashton <joshua@froggi.es>
Thu, 16 Nov 2023 19:58:02 +0000 (18:58 -0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 13 Dec 2023 21:32:16 +0000 (16:32 -0500)
With `dc_fixpt_from_s3132()` translation, we can just use it to set
hdr_mult.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Joshua Ashton <joshua@froggi.es>
Signed-off-by: Melissa Wen <mwen@igalia.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c

index 911db58d0e1c62c9ee12909d736fae3104dbfb21..4a1139b3cbc5c3b78a09c0413377fb83bf93f18f 100644 (file)
@@ -8268,6 +8268,7 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
                        bundle->surface_updates[planes_count].gamma = dc_plane->gamma_correction;
                        bundle->surface_updates[planes_count].in_transfer_func = dc_plane->in_transfer_func;
                        bundle->surface_updates[planes_count].gamut_remap_matrix = &dc_plane->gamut_remap_matrix;
+                       bundle->surface_updates[planes_count].hdr_mult = dc_plane->hdr_mult;
                }
 
                amdgpu_dm_plane_fill_dc_scaling_info(dm->adev, new_plane_state,
index c160dbef5224948098b757aea4c832abd8fbd956..35f1485248276b05d89bbb3e4332bf29d14577ef 100644 (file)
@@ -927,6 +927,7 @@ int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
                                      struct drm_plane_state *plane_state,
                                      struct dc_plane_state *dc_plane_state)
 {
+       struct dm_plane_state *dm_plane_state = to_dm_plane_state(plane_state);
        bool has_crtc_cm_degamma;
        int ret;
 
@@ -937,6 +938,8 @@ int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
        /* After, we start to update values according to color props */
        has_crtc_cm_degamma = (crtc->cm_has_degamma || crtc->cm_is_degamma_srgb);
 
+       dc_plane_state->hdr_mult = dc_fixpt_from_s3132(dm_plane_state->hdr_mult);
+
        ret = __set_dm_plane_degamma(plane_state, dc_plane_state);
        if (ret == -ENOMEM)
                return ret;