dm_test_par...o_extensions(9)
π NAME π
okay bestie, gather round β this is dm_test_parse_hdmi_amd_vsdb_no_extensions, and yes that name is a whole mouthful, we're aware. It's a test for EDID without extensions. That's the whole vibe. It's a KUnit test that checks what happens when the EDID shows up with zero extension blocks. Periodt.
This page lives in the Kernel API Manual (kernel docs, very demure, very mindful), so likeβ¦ yeah. Let's go. π¦
β¨ SYNOPSIS β¨
void dm_test_parse_hdmi_amd_vsdb_no_extensions (struct kunit *test );
That's it. That's the whole function signature. Iconic, honestly. π
π«Ά ARGUMENTS π«Ά
testβ the KUnit test context. Basically the little test-world it lives in. It's giving "here's your playground, have fun". π
πΈ DESCRIPTION πΈ
okay so picture this: an EDID that declares no extension blocks. And like⦠that's the entire point. If there are no extension blocks, then there is no CEA block to parse. None. Zero. Doesn't exist. Not a single byte of CEA to look at.
So this here test is the "what even happens in that case" test. No CEA block to parse, no problem β that's what we're testing. Slay. π
π SEE ALSO π
omg bestie the reading list. It's long. It's giving syllabus. But every single one of these is a real test in the same family, so likeβ¦ enjoy the lore. I'm not skipping a single one, fr fr. πβ¨
First up, the subconnector squad:
dm_test_subconnector_type_none(9)dm_test_subconnector_type_vga(9)dm_test_subconnector_type_dvi_converter(9)dm_test_subconnector_type_dvi_dongle(9)dm_test_subconnector_type_hdmi_converter(9)dm_test_subconnector_type_hdmi_dongle(9)dm_test_subconnector_type_mismatched(9)dm_test_subconnector_type_default_unknown(9)
then the content-type girlies:
dm_test_content_type_no_data(9)dm_test_content_type_graphics(9)dm_test_content_type_photo(9)dm_test_content_type_cinema(9)dm_test_content_type_game(9)dm_test_content_type_unknown_defaults_no_data(9)
colour depth adjustments, we love a glow-up:
dm_test_adjust_colour_depth_fits_at_888(9)dm_test_adjust_colour_depth_reduces_to_888(9)dm_test_adjust_colour_depth_10bpc_passes(9)dm_test_adjust_colour_depth_420_halves_clk(9)dm_test_adjust_colour_depth_420_reduces(9)dm_test_adjust_colour_depth_reduces_12bpc_to_10bpc(9)dm_test_adjust_colour_depth_16bpc_no_fallback(9)dm_test_adjust_colour_depth_none_fits(9)dm_test_adjust_colour_depth_invalid_depth(9)
output colour space, the full collection (yes, all of them, I said what I said):
dm_test_output_color_space_default_rgb_full(9)dm_test_output_color_space_default_rgb_limited(9)dm_test_output_color_space_default_ycbcr709(9)dm_test_output_color_space_default_ycbcr601_limited(9)dm_test_output_color_space_bt601_y_only(9)dm_test_output_color_space_bt601(9)dm_test_output_color_space_bt709(9)dm_test_output_color_space_bt709_y_only(9)dm_test_output_color_space_oprgb(9)dm_test_output_color_space_bt2020_rgb(9)dm_test_output_color_space_bt2020_rgb_limited(9)dm_test_output_color_space_default_rgb_auto_hdmi_cta(9)dm_test_output_color_space_default_rgb_auto_hdmi_vga(9)dm_test_output_color_space_default_rgb_auto_dp_cta(9)dm_test_output_color_space_default_rgb_full_hdmi_cta(9)dm_test_output_color_space_bt2020_rgb_auto_hdmi_cta(9)dm_test_output_color_space_bt2020_ycc(9)dm_test_output_color_space_default_ycbcr709_y_only(9)dm_test_output_color_space_default_ycbcr601(9)dm_test_output_color_space_bt2020_ycc_rgb_encoding(9)dm_test_output_color_space_bt2020_ycc_rgb_encoding_limited(9)dm_test_output_color_space_bt2020_rgb_ycc_encoding(9)
converting depths and pulling depth info:
dm_test_convert_color_depth_bpc_mappings(9)dm_test_convert_color_depth_bpc_unknown(9)dm_test_color_depth_from_info_bpc8(9)dm_test_color_depth_from_info_bpc10(9)dm_test_color_depth_from_info_zero_bpc_defaults_888(9)dm_test_color_depth_from_info_requested_bpc_caps(9)dm_test_color_depth_from_info_y420_default(9)dm_test_color_depth_from_info_y420_10bpc(9)dm_test_color_depth_from_info_y420_12bpc(9)dm_test_color_depth_from_info_y420_16bpc(9)dm_test_color_depth_from_info_requested_odd_bpc(9)dm_test_color_depth_from_info_unsupported_bpc(9)
connector types (the whole roster):
dm_test_to_connector_type_hdmi(9)dm_test_to_connector_type_edp(9)dm_test_to_connector_type_lvds(9)dm_test_to_connector_type_rgb(9)dm_test_to_connector_type_dp(9)dm_test_to_connector_type_dp_mst(9)dm_test_to_connector_type_dvi_dvii(9)dm_test_to_connector_type_dual_link_dvii(9)dm_test_to_connector_type_dvi_dvid(9)dm_test_to_connector_type_dual_link_dvid(9)dm_test_to_connector_type_virtual(9)dm_test_to_connector_type_unknown(9)
duplicate mode detection:
dm_test_is_duplicate_mode_empty_list(9)dm_test_is_duplicate_mode_match(9)dm_test_is_duplicate_mode_no_match(9)dm_test_is_duplicate_mode_same_size_different_clock(9)
crtc masks, one through six plus the default:
dm_test_encoder_crtc_mask_1(9)dm_test_encoder_crtc_mask_2(9)dm_test_encoder_crtc_mask_3(9)dm_test_encoder_crtc_mask_4(9)dm_test_encoder_crtc_mask_5(9)dm_test_encoder_crtc_mask_6(9)dm_test_encoder_crtc_mask_default(9)
aspect ratios π₯:
dm_test_aspect_ratio_no_data(9)dm_test_aspect_ratio_4_3(9)dm_test_aspect_ratio_16_9(9)dm_test_aspect_ratio_64_27(9)dm_test_aspect_ratio_256_135(9)
timing copying decisions:
dm_test_copy_crtc_timing_copies_all_fields(9)dm_test_copy_crtc_timing_leaves_non_crtc_fields(9)dm_test_decide_crtc_timing_scale_enabled(9)dm_test_decide_crtc_timing_matching_mode(9)dm_test_decide_crtc_timing_no_copy(9)dm_test_decide_crtc_timing_no_crtc_clock(9)
funcs reset behaviour:
dm_test_funcs_reset_sets_defaults(9)dm_test_funcs_reset_edp_abm_level(9)dm_test_funcs_reset_edp_abm_disabled(9)
and the stragglers in this neighbourhood:
dm_test_atomic_dup_state_copies_fields(9)dm_test_fill_hdr_null_metadata(9)dm_test_fill_hdr_zeroes_output(9)
property setting, we love a property setter:
dm_test_set_property_scaling_center(9)dm_test_set_property_scaling_aspect(9)dm_test_set_property_scaling_fullscreen(9)dm_test_set_property_scaling_none(9)dm_test_set_property_scaling_unchanged(9)dm_test_set_property_underscan_hborder(9)dm_test_set_property_underscan_vborder(9)dm_test_set_property_underscan_enable(9)dm_test_set_property_abm_sysfs_control(9)dm_test_set_property_abm_level_off(9)dm_test_set_property_abm_level_value(9)dm_test_set_property_unknown(9)
and now the getters (matching set, as is tradition):
dm_test_get_property_scaling_center(9)dm_test_get_property_scaling_aspect(9)dm_test_get_property_scaling_full(9)dm_test_get_property_scaling_off(9)dm_test_get_property_underscan_borders(9)dm_test_get_property_abm_sysfs_allowed(9)dm_test_get_property_abm_level(9)dm_test_get_property_abm_disabled_zero(9)dm_test_get_property_unknown(9)
refresh rate + freesync detection:
dm_test_highest_refresh_writeback_null(9)dm_test_highest_refresh_cached_base(9)dm_test_highest_refresh_preferred_mode(9)dm_test_is_freesync_video_mode_null_mode(9)dm_test_is_freesync_video_mode_match(9)dm_test_is_freesync_video_mode_no_match(9)
CACP caps, round one:
dm_test_cacp_caps_unsupported_ip(9)dm_test_cacp_caps_excluded_ip_316(9)dm_test_cacp_caps_edp_oled_supported(9)dm_test_cacp_caps_lvds_oled_supported(9)dm_test_cacp_caps_non_edp_signal(9)dm_test_cacp_caps_lcd_panel(9)
panel type setting, part one:
dm_test_set_panel_type_vsdb_oled(9)dm_test_set_panel_type_vsdb_miniled(9)dm_test_set_panel_type_dpcd_oled(9)dm_test_set_panel_type_dpcd_miniled(9)dm_test_set_panel_type_did_oled(9)dm_test_set_panel_type_did_lcd(9)dm_test_set_panel_type_vendor_lum_heuristic(9)dm_test_set_panel_type_defaults_to_lcd(9)
subconnector updates + fbc init:
dm_test_update_subconnector_dp_with_sink(9)dm_test_update_subconnector_dp_no_sink(9)dm_test_update_subconnector_non_dp_noop(9)dm_test_fbc_init_no_compressor(9)dm_test_fbc_init_non_edp(9)dm_test_fbc_init_already_allocated(9)dm_test_fbc_init_no_modes(9)
MST detection:
dm_test_detect_mst_no_connectors(9)dm_test_detect_mst_skips_writeback(9)dm_test_detect_mst_non_mst_link(9)dm_test_detect_mst_branch_without_aux(9)
finding the first crtc:
dm_test_find_first_crtc_match(9)dm_test_find_first_crtc_no_match(9)dm_test_find_first_crtc_empty_state(9)dm_test_find_first_crtc_skips_null_ptr(9)dm_test_find_first_crtc_returns_first(9)
panel type, the sequel:
dm_test_set_panel_type_samsung_miniled(9)dm_test_set_panel_type_samsung_below_threshold(9)dm_test_set_panel_type_default_lcd(9)
CACP caps, the sequel (yes there are more, stay with me):
dm_test_cacp_caps_edp_supported(9)dm_test_cacp_caps_lvds_supported(9)dm_test_cacp_caps_old_ip_unsupported(9)dm_test_cacp_caps_ip_3_1_6_unsupported(9)dm_test_cacp_caps_non_edp_lvds_unsupported(9)dm_test_cacp_caps_lcd_unsupported(9)
filling stream fields, honestly a serve:
dm_test_fill_stream_borders_zeroed(9)dm_test_fill_stream_rgb_defaults(9)dm_test_fill_stream_sync_polarity_positive(9)dm_test_fill_stream_sync_polarity_negative(9)dm_test_fill_stream_inherits_old_stream(9)dm_test_fill_stream_timing_from_crtc(9)dm_test_fill_stream_color_depth_requested_bpc(9)dm_test_fill_stream_content_type(9)dm_test_fill_stream_aspect_ratio(9)dm_test_fill_stream_encoding_from_caller_ycbcr420(9)dm_test_fill_stream_encoding_from_caller_ycbcr422(9)dm_test_fill_stream_encoding_from_caller_ycbcr444(9)dm_test_fill_stream_hdmi_ep_clamps_depth(9)dm_test_fill_stream_non_hdmi_ep_keeps_depth(9)
creating streams:
dm_test_create_stream_fake_sink_success(9)dm_test_create_stream_sets_dm_context(9)dm_test_create_stream_virtual_signal(9)dm_test_create_stream_scaling_src(9)dm_test_create_stream_existing_sink(9)
detection, all the flavours:
dm_test_detect_force_on(9)dm_test_detect_force_on_digital(9)dm_test_detect_force_off(9)dm_test_detect_sink_present(9)dm_test_detect_no_sink(9)
misc but make it cute:
dm_test_poll_dac_load_returns_cached(9)dm_test_late_register_non_dp_succeeds(9)dm_test_unregister_non_dp_noop(9)dm_test_destroy_minimal(9)dm_test_destroy_releases_dc_sink(9)dm_test_destroy_releases_dc_em_sink(9)dm_test_encoder_disable_noop(9)
atomic check trio:
dm_test_atomic_check_edp_native_keeps_scaling(9)dm_test_atomic_check_lvds_non_native_enables_scaling(9)dm_test_atomic_check_non_mst_returns_zero(9)
HDMI CEC + EDID management:
dm_test_hdmi_cec_unset_edid_no_notifier(9)dm_test_create_eml_sink_no_edid(9)dm_test_handle_edid_mgmt_dp_sets_link_caps(9)dm_test_handle_edid_mgmt_non_dp_leaves_caps(9)dm_test_funcs_force_no_edid(9)
stream validation + encoders + native modes:
dm_test_validate_stream_null_stream(9)dm_test_to_encoder_no_encoder(9)dm_test_to_encoder_returns_attached(9)dm_test_native_mode_no_encoder(9)dm_test_native_mode_empty_probed_zeroes_clock(9)dm_test_native_mode_copies_preferred(9)
common modes + freesync modes + ddc/i2c:
dm_test_create_common_mode_overrides(9)dm_test_add_common_modes_non_edp_noop(9)dm_test_add_common_modes_edp_adds(9)dm_test_ddc_get_modes_null_edid(9)dm_test_add_fs_modes_no_preferred_mode(9)dm_test_add_freesync_modes_null_edid_noop(9)dm_test_i2c_func_returns_flags(9)dm_test_i2c_xfer_no_ddc_pin(9)
AMD VSDB + DisplayID VRR parsing:
dm_test_get_amd_vsdb_unsupported(9)dm_test_get_amd_vsdb_supported(9)dm_test_parse_hdmi_amd_vsdb_null_edid(9)dm_test_parse_hdmi_amd_vsdb_no_cea_ext(9)dm_test_parse_displayid_vrr_null_edid(9)dm_test_parse_displayid_vrr_no_displayid(9)dm_test_parse_displayid_vrr_sets_range(9)
mode validation + CEC suspend/resume:
dm_test_mode_valid_interlace_rejected(9)dm_test_mode_valid_dblscan_rejected(9)dm_test_hdmi_cec_set_edid_no_notifier(9)dm_test_s3_handle_hdmi_cec_suspend(9)dm_test_s3_handle_hdmi_cec_resume(9)
the final batch, saving the best for last:
dm_test_create_validate_stream_null_dm_state(9)dm_test_update_after_detect_mst_noop(9)dm_test_update_after_detect_sink_unchanged(9)dm_test_update_scaling_null_mode(9)dm_test_update_scaling_fullscreen_default(9)dm_test_update_scaling_rmx_full(9)dm_test_update_scaling_rmx_aspect_pillarbox(9)dm_test_update_scaling_rmx_aspect_letterbox(9)dm_test_update_scaling_rmx_center(9)dm_test_update_scaling_underscan(9)
ok and before anyone comes for me β the actual source file for all of this lives right here:
./drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
that's the kernel file, that's where the whole test family hangs out. iykyk π§
and that's the whole page, bestie!! π no cap, you now know everything this one test does. this lil writeup is from the Kernel API Manual, and the footer situation is ./drivers/gpu/drm/amd/display/... with an October 2026 date stamp β so like, future vibes only. πβ¨ see u in the next dm_test_*(9) π«Άπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms