[PATCH] drm/amdgpu/display: Remove unnecessary typecasts and fix build issues
Rodrigo Siqueira Jordao
Rodrigo.Siqueira at amd.com
Wed Jun 8 13:26:01 UTC 2022
On 2022-06-07 13:58, Aurabindo Pillai wrote:
>
>
> 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 ?
Hey Jay,
I was checking this patch in our CI, and we can reproduce this issue
with a clang.
Thanks
Siqueira
>
>> 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