[PATCH 050/103] drm/amd/display: Restructuring and cleaning up DML

Harry Wentland harry.wentland at amd.com
Wed Oct 11 11:57:50 UTC 2017


On 2017-10-11 03:44 AM, Dave Airlie wrote:
> On 11 October 2017 at 08:40, Harry Wentland <harry.wentland at amd.com> wrote:
>> From: Dmytro Laktyushkin <Dmytro.Laktyushkin at amd.com>
>>
>> Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin at amd.com>
>> Reviewed-by: Tony Cheng <Tony.Cheng at amd.com>
>> Acked-by: Harry Wentland <Harry.Wentland at amd.com>
>> ---
>>  .../gpu/drm/amd/display/dc/calcs/dcn_calc_math.c   |   16 +
>>  drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c   |  103 +-
>>  drivers/gpu/drm/amd/display/dc/dc.h                |    1 -
>>  .../gpu/drm/amd/display/dc/dcn10/dcn10_resource.c  |    5 +-
>>  drivers/gpu/drm/amd/display/dc/dml/Makefile        |    8 +-
>>  drivers/gpu/drm/amd/display/dc/dml/dc_features.h   |    2 +
>>  .../drm/amd/display/dc/dml/display_mode_enums.h    |   52 +-
>>  .../gpu/drm/amd/display/dc/dml/display_mode_lib.c  |    7 +-
>>  .../gpu/drm/amd/display/dc/dml/display_mode_lib.h  |    8 +-
>>  .../drm/amd/display/dc/dml/display_mode_structs.h  |  898 +++---
>>  .../drm/amd/display/dc/dml/display_mode_support.c  | 2326 --------------
>>  .../drm/amd/display/dc/dml/display_mode_support.h  |  199 --
>>  .../gpu/drm/amd/display/dc/dml/display_mode_vba.c  | 3263 ++++++++++++++++++++
>>  .../gpu/drm/amd/display/dc/dml/display_mode_vba.h  |  410 +++
>>  .../drm/amd/display/dc/dml/display_pipe_clocks.c   |  377 +--
>>  .../drm/amd/display/dc/dml/display_pipe_clocks.h   |    8 +-
>>  .../drm/amd/display/dc/dml/display_rq_dlg_calc.c   | 2457 ++++++---------
>>  .../drm/amd/display/dc/dml/display_rq_dlg_calc.h   |  151 +-
>>  .../amd/display/dc/dml/display_rq_dlg_helpers.c    |  482 +--
>>  .../amd/display/dc/dml/display_rq_dlg_helpers.h    |   41 +-
>>  .../gpu/drm/amd/display/dc/dml/display_watermark.c | 1281 --------
>>  .../gpu/drm/amd/display/dc/dml/display_watermark.h |   98 -
>>  .../amd/display/dc/dml/dml1_display_rq_dlg_calc.c  | 1903 ++++++++++++
>>  .../amd/display/dc/dml/dml1_display_rq_dlg_calc.h  |   67 +
>>  .../gpu/drm/amd/display/dc/dml/dml_common_defs.c   |   12 +-
>>  .../gpu/drm/amd/display/dc/dml/dml_common_defs.h   |    8 +-
>>  .../gpu/drm/amd/display/dc/dml/soc_bounding_box.c  |   48 +-
>>  .../gpu/drm/amd/display/dc/dml/soc_bounding_box.h  |    9 +-
>>  28 files changed, 7658 insertions(+), 6582 deletions(-)
>>  delete mode 100644 drivers/gpu/drm/amd/display/dc/dml/display_mode_support.c
>>  delete mode 100644 drivers/gpu/drm/amd/display/dc/dml/display_mode_support.h
>>  create mode 100644 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
>>  create mode 100644 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
>>  delete mode 100644 drivers/gpu/drm/amd/display/dc/dml/display_watermark.c
>>  delete mode 100644 drivers/gpu/drm/amd/display/dc/dml/display_watermark.h
>>  create mode 100644 drivers/gpu/drm/amd/display/dc/dml/dml1_display_rq_dlg_calc.c
>>  create mode 100644 drivers/gpu/drm/amd/display/dc/dml/dml1_display_rq_dlg_calc.h
>>
>> diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
>> index a18474437990..b6abe0f3bb15 100644
>> --- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
>> +++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
>> @@ -27,20 +27,36 @@
>>
>>  float dcn_bw_mod(const float arg1, const float arg2)
>>  {
>> +       if (arg1 != arg1)
>> +               return arg2;
>> +       if (arg2 != arg2)
>> +               return arg1;
>>         return arg1 - arg1 * ((int) (arg1 / arg2));
>>  }
>>
>>  float dcn_bw_min2(const float arg1, const float arg2)
>>  {
>> +       if (arg1 != arg1)
>> +               return arg2;
>> +       if (arg2 != arg2)
>> +               return arg1;
>>         return arg1 < arg2 ? arg1 : arg2;
>>  }
>>
>>  unsigned int dcn_bw_max(const unsigned int arg1, const unsigned int arg2)
>>  {
>> +       if (arg1 != arg1)
>> +               return arg2;
>> +       if (arg2 != arg2)
>> +               return arg1;
>>         return arg1 > arg2 ? arg1 : arg2;
>>  }
>>  float dcn_bw_max2(const float arg1, const float arg2)
>>  {
>> +       if (arg1 != arg1)
>> +               return arg2;
>> +       if (arg2 != arg2)
>> +               return arg1;
>>         return arg1 > arg2 ? arg1 : arg2;
>>  }
>>
> 
> I got this far. Wow none of the added above code makes any sense, step
> up the internal review please.
> 

These are NaN checks for floating point math and is the recommended way to
check for those. Is there a different recommended way in the kernel?

Unfortunately this is HW magic and we'll need to find a way to deal with it.

Harry

> Dave.
> 


More information about the amd-gfx mailing list