diff options
author | Joshua Ashton <joshua@froggi.es> | 2023-11-16 18:58:06 -0100 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2023-12-14 15:25:24 -0500 |
commit | 8d26795ae61a5f64ba7db4f3240dc9ab2138d361 (patch) | |
tree | 1f3c373d663b31f67b4a8bda99d794bad91b0734 | |
parent | 486c95af5d76047d5cb50727270b1961dacb9380 (diff) | |
download | linux-stable-8d26795ae61a5f64ba7db4f3240dc9ab2138d361.tar.gz linux-stable-8d26795ae61a5f64ba7db4f3240dc9ab2138d361.tar.bz2 linux-stable-8d26795ae61a5f64ba7db4f3240dc9ab2138d361.zip |
drm/amd/display: handle empty LUTs in __set_input_tf
Unlike degamma, blend gamma doesn't support hardcoded curve
(predefined/ROM), but we can use AMD color module to fill blend gamma
parameters when we have non-linear plane gamma TF without plane gamma
LUT. The regular degamma path doesn't hit this.
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>
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c index f55e0a69dd32..738399538432 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c @@ -578,17 +578,21 @@ static int __set_input_tf(struct dc_transfer_func *func, struct dc_gamma *gamma = NULL; bool res; - gamma = dc_create_gamma(); - if (!gamma) - return -ENOMEM; + if (lut_size) { + gamma = dc_create_gamma(); + if (!gamma) + return -ENOMEM; - gamma->type = GAMMA_CUSTOM; - gamma->num_entries = lut_size; + gamma->type = GAMMA_CUSTOM; + gamma->num_entries = lut_size; - __drm_lut_to_dc_gamma(lut, gamma, false); + __drm_lut_to_dc_gamma(lut, gamma, false); + } - res = mod_color_calculate_degamma_params(NULL, func, gamma, true); - dc_gamma_release(&gamma); + res = mod_color_calculate_degamma_params(NULL, func, gamma, gamma != NULL); + + if (gamma) + dc_gamma_release(&gamma); return res ? 0 : -ENOMEM; } |