[PATCH] drm/amd/display: Remove unnecessary NULL check in dcn20_set_input_transfer_func
Harry Wentland
harry.wentland at amd.com
Tue Apr 23 15:37:41 UTC 2024
On 2024-04-23 09:59, Srinivasan Shanmugam wrote:
> This commit removes an unnecessary NULL check in the
> `dcn20_set_input_transfer_func` function in the `dcn20_hwseq.c` file.
> The variable `tf` is assigned the address of
> `plane_state->in_transfer_func` unconditionally, so it can never be
> `NULL`. Therefore, the check `if (tf == NULL)` is unnecessary and has
> been removed.
>
> The plane_state->in_transfer_func itself cannot be NULL because it's a
> structure, not a pointer. When we do tf =
> &plane_state->in_transfer_func;, we're getting the address of that
> structure, which will always be valid as long as plane_state itself is
> not NULL.
>
> we've already checked if plane_state is NULL with the line if (dpp_base
> == NULL || plane_state == NULL) return false;. So, if the code execution
> gets to the point where tf = &plane_state->in_transfer_func; is called,
> plane_state is guaranteed to be not NULL, and therefore tf will also not
> be NULL.
>
> drivers/gpu/drm/amd/amdgpu/../display/dc/hwss/dcn20/dcn20_hwseq.c
> 1094 bool dcn20_set_input_transfer_func(struct dc *dc,
> 1095 struct pipe_ctx *pipe_ctx,
> 1096 const struct dc_plane_state *plane_state)
> 1097 {
> 1098 struct dce_hwseq *hws = dc->hwseq;
> 1099 struct dpp *dpp_base = pipe_ctx->plane_res.dpp;
> 1100 const struct dc_transfer_func *tf = NULL;
> ^^^^^^^^^ This assignment is not necessary now.
>
> 1101 bool result = true;
> 1102 bool use_degamma_ram = false;
> 1103
> 1104 if (dpp_base == NULL || plane_state == NULL)
> 1105 return false;
> 1106
> 1107 hws->funcs.set_shaper_3dlut(pipe_ctx, plane_state);
> 1108 hws->funcs.set_blend_lut(pipe_ctx, plane_state);
> 1109
> 1110 tf = &plane_state->in_transfer_func;
> ^^^^^
> Before there was an if statement but now tf is assigned unconditionally
>
> 1111
> --> 1112 if (tf == NULL) {
> ^^^^^^^^^^^^^^^^^
> so these conditions are impossible.
>
> 1113 dpp_base->funcs->dpp_set_degamma(dpp_base,
> 1114 IPP_DEGAMMA_MODE_BYPASS);
> 1115 return true;
> 1116 }
> 1117
> 1118 if (tf->type == TF_TYPE_HWPWL || tf->type == TF_TYPE_DISTRIBUTED_POINTS)
> 1119 use_degamma_ram = true;
> 1120
> 1121 if (use_degamma_ram == true) {
> 1122 if (tf->type == TF_TYPE_HWPWL)
> 1123 dpp_base->funcs->dpp_program_degamma_pwl(dpp_base,
>
> Fixes the below Smatch static checker warning:
> drivers/gpu/drm/amd/amdgpu/../display/dc/hwss/dcn20/dcn20_hwseq.c:1112 dcn20_set_input_transfer_func() warn: address of 'plane_state->in_transfer_func' is non-NULL
>
> Fixes: 285a7054bf81 ("drm/amd/display: Remove plane and stream pointers from dc scratch")
> Cc: Wenjing Liu <wenjing.liu at amd.com>
> Cc: Tom Chung <chiahsuan.chung at amd.com>
> Cc: Alvin Lee <alvin.lee2 at amd.com>
> Cc: Rodrigo Siqueira <Rodrigo.Siqueira at amd.com>
> Cc: Roman Li <roman.li at amd.com>
> Cc: Qingqing Zhuo <Qingqing.Zhuo at amd.com>
> Cc: Aurabindo Pillai <aurabindo.pillai at amd.com>
> Cc: Harry Wentland <harry.wentland at amd.com>
> Suggested-by: Dan Carpenter <dan.carpenter at linaro.org>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
Previously plane_state->in_transfer_func was a pointer but that was
changed recently. Looks like this place was missed.
Reviewed-by: Harry Wentland <harry.wentland at amd.com>
Harry
> ---
> drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c
> index b60ba2a110f7..58fbdd535068 100644
> --- a/drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c
> +++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c
> @@ -1109,12 +1109,6 @@ bool dcn20_set_input_transfer_func(struct dc *dc,
>
> tf = &plane_state->in_transfer_func;
>
> - if (tf == NULL) {
> - dpp_base->funcs->dpp_set_degamma(dpp_base,
> - IPP_DEGAMMA_MODE_BYPASS);
> - return true;
> - }
> -
> if (tf->type == TF_TYPE_HWPWL || tf->type == TF_TYPE_DISTRIBUTED_POINTS)
> use_degamma_ram = true;
>
More information about the amd-gfx
mailing list