[PATCH] drm/amdgpu/display: Remove unnecessary typecasts and fix build issues

Aurabindo Pillai aurabindo.pillai at amd.com
Tue Jun 7 17:58:05 UTC 2022



On 2022-06-07 11:34, Leo wrote:
> 
> 
> 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?

I agree. It should be typecast to scan_direction_class
> 
> 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

I'm unable to repro this error. Are you using clang? If so, which version ?

> 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