[Public] Hi all, This week this patchset was tested on the following systems: * Lenovo ThinkBook T13s Gen4 with AMD Ryzen 5 6600U * MSI Gaming X Trio RX 6800 * Gigabyte Gaming OC RX 7900 XTX These systems were tested on the following display/connection types: * eDP, (1080p 60hz [5650U]) (1920x1200 60hz [6600U]) (2560x1600 120hz[6600U]) * VGA and DVI (1680x1050 60hz [DP to VGA/DVI, USB-C to VGA/DVI]) * DP/HDMI/USB-C (1440p 170hz, 4k 60hz, 4k 144hz, 4k 240hz [Includes USB-C to DP/HDMI adapters]) * Thunderbolt (LG Ultrafine 5k) * MST (Startech MST14DP123DP [DP to 3x DP] and 2x 4k 60Hz displays) * DSC (with Cable Matters 101075 [DP to 3x DP] with 3x 4k60 displays, and HP Hook G2 with 1 4k60 display) * USB 4 (Kensington SD5700T and 1x 4k 60Hz display) * PCON (Club3D CAC-1085 and 1x 4k 144Hz display [at 4k 120HZ, as that is the max the adapter supports]) The testing is a mix of automated and manual tests. Manual testing includes (but is not limited to): * Changing display configurations and settings * Benchmark testing * Feature testing (Freesync, etc.) Automated testing includes (but is not limited to): * Script testing (scripts to automate some of the manual checks) * IGT testing The patchset consists of the amd-staging-drm-next branch (Head commit - drm/amdgpu: add ras event state device attribute support) with new patches added on top of it. Tested on Ubuntu 24.04.1, on Wayland and X11, using KDE Plasma and Gnome. Tested-by: Daniel Wheeler <daniel.wheeler@xxxxxxx> Thank you, Dan Wheeler Sr. Technologist | AMD SW Display ------------------------------------------------------------------------------------------------------------------ 1 Commerce Valley Dr E, Thornhill, ON L3T 7X6 amd.com -----Original Message----- From: Fangzhi Zuo <Jerry.Zuo@xxxxxxx> Sent: Wednesday, July 10, 2024 3:36 PM To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx Cc: Wentland, Harry <Harry.Wentland@xxxxxxx>; Li, Sun peng (Leo) <Sunpeng.Li@xxxxxxx>; Siqueira, Rodrigo <Rodrigo.Siqueira@xxxxxxx>; Pillai, Aurabindo <Aurabindo.Pillai@xxxxxxx>; Li, Roman <Roman.Li@xxxxxxx>; Lin, Wayne <Wayne.Lin@xxxxxxx>; Gutierrez, Agustin <Agustin.Gutierrez@xxxxxxx>; Chung, ChiaHsuan (Tom) <ChiaHsuan.Chung@xxxxxxx>; Zuo, Jerry <Jerry.Zuo@xxxxxxx>; Zuo, Jerry <Jerry.Zuo@xxxxxxx>; Wheeler, Daniel <Daniel.Wheeler@xxxxxxx> Subject: [PATCH 00/50] DC Patches July 10th, 2024 This DC patchset brings improvements in multiple areas. * FW Release 0.0.225.0 * DML2 fixes * Re-enable panel replay feature * Allow display DCC for DCN401 * Refactor DWB, OPP, MPC, MMHUBBUB * Fix dscclk Programming issue on DCN401 Cc: Daniel Wheeler <daniel.wheeler@xxxxxxx> Alex Hung (11): drm/amd/display: Revert "Check HDCP returned status" drm/amd/display: Initialize denominators' default to 1 drm/amd/display: Check null-initialized variables drm/amd/display: Check phantom_stream before it is used drm/amd/display: Pass non-null to dcn20_validate_apply_pipe_split_flags drm/amd/display: Check null pointers before using them drm/amd/display: Check stream before comparing them drm/amd/display: Check link_res->hpo_dp_link_enc before using it drm/amd/display: Check null pointers before used drm/amd/display: Check null pointers before multiple uses drm/amd/display: Increase array size of dummy_boolean Alvin Lee (5): drm/amd/display: Disable HBR audio for DP2 for certain ASICs drm/amd/display: Don't consider cursor for no plane case in DML1 drm/amd/display: When resync fifo ensure to use correct pipe ctx drm/amd/display: Disable subvp based on HW cursor requirement drm/amd/display: Calculate ODM width using odm slice rect, not recout Aric Cyr (1): drm/amd/display: 3.2.292 Aurabindo Pillai (3): drm/amd/display: free bo used for dmub bounding box drm/amd/display: Allow display DCC for DCN401 drm/amd/display: improve logic for addition of modifers Chaitanya Dhere (1): drm/amd/display: DML2.1 resynchronization Chris Park (1): drm/amd/display: Deallocate DML memory if allocation fails Daniel Sa (1): drm/amd/display: Set Cursor Matrix to bypass instead of Input Plane Dillon Varone (3): drm/amd/display: Add blanked streams override to DML2.1 drm/amd/display: Add P-State Keepout to dcn401 Global Sync drm/amd/display: Export additional FAMS2 global configuration options from DML Duncan Ma (1): drm/amd/display: Add visual confirm for Idle State Fudongwang (1): drm/amd/display: add dmcub support check Gabe Teeger (1): drm/amd/display: Fix DP-DVI dongle hotplug Jingwen Zhu (1): drm/amd/display: avoid disable otg when dig was disabled Joshua Aberback (1): drm/amd/display: Remove unnecessary DSC power gating for DCN401 Mounika Adhuri (1): drm/amd/display: Refactoring MPC Mudimela (1): drm/amd/display: Refactoring DWB related files from dcn30 Files Nevenko Stupar (1): drm/amd/display: Issue with 3 or more mcaches per surface Relja Vojvodic (1): drm/amd/display: Implement bias and scale pre scl Revalla Hari Krishna (2): drm/amd/display: Refactoring OPP drm/amd/display: Refactoring MMHUBBUB Rodrigo Siqueira (1): drm/amd/display: Remove unused dml2_core_ip_params struct Roman Li (1): drm/amd/display: Replace assert with error message in dp_retrieve_lttpr_cap() Ryan Seto (1): drm/amd/display: Added logging for automated DPM testing Samson Tam (2): drm/amd/display: quality improvements for EASF and ISHARP drm/amd/display: remove dc dependencies from SPL library Sridevi Arvindekar (1): drm/amd/display: Add option to allow transition when odm is forced Sung Joon Kim (2): drm/amd/display: Do 1-to-1 mapping between OPP and DSC in DML2 drm/amd/display: Check stream pointer is initialized before accessing Tom Chung (3): drm/amd/display: Disable replay if VRR capability is false drm/amd/display: Fix VRR cannot enable drm/amd/display: Re-enable panel replay feature Wenjing Liu (2): drm/amd/display: fix dscclk programming sequence on DCN401 drm/amd/display: apply vmin optimization even if it doesn't reach vmin level .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 74 +- .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 12 + .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 31 +- .../drm/amd/display/dc/basics/fixpt31_32.c | 27 + .../dc/clk_mgr/dce110/dce110_clk_mgr.c | 2 +- .../display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c | 18 +- .../dc/clk_mgr/dcn401/dcn401_clk_mgr.c | 250 ++- drivers/gpu/drm/amd/display/dc/core/dc.c | 22 +- .../drm/amd/display/dc/core/dc_hw_sequencer.c | 102 +- .../gpu/drm/amd/display/dc/core/dc_resource.c | 6 +- .../gpu/drm/amd/display/dc/core/dc_state.c | 14 +- drivers/gpu/drm/amd/display/dc/dc.h | 6 +- drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c | 34 +- drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 7 - .../gpu/drm/amd/display/dc/dc_spl_translate.c | 48 +- .../gpu/drm/amd/display/dc/dc_spl_translate.h | 1 + drivers/gpu/drm/amd/display/dc/dc_stream.h | 9 + .../amd/display/dc/dccg/dcn20/dcn20_dccg.h | 6 +- .../amd/display/dc/dccg/dcn401/dcn401_dccg.c | 32 +- .../amd/display/dc/dccg/dcn401/dcn401_dccg.h | 4 - .../gpu/drm/amd/display/dc/dce/dce_audio.c | 6 + .../gpu/drm/amd/display/dc/dce/dce_audio.h | 1 + drivers/gpu/drm/amd/display/dc/dce/dmub_psr.c | 1 + .../gpu/drm/amd/display/dc/dce/dmub_replay.c | 2 + .../dc/dce110/dce110_timing_generator.c | 1 + .../dc/dce110/dce110_timing_generator.h | 1 + .../dc/dce110/dce110_timing_generator_v.c | 1 + .../dc/dce120/dce120_timing_generator.c | 1 + .../display/dc/dce60/dce60_timing_generator.c | 3 +- .../display/dc/dce80/dce80_timing_generator.c | 3 +- drivers/gpu/drm/amd/display/dc/dcn10/Makefile | 2 - drivers/gpu/drm/amd/display/dc/dcn20/Makefile | 3 +- drivers/gpu/drm/amd/display/dc/dcn30/Makefile | 4 +- .../amd/display/dc/dcn30/dcn30_cm_common.c | 2 +- .../dc/dio/dcn35/dcn35_dio_stream_encoder.c | 9 + drivers/gpu/drm/amd/display/dc/dm_helpers.h | 3 + .../drm/amd/display/dc/dml/dcn20/dcn20_fpu.c | 2 + .../dc/dml/dcn20/display_rq_dlg_calc_20.c | 2 +- .../drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 7 +- .../amd/display/dc/dml/display_mode_structs.h | 1 + .../display/dc/dml/dml1_display_rq_dlg_calc.c | 2 +- drivers/gpu/drm/amd/display/dc/dml2/Makefile | 3 - .../dc/dml2/dml21/dml21_translation_helper.c | 45 +- .../dc/dml2/dml21/dml21_translation_helper.h | 1 + .../amd/display/dc/dml2/dml21/dml21_utils.c | 145 +- .../dml21/inc/bounding_boxes/dcn4_soc_bb.h | 13 +- .../amd/display/dc/dml2/dml21/inc/dml_top.h | 1 - .../dml2/dml21/inc/dml_top_dchub_registers.h | 1 - .../dml21/inc/dml_top_display_cfg_types.h | 2 +- .../dc/dml2/dml21/inc/dml_top_policy_types.h | 1 - .../dml21/inc/dml_top_soc_parameter_types.h | 6 +- .../display/dc/dml2/dml21/inc/dml_top_types.h | 2 + .../dml2/dml21/src/dml2_core/dml2_core_dcn4.c | 124 +- .../dml2/dml21/src/dml2_core/dml2_core_dcn4.h | 1 - .../src/dml2_core/dml2_core_dcn4_calcs.c | 189 +- .../src/dml2_core/dml2_core_dcn4_calcs.h | 2 +- .../dml21/src/dml2_core/dml2_core_factory.c | 1 - .../dml21/src/dml2_core/dml2_core_factory.h | 1 - .../dml21/src/dml2_core/dml2_core_shared.c | 44 +- .../dml21/src/dml2_core/dml2_core_shared.h | 1 - .../src/dml2_core/dml2_core_shared_types.h | 8 +- .../dml2/dml21/src/dml2_dpmm/dml2_dpmm_dcn4.c | 3 +- .../dml2/dml21/src/dml2_dpmm/dml2_dpmm_dcn4.h | 1 - .../dml21/src/dml2_dpmm/dml2_dpmm_factory.c | 1 - .../dml21/src/dml2_dpmm/dml2_dpmm_factory.h | 1 - .../dml2/dml21/src/dml2_mcg/dml2_mcg_dcn4.c | 1 - .../dml2/dml21/src/dml2_mcg/dml2_mcg_dcn4.h | 1 - .../dml21/src/dml2_mcg/dml2_mcg_factory.c | 1 - .../dml21/src/dml2_mcg/dml2_mcg_factory.h | 1 - .../dml2/dml21/src/dml2_pmo/dml2_pmo_dcn3.c | 1 - .../dml2/dml21/src/dml2_pmo/dml2_pmo_dcn3.h | 1 - .../dml2/dml21/src/dml2_pmo/dml2_pmo_dcn4.c | 1250 ------------ .../dml2/dml21/src/dml2_pmo/dml2_pmo_dcn4.h | 25 - .../dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.c | 553 +++--- .../dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.h | 1 - .../dml21/src/dml2_pmo/dml2_pmo_factory.c | 6 +- .../dml21/src/dml2_pmo/dml2_pmo_factory.h | 1 - .../lib_float_math.c | 1 - .../lib_float_math.h | 1 - .../src/dml2_top/dml2_top_optimization.c | 1 - .../src/dml2_top/dml2_top_optimization.h | 1 - .../dc/dml2/dml21/src/dml2_top/dml_top.c | 17 +- .../dml2/dml21/src/dml2_top/dml_top_mcache.c | 23 +- .../dml2/dml21/src/dml2_top/dml_top_mcache.h | 1 - .../dc/dml2/dml21/src/inc/dml2_debug.c | 1 - .../dc/dml2/dml21/src/inc/dml2_debug.h | 1 - .../src/inc/dml2_internal_shared_types.h | 27 +- .../drm/amd/display/dc/dpp/dcn35/dcn35_dpp.c | 27 +- .../drm/amd/display/dc/dpp/dcn35/dcn35_dpp.h | 3 + .../amd/display/dc/dpp/dcn401/dcn401_dpp.c | 3 +- .../amd/display/dc/dpp/dcn401/dcn401_dpp_cm.c | 14 +- .../display/dc/dpp/dcn401/dcn401_dpp_dscl.c | 540 +++--- drivers/gpu/drm/amd/display/dc/dwb/Makefile | 9 + .../dc/{ => dwb}/dcn30/dcn30_cm_common.h | 0 .../display/dc/{ => dwb}/dcn30/dcn30_dwb.c | 0 .../display/dc/{ => dwb}/dcn30/dcn30_dwb.h | 0 .../display/dc/{ => dwb}/dcn30/dcn30_dwb_cm.c | 0 .../drm/amd/display/dc/dwb/dcn35/dcn35_dwb.c | 1 - .../amd/display/dc/hubp/dcn10/dcn10_hubp.c | 3 +- .../amd/display/dc/hubp/dcn20/dcn20_hubp.c | 3 +- .../amd/display/dc/hwss/dce110/dce110_hwseq.c | 13 +- .../amd/display/dc/hwss/dcn10/dcn10_hwseq.c | 8 +- .../amd/display/dc/hwss/dcn20/dcn20_hwseq.c | 20 +- .../amd/display/dc/hwss/dcn31/dcn31_hwseq.c | 4 +- .../amd/display/dc/hwss/dcn314/dcn314_hwseq.c | 13 +- .../amd/display/dc/hwss/dcn314/dcn314_hwseq.h | 2 +- .../amd/display/dc/hwss/dcn32/dcn32_hwseq.c | 41 +- .../amd/display/dc/hwss/dcn32/dcn32_hwseq.h | 2 +- .../amd/display/dc/hwss/dcn35/dcn35_hwseq.c | 15 +- .../amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 19 +- .../amd/display/dc/hwss/dcn401/dcn401_init.c | 2 - .../display/dc/hwss/hw_sequencer_private.h | 3 +- .../gpu/drm/amd/display/dc/inc/core_types.h | 2 +- drivers/gpu/drm/amd/display/dc/inc/hw/audio.h | 2 + .../gpu/drm/amd/display/dc/inc/hw/clk_mgr.h | 1 + .../amd/display/dc/inc/hw/clk_mgr_internal.h | 4 +- drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h | 5 +- .../gpu/drm/amd/display/dc/inc/hw/hw_shared.h | 13 +- drivers/gpu/drm/amd/display/dc/inc/hw/optc.h | 5 +- .../amd/display/dc/inc/hw/stream_encoder.h | 1 + .../amd/display/dc/inc/hw/timing_generator.h | 4 +- .../display/dc/link/accessories/link_dp_cts.c | 5 +- .../amd/display/dc/link/hwss/link_hwss_dio.c | 5 +- .../display/dc/link/hwss/link_hwss_hpo_dp.c | 7 + .../drm/amd/display/dc/link/link_detection.c | 5 +- .../gpu/drm/amd/display/dc/link/link_dpms.c | 41 +- .../dc/link/protocols/link_dp_capability.c | 8 +- .../gpu/drm/amd/display/dc/mmhubbub/Makefile | 9 + .../dc/{ => mmhubbub}/dcn20/dcn20_mmhubbub.c | 0 .../dc/{ => mmhubbub}/dcn20/dcn20_mmhubbub.h | 0 drivers/gpu/drm/amd/display/dc/mpc/Makefile | 27 + .../display/dc/{ => mpc}/dcn10/dcn10_mpc.c | 0 .../display/dc/{ => mpc}/dcn10/dcn10_mpc.h | 0 .../display/dc/{ => mpc}/dcn20/dcn20_mpc.c | 0 .../display/dc/{ => mpc}/dcn20/dcn20_mpc.h | 0 .../display/dc/{ => mpc}/dcn30/dcn30_mpc.c | 2 +- .../display/dc/{ => mpc}/dcn30/dcn30_mpc.h | 0 drivers/gpu/drm/amd/display/dc/opp/Makefile | 16 + .../display/dc/{ => opp}/dcn10/dcn10_opp.c | 0 .../display/dc/{ => opp}/dcn10/dcn10_opp.h | 0 .../display/dc/{ => opp}/dcn20/dcn20_opp.c | 0 .../display/dc/{ => opp}/dcn20/dcn20_opp.h | 0 .../amd/display/dc/optc/dcn10/dcn10_optc.c | 9 +- .../amd/display/dc/optc/dcn10/dcn10_optc.h | 7 +- .../amd/display/dc/optc/dcn401/dcn401_optc.c | 36 +- .../amd/display/dc/optc/dcn401/dcn401_optc.h | 6 +- .../dc/resource/dce110/dce110_resource.c | 1 + .../dc/resource/dce112/dce112_resource.c | 5 +- .../dc/resource/dcn20/dcn20_resource.c | 3 +- .../dc/resource/dcn21/dcn21_resource.c | 3 +- .../dc/resource/dcn31/dcn31_resource.c | 1 + .../dc/resource/dcn32/dcn32_resource.c | 7 + .../resource/dcn32/dcn32_resource_helpers.c | 10 +- .../dc/resource/dcn321/dcn321_resource.c | 1 + .../dc/resource/dcn35/dcn35_resource.c | 1 + .../dc/resource/dcn401/dcn401_resource.c | 7 + .../dc/resource/dcn401/dcn401_resource.h | 3 +- drivers/gpu/drm/amd/display/dc/spl/Makefile | 2 +- drivers/gpu/drm/amd/display/dc/spl/dc_spl.c | 1306 ++++++++----- .../drm/amd/display/dc/spl/dc_spl_filters.c | 15 + .../drm/amd/display/dc/spl/dc_spl_filters.h | 15 + .../display/dc/spl/dc_spl_isharp_filters.c | 426 +++- .../display/dc/spl/dc_spl_isharp_filters.h | 33 +- .../display/dc/spl/dc_spl_scl_easf_filters.c | 1726 +++++++++++++++++ .../display/dc/spl/dc_spl_scl_easf_filters.h | 38 + .../amd/display/dc/spl/dc_spl_scl_filters.c | 91 +- .../amd/display/dc/spl/dc_spl_scl_filters.h | 55 +- .../gpu/drm/amd/display/dc/spl/dc_spl_types.h | 51 +- .../gpu/drm/amd/display/dc/spl/spl_debug.h | 23 + .../drm/amd/display/dc/spl/spl_fixpt31_32.c | 518 +++++ .../drm/amd/display/dc/spl/spl_fixpt31_32.h | 546 ++++++ .../gpu/drm/amd/display/dc/spl/spl_os_types.h | 77 + .../gpu/drm/amd/display/dmub/inc/dmub_cmd.h | 4 + .../gpu/drm/amd/display/include/fixed31_32.h | 6 + .../display/modules/hdcp/hdcp1_execution.c | 18 +- 175 files changed, 6110 insertions(+), 3122 deletions(-) delete mode 100644 drivers/gpu/drm/amd/display/dc/dml2/dml21/src/dml2_pmo/dml2_pmo_dcn4.c delete mode 100644 drivers/gpu/drm/amd/display/dc/dml2/dml21/src/dml2_pmo/dml2_pmo_dcn4.h rename drivers/gpu/drm/amd/display/dc/{ => dwb}/dcn30/dcn30_cm_common.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => dwb}/dcn30/dcn30_dwb.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => dwb}/dcn30/dcn30_dwb.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => dwb}/dcn30/dcn30_dwb_cm.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => mmhubbub}/dcn20/dcn20_mmhubbub.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => mmhubbub}/dcn20/dcn20_mmhubbub.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => mpc}/dcn10/dcn10_mpc.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => mpc}/dcn10/dcn10_mpc.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => mpc}/dcn20/dcn20_mpc.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => mpc}/dcn20/dcn20_mpc.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => mpc}/dcn30/dcn30_mpc.c (99%) rename drivers/gpu/drm/amd/display/dc/{ => mpc}/dcn30/dcn30_mpc.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => opp}/dcn10/dcn10_opp.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => opp}/dcn10/dcn10_opp.h (100%) rename drivers/gpu/drm/amd/display/dc/{ => opp}/dcn20/dcn20_opp.c (100%) rename drivers/gpu/drm/amd/display/dc/{ => opp}/dcn20/dcn20_opp.h (100%) create mode 100644 drivers/gpu/drm/amd/display/dc/spl/dc_spl_filters.c create mode 100644 drivers/gpu/drm/amd/display/dc/spl/dc_spl_filters.h create mode 100644 drivers/gpu/drm/amd/display/dc/spl/dc_spl_scl_easf_filters.c create mode 100644 drivers/gpu/drm/amd/display/dc/spl/dc_spl_scl_easf_filters.h create mode 100644 drivers/gpu/drm/amd/display/dc/spl/spl_debug.h create mode 100644 drivers/gpu/drm/amd/display/dc/spl/spl_fixpt31_32.c create mode 100644 drivers/gpu/drm/amd/display/dc/spl/spl_fixpt31_32.h create mode 100644 drivers/gpu/drm/amd/display/dc/spl/spl_os_types.h -- 2.34.1