Public
Hi all,
This week this patchset was tested on 4 systems, two dGPU and two APU based,
and tested across multiple display and connection types.
APU
* Single Display eDP -> 1080p 60hz, 1920x1200 165hz, 3840x2400 60hz
* Single Display DP (SST DSC) -> 4k144hz, 4k240hz
* Multi display -> eDP + DP/HDMI/USB-C -> 1080p 60hz eDP + 4k 144hz, 4k
240hz (Includes USB-C to DP/HDMI adapters)
* Thunderbolt -> LG Ultrafine 5k
* MST DSC -> Cable Matters 101075 (DP to 3x DP) with 3x 4k60hz
displays, HP Hook G2 with 2x 4k60hz displays
* USB 4 -> HP Hook G4, Lenovo Thunderbolt Dock, both with 2x 4k60hz DP
and 1x 4k60hz HDMI displays
* SST PCON -> Club3D CAC-1085 + 1x 4k 144hz, FRL3, at a max resolution
supported by the dongle of 4k 120hz YUV420 12bpc.
* MST PCON -> 1x 4k 144hz, FRL3, at a max resolution supported by the
adapter of 4k 120hz RGB 8bpc.
DGPU
* Single Display DP (SST DSC) -> 4k144hz, 4k240hz
* Multiple Display DP -> 4k240hz + 4k144hz
* MST (Startech MST14DP123DP [DP to 3x DP] and 2x 4k 60hz displays)
* MST DSC (with Cable Matters 101075 [DP to 3x DP] with 3x 4k60hz
displays)
The testing is a mix of automated and manual tests. Manual testing includes
(but is not limited to)
* Changing display configurations and settings
* Video/Audio playback
* Benchmark testing
* Suspend/Resume testing
* Feature testing (Freesync, HDCP, etc.)
Automated testing includes (but is not limited to)
* Script testing (scripts to automate some of the manual checks)
* IGT testing
The testing is mainly tested on the following displays, but occasionally there
are tests with other displays
* Samsung G8 Neo 4k240hz
* Samsung QN55QN95B 4k 120hz
* Acer XV322QKKV 4k144hz
* HP U27 4k Wireless 4k60hz
* LG 27UD58B 4k60hz
* LG 32UN650WA 4k60hz
* LG Ultrafine 5k 5k60hz
* AU Optronics B140HAN01.1 1080p 60hz eDP
* AU Optronics B160UAN01.J 1920x1200 165hz eDP
* Samsung ATNA60YV02-0 3840x2400 60Hz OLED eDP
The patchset consists of the amd-staging-drm-next branch (Head commit -
75a5e1b6b3661c3f946885d01eebeb6b031035ef drm/amdkfd: guard against NULL
restore_mqd in CRIU queue restore) with new patches added on top of it.
Tested on Ubuntu 26.04, on Gnome Wayland.
Tested-by: Dan Wheeler <[email protected]>
Thank you,
Dan Wheeler
Sr. Technologist | AMD
SW Display
------------------------------------------------------------------------------------------------------------------
1 Commerce Valley Dr E, Thornhill, ON L3T 7X6
amd.com
-----Original Message-----
From: Hung, Alex <[email protected]>
Sent: Wednesday, August 26, 2026 7:05 PM
To: [email protected]
Cc: Wentland, Harry <[email protected]>; Li, Sun peng (Leo)
<[email protected]>; Pillai, Aurabindo <[email protected]>; Li, Roman
<[email protected]>; Lin, Wayne <[email protected]>; Chung, ChiaHsuan (Tom)
<[email protected]>; Zuo, Jerry <[email protected]>; Wheeler, Daniel
<[email protected]>; Wu, Ray <[email protected]>; LIPSKI, IVAN
<[email protected]>; Hung, Alex <[email protected]>; Lin, Ping Lei
<[email protected]>; Chen, Chen-Yu <[email protected]>
Subject: [PATCH 00/59] DC Patches Aug 26, 2026
This DC patchset brings improvements in multiple areas. In summary, we
have:
* Move the DML wrapper into its own component.
* Fix DCN5/6 DML2 compilation warnings.
* Fix DCN60 DPP PRE_GAM offset, HDMI link rate and DSC handling.
* Fix backlight control for luminance-capable OLED.
* Restore native cursor mode early return for disabled CRTCs.
* Fix NULL hubp deref and CalculateFlipSchedule ordering.
* Remove duplicated fixpt and custom float code.
* Drop pipe_ctx param from MPC_VISUAL_CONFIRM.
* Move cursor SDR white level calc out of the hwss executor.
* Set gpuvm min page size to 4K on DCN35/36.
* Update RBBMIF timeout control conditions.
* Guard DAL port idle optimizations by ASIC rev.
* Re-enable multi-dwb support and clean up per-DPM struct.
* Add max_downscale_src_width debugfs for IGT validation.
* Expand amdgpu_dm KUnit coverage.
Cc: Dan Wheeler <[email protected]>
Alex Hung (34):
drm/amd/display: Test ISM idle commit
drm/amd/display: Test ISM idle exit arms
drm/amd/display: Test ISM delayed workers
drm/amd/display: Test colorop error paths
drm/amd/display: Model ASSERT as path terminator
drm/amd/display: Test backlight caps validation
drm/amd/display: Skip ACPI backlight caps test
drm/amd/display: Test vblank counter and scanout position
drm/amd/display: Test DM atomic private state helpers
drm/amd/display: Test affected MST DSC CRTC selection
drm/amd/display: Test cursor commit
drm/amd/display: Test vblank event arming
drm/amd/display: Test page flip interrupt state update
drm/amd/display: Test CRTC memory domain change detection
drm/amd/display: Test PSR dirty rectangle filling
drm/amd/display: Test plane reset decision
drm/amd/display: Test link and sink dump
drm/amd/display: Test HDCP update
drm/amd/display: Test global modeset lock acquisition
drm/amd/display: Test timing sync trigger
drm/amd/display: Test IP block teardown and link emulation
drm/amd/display: Test mod_power stream updates on modeset
drm/amd/display: Test atomic commit setup
drm/amd/display: Test MMHUB config read
drm/amd/display: Test power module init
drm/amd/display: Test vline0 irq control
drm/amd/display: Test DMCU firmware load
drm/amd/display: Test SW init and fini
drm/amd/display: Test DM late init
drm/amd/display: Test mode and plane init
drm/amd/display: Test DM early init
drm/amd/display: Test DC plane info fill
drm/amd/display: Test DC plane attributes
drm/amd/display: Test MST VCPI slot calc
Alvin Lee (1):
drm/amd/display: Fix DPP PRE_GAM register offset on DCN60
Austin Zheng (5):
drm/amd/display: Preparations To Move DML Wrapper Out Of DML
drm/amd/display: Clean up Per-DPM Struct
drm/amd/display: Fix Order Of Operation In Calculate Flip Schedule
drm/amd/display: Remove const Qualifier From Non-Pointer Fields
drm/amd/display: Move DML Wrapper into its own Component
Dillon Varone (3):
drm/amd/display: Guard DAL port idle optimizations by ASIC rev
drm/amd/display: Re-enable multi-dwb support
drm/amd/display: Change RBBMIF timeout control conditions
Hansen Dsouza (1):
drm/amd/display: Add debug bit for force p2cpm
Ivan Lipski (1):
drm/amd/display: Fix DCN5/6 DML2 compilation warnings
James Lin (1):
drm/amd/display: Avoid NULL hubp deref for remaining mpcc_id
assignment
Peichen Huang (1):
drm/amd/display: Do not use panel_inst in pr
Relja Vojvodic (1):
drm/amd/display: Update HDMI link rate and DSC handling for DCN60
Roman Li (3):
drm/amd/display: Set gpuvm min page size to 4K on dcn35/36
drm/amd/display: Fix backlight control for luminance-capable OLED
drm/amd/display: Apply debug bit for force p2cpm
Samson Tam (3):
drm/amd/display: Move custom float structures from opp.h to
custom_float.h
drm/amd/display: Remove fixpt and custom float duplicated code
drm/amd/display: Remove internal references
Taimur Hassan (1):
drm/amd/display: Promote DC to 3.2.396
Tom Chung (1):
drm/amd/display: Restore the native cursor mode early return for
disabled CRTCs
Tomasz Siemek (2):
drm/amd/display: Move cursor SDR white level calculation out of hwss
executor
drm/amd/display: Remove pipe_ctx param from MPC_VISUAL_CONFIRM
Tony Qi (1):
drm/amd/display: Add max_downscale_src_width debugfs for IGT
validation
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 187 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 77 +
.../display/amdgpu_dm/amdgpu_dm_backlight.c | 41 +-
.../display/amdgpu_dm/amdgpu_dm_backlight.h | 1 +
.../amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 110 +-
.../amd/display/amdgpu_dm/amdgpu_dm_colorop.h | 28 +
.../amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 40 +-
.../amd/display/amdgpu_dm/amdgpu_dm_crtc.h | 1 +
.../amd/display/amdgpu_dm/amdgpu_dm_cursor.c | 17 +-
.../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 +
.../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 8 +
.../tests/amdgpu_dm_backlight_test.c | 53 +-
.../amdgpu_dm/tests/amdgpu_dm_colorop_test.c | 232 +-
.../amdgpu_dm/tests/amdgpu_dm_crtc_test.c | 101 +
.../amdgpu_dm/tests/amdgpu_dm_ism_test.c | 367 +-
.../display/amdgpu_dm/tests/amdgpu_dm_test.c | 3552 +++++++++++++++++
drivers/gpu/drm/amd/display/dc/Makefile | 1 +
.../display/dc/clk_mgr/dcn60/dcn60_clk_mgr.c | 3 +
drivers/gpu/drm/amd/display/dc/core/dc.c | 5 +-
.../drm/amd/display/dc/core/dc_hw_sequencer.c | 75 +-
.../drm/amd/display/dc/core/dc_link_exports.c | 3 +-
.../gpu/drm/amd/display/dc/core/dc_resource.c | 2 +-
.../gpu/drm/amd/display/dc/core/dc_state.c | 4 +-
drivers/gpu/drm/amd/display/dc/dc.h | 5 +-
drivers/gpu/drm/amd/display/dc/dc_types.h | 3 +-
.../drm/amd/display/dc/dml/dcn30/dcn30_fpu.c | 18 +-
.../drm/amd/display/dc/dml/dml1_frl_cap_chk.c | 8 +-
.../gpu/drm/amd/display/dc/dml2_0/Makefile | 13 +-
.../display/dc/dml2_0/dml21/dml21_wrapper.h | 106 -
.../dml21/inc/dml_top_soc_parameter_types.h | 32 +-
.../dml2_core/dml2_core_dcn5_calcs_dchub.c | 8 +-
.../dml2_core_dcn5_funcs_mode_programming.c | 4 +-
.../dml2_core_dcn5_funcs_mode_support.c | 5 -
.../dml2_core/dml2_core_dcn6_calcs_dchub.c | 4 +-
.../dml2_core_dcn6_funcs_mode_support.c | 4 -
.../src/dml2_core/dml2_core_shared_types.h | 4 +-
.../dml2_pmo/dml2_pmo_dcn6_stage_optimizers.c | 2 +-
.../drm/amd/display/dc/dml2_wrapper/Makefile | 61 +
.../dml21_wrapper}/dml21_translation_helper.c | 15 +-
.../dml21_wrapper}/dml21_translation_helper.h | 7 +-
.../dml21_wrapper}/dml21_utils.c | 11 +-
.../dml21_wrapper}/dml21_utils.h | 7 +-
.../dml21_wrapper}/dml21_wrapper.c | 2 +-
.../dml21_wrapper/dml21_wrapper.h | 107 +
.../dml21_wrapper}/dml21_wrapper_fpu.c | 19 +-
.../dml21_wrapper}/dml21_wrapper_fpu.h | 7 +-
.../dml2_dc_resource_mgmt.c | 60 +-
.../dml2_dc_resource_mgmt.h | 0
.../{dml2_0 => dml2_wrapper}/dml2_dc_types.h | 0
.../dml2_internal_types.h | 2 +-
.../dml2_mall_phantom.c | 70 +-
.../dml2_mall_phantom.h | 0
.../dc/{dml2_0 => dml2_wrapper}/dml2_policy.c | 2 +-
.../dc/{dml2_0 => dml2_wrapper}/dml2_policy.h | 0
.../dml2_translation_helper.c | 21 +-
.../dml2_translation_helper.h | 0
.../dc/{dml2_0 => dml2_wrapper}/dml2_utils.c | 28 +-
.../dc/{dml2_0 => dml2_wrapper}/dml2_utils.h | 0
.../{dml2_0 => dml2_wrapper}/dml2_wrapper.c | 6 +-
.../{dml2_0 => dml2_wrapper}/dml2_wrapper.h | 0
.../dml2_wrapper_fpu.c | 45 +-
.../dml2_wrapper_fpu.h | 0
.../drm/amd/display/dc/dpp/dcn50/dcn50_dpp.h | 11 +-
.../drm/amd/display/dc/dpp/dcn60/dcn60_dpp.h | 7 +-
drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c | 8 +
.../drm/amd/display/dc/dsc/dcn60/dcn60_dsc.c | 4 +-
.../hpo/dcn60/dcn60_hpo_frl_stream_encoder.c | 131 +-
.../amd/display/dc/hubp/dcn21/dcn21_hubp.c | 6 +-
.../amd/display/dc/hubp/dcn21/dcn21_hubp.h | 2 +-
.../amd/display/dc/hubp/dcn30/dcn30_hubp.c | 2 +-
.../amd/display/dc/hwss/dcn10/dcn10_hwseq.c | 26 +-
.../amd/display/dc/hwss/dcn20/dcn20_hwseq.c | 4 -
.../amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 3 +-
.../amd/display/dc/hwss/dcn50/dcn50_hwseq.c | 3 +-
.../drm/amd/display/dc/hwss/hw_sequencer.h | 11 +-
.../gpu/drm/amd/display/dc/inc/custom_float.h | 21 +-
drivers/gpu/drm/amd/display/dc/inc/hw/opp.h | 14 +-
.../gpu/drm/amd/display/dc/inc/link_service.h | 2 +-
.../drm/amd/display/dc/link/link_detection.c | 2 +
.../drm/amd/display/dc/link/link_factory.c | 2 +-
.../dc/link/protocols/link_dp_panel_replay.c | 36 +-
.../dc/link/protocols/link_dp_panel_replay.h | 2 +-
.../link/protocols/link_edp_panel_control.c | 47 +-
drivers/gpu/drm/amd/display/dc/os_types.h | 18 +
.../dc/resource/dcn32/dcn32_resource.c | 2 +-
.../dc/resource/dcn35/dcn35_resource.c | 2 +-
.../dc/resource/dcn351/dcn351_resource.c | 2 +-
.../dc/resource/dcn36/dcn36_resource.c | 2 +-
.../dc/resource/dcn401/dcn401_resource.c | 2 +-
.../dc/resource/dcn42/dcn42_resource.c | 2 +-
.../dc/resource/dcn42b/dcn42b_resource.c | 2 +-
.../dc/resource/dcn60/dcn60_resource.c | 4 +-
drivers/gpu/drm/amd/display/dc/sspl/Makefile | 5 +-
drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c | 130 +-
.../display/dc/sspl/dc_spl_isharp_filters.c | 10 +-
.../display/dc/sspl/dc_spl_scl_easf_filters.c | 88 +-
.../amd/display/dc/sspl/dc_spl_scl_filters.c | 24 +-
.../drm/amd/display/dc/sspl/dc_spl_types.h | 60 +-
.../amd/display/dc/sspl/spl_custom_float.c | 152 -
.../amd/display/dc/sspl/spl_custom_float.h | 29 -
.../drm/amd/display/dc/sspl/spl_fixpt31_32.c | 495 ---
.../drm/amd/display/dc/sspl/spl_fixpt31_32.h | 526 ---
.../drm/amd/display/dc/sspl/spl_namespace.h | 17 +
.../drm/amd/display/dc/sspl/spl_os_types.h | 43 +-
104 files changed, 5459 insertions(+), 2114 deletions(-) delete mode 100644
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.h
create mode 100644 drivers/gpu/drm/amd/display/dc/dml2_wrapper/Makefile
rename drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_translation_helper.c (99%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_translation_helper.h (94%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_utils.c (99%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_utils.h (96%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_wrapper.c (100%) create mode 100644
drivers/gpu/drm/amd/display/dc/dml2_wrapper/dml21_wrapper/dml21_wrapper.h
rename drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_wrapper_fpu.c (96%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0/dml21 =>
dml2_wrapper/dml21_wrapper}/dml21_wrapper_fpu.h (95%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_dc_resource_mgmt.c
(96%) rename drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_dc_resource_mgmt.h (100%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_dc_types.h (100%)
rename drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_internal_types.h (99%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_mall_phantom.c
(97%) rename drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_mall_phantom.h (100%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_policy.c (99%)
rename drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_policy.h
(100%) rename drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_translation_helper.c (99%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_translation_helper.h (100%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_utils.c (98%)
rename drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_utils.h
(100%) rename drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_wrapper.c (97%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_wrapper.h (100%)
rename drivers/gpu/drm/amd/display/dc/{dml2_0 =>
dml2_wrapper}/dml2_wrapper_fpu.c (93%) rename
drivers/gpu/drm/amd/display/dc/{dml2_0 => dml2_wrapper}/dml2_wrapper_fpu.h
(100%) delete mode 100644
drivers/gpu/drm/amd/display/dc/sspl/spl_custom_float.c
delete mode 100644 drivers/gpu/drm/amd/display/dc/sspl/spl_custom_float.h
delete mode 100644 drivers/gpu/drm/amd/display/dc/sspl/spl_fixpt31_32.c
delete mode 100644 drivers/gpu/drm/amd/display/dc/sspl/spl_fixpt31_32.h
create mode 100644 drivers/gpu/drm/amd/display/dc/sspl/spl_namespace.h
--
2.43.0