[PATCH] drm/amdgpu/display: Remove unnecessary typecasts and fix build issues
Leo
sunpeng.li at amd.com
Tue Jun 7 15:34:20 UTC 2022
On 2022-06-07 05:40, Chandan Vurdigere Nataraj wrote:
> [Why]
> Getting below errors:
> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1414:5: error: implicit conversion from enumeration type 'enum scan_direction_class' to different enumeration type 'enum dm_rotation_angle' [-Werror,-Wenum-conversion]
> mode_lib->vba.SourceScan[k],
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1744:22: error: implicit conversion from enumeration type 'enum scan_direction_class' to different enumeration type 'enum dm_rotation_angle' [-Werror,-Wenum-conversion]
> && (!(!IsVertical(mode_lib->vba.SourceScan[k])) || mode_lib->vba.DCCEnable[k] == true)) {
> ~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 2 errors generated.
>
> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_util_32.c:5484:18: error: implicit conversion from enumeration type 'RequestType' to different enumeration type 'enum RequestType' [-Werror,-Wenum-conversion]
> RequestLuma = REQ_256Bytes;
> ~ ^~~~~~~~~~~~
> 18 errors of similar kind
>
> [How]
> 1. Add typecast at relevant places
> 2. Move the enum RequestType definition ahead of declarations
>
> Signed-off-by: Chandan Vurdigere Nataraj <chandan.vurdigerenataraj at amd.com>
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
> index b77a1ae792d1..5828e60f291d 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
> +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
> @@ -1411,7 +1411,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
> v->BytePerPixelC[k],
> v->BytePerPixelDETY[k],
> v->BytePerPixelDETC[k],
> - mode_lib->vba.SourceScan[k],
> + (enum dm_rotation_angle) mode_lib->vba.SourceScan[k],
Hi Jay,
This seems fishy, dm_rotation_angle and scan_dirrection_class are very different enums.
Comparing dml32_CalculateDCCConfiguration() with CalculateDCCConfiguration(), it seems dm_rotation_angle is new for DCN32. Is passing vba.SourceScan correct here?
One more comment below.
> /* Output */
> &v->DCCYMaxUncompressedBlock[k],
> &v->DCCCMaxUncompressedBlock[k],
> @@ -1741,7 +1741,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
> mode_lib->vba.SourceFormatPixelAndScanSupport = true;
> for (k = 0; k <= mode_lib->vba.NumberOfActiveSurfaces - 1; k++) {
> if (mode_lib->vba.SurfaceTiling[k] == dm_sw_linear
> - && (!(!IsVertical(mode_lib->vba.SourceScan[k])) || mode_lib->vba.DCCEnable[k] == true)) {
> + && (!(!IsVertical((enum dm_rotation_angle) mode_lib->vba.SourceScan[k]))
> + || mode_lib->vba.DCCEnable[k] == true)) {
> mode_lib->vba.SourceFormatPixelAndScanSupport = false;
> }
> }
> diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
> index 6509a84eeb64..07f3a85f8edf 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
> +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
> @@ -5314,9 +5314,15 @@ void dml32_CalculateDCCConfiguration(
> unsigned int *IndependentBlockLuma,
> unsigned int *IndependentBlockChroma)
> {
> + typedef enum {
> + REQ_256Bytes,
> + REQ_128BytesNonContiguous,
> + REQ_128BytesContiguous,
> + REQ_NA
> + } RequestType;
>
> - enum RequestType RequestLuma;
> - enum RequestType RequestChroma;
> + RequestType RequestLuma;
> + RequestType RequestChroma;
This might need a wider cleanup, enum RequestType is defined in display_mode_enums.h and is already included in all the display_mode_vba*.c files I've come across. Unless I'm missing something, we shouldn't need to redefine RequestType.
That said, there doesn't seem to be any functional change, and it fixes a build error. So
Acked-by: Leo Li <sunpeng.li at amd.com>
Thanks,
Leo
>
> unsigned int segment_order_horz_contiguous_luma;
> unsigned int segment_order_horz_contiguous_chroma;
> @@ -5350,13 +5356,6 @@ void dml32_CalculateDCCConfiguration(
> double detile_buf_vp_horz_limit;
> double detile_buf_vp_vert_limit;
>
> - typedef enum {
> - REQ_256Bytes,
> - REQ_128BytesNonContiguous,
> - REQ_128BytesContiguous,
> - REQ_NA
> - } RequestType;
> -
> yuv420 = ((SourcePixelFormat == dm_420_8 || SourcePixelFormat == dm_420_10 ||
> SourcePixelFormat == dm_420_12) ? 1 : 0);
> horz_div_l = 1;
> @@ -5527,11 +5526,11 @@ void dml32_CalculateDCCConfiguration(
> RequestChroma = REQ_128BytesContiguous;
> }
>
> - if (RequestLuma == (enum RequestType) REQ_256Bytes) {
> + if (RequestLuma == REQ_256Bytes) {
> *MaxUncompressedBlockLuma = 256;
> *MaxCompressedBlockLuma = 256;
> *IndependentBlockLuma = 0;
> - } else if (RequestLuma == (enum RequestType) REQ_128BytesContiguous) {
> + } else if (RequestLuma == REQ_128BytesContiguous) {
> *MaxUncompressedBlockLuma = 256;
> *MaxCompressedBlockLuma = 128;
> *IndependentBlockLuma = 128;
> @@ -5541,11 +5540,11 @@ void dml32_CalculateDCCConfiguration(
> *IndependentBlockLuma = 64;
> }
>
> - if (RequestChroma == (enum RequestType) REQ_256Bytes) {
> + if (RequestChroma == REQ_256Bytes) {
> *MaxUncompressedBlockChroma = 256;
> *MaxCompressedBlockChroma = 256;
> *IndependentBlockChroma = 0;
> - } else if (RequestChroma == (enum RequestType) REQ_128BytesContiguous) {
> + } else if (RequestChroma == REQ_128BytesContiguous) {
> *MaxUncompressedBlockChroma = 256;
> *MaxCompressedBlockChroma = 128;
> *IndependentBlockChroma = 128;
More information about the amd-gfx
mailing list