STRUCT DRM_DISPLAY_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct drm_display_info(9) πŸ’–

okay bestie, welcome to the Kernel API Manual page for struct drm_display_info β€” and yes, this is literally the runtime data about the connected sink. no cap, we're getting into every single field πŸ’…


✨ NAME ✨

struct drm_display_info β€” runtime data about the connected sink 🫢


🌸 SYNOPSIS 🌸

struct drm_display_info {
    unsigned int width_mm;
    unsigned int height_mm;
    unsigned int bpc;
    enum subpixel_order subpixel_order;
    int panel_orientation;
    u32 color_formats;
    const u32 *bus_formats;
    unsigned int num_bus_formats;
    u32 bus_flags;
    int max_tmds_clock;
    bool dvi_dual;
    bool is_hdmi;
    bool has_audio;
    bool has_hdmi_infoframe;
    bool rgb_quant_range_selectable;
    u8 edid_hdmi_rgb444_dc_modes;
    u8 edid_hdmi_ycbcr444_dc_modes;
    u8 cea_rev;
    struct drm_hdmi_info hdmi;
    struct hdr_sink_metadata hdr_sink_metadata;
    bool non_desktop;
    struct drm_monitor_range_info monitor_range;
    struct drm_luminance_range_info luminance_range;
    u8 mso_stream_count;
    u8 mso_pixel_overlap;
    u32 max_dsc_bpp;
    u8 *vics;
    int vics_len;
    u32 quirks;
    u16 source_physical_address;
    struct drm_amd_vsdb_info amd_vsdb;
    u8 panel_type;
};

πŸŽ€ Members πŸŽ€

okay so these are all the fields, bestie β€” every one, no skipping, no "oops I forgot one" energy:

  • width_mm β€” Physical width in mm.
  • height_mm β€” Physical height in mm.
  • bpc β€” Maximum bits per color channel. Used by HDMI and DP outputs.
  • subpixel_order β€” Subpixel order of LCD panels.
  • panel_orientation β€” Read only connector property for built-in panels, indicating the orientation of the panel vs the device's casing. drm_connector_init sets this to DRM_MODE_PANEL_ORIENTATION_UNKNOWN. When not UNKNOWN this gets used by the drm_fb_helpers to rotate the fb to compensate and gets exported as prop to userspace.
  • color_formats β€” HDMI Color formats, selects between RGB and YCbCr modes. Uses a bitmask of DRM_OUTPUT_COLOR_FORMAT_ defines, which are _not_ the same ones as used to describe the pixel format in framebuffers, and also don't match the formats in bus_formats which are shared with v4l.
  • bus_formats β€” Pixel data format on the wire, somewhat redundant with color_formats. Array of size num_bus_formats encoded using MEDIA_BUS_FMT_ defines shared with v4l and media drivers.
  • num_bus_formats β€” Size of bus_formats array.
  • bus_flags β€” Additional information (like pixel signal polarity) for the pixel data on the bus, using enum drm_bus_flags values DRM_BUS_FLAGS_.
  • max_tmds_clock β€” Maximum TMDS clock rate supported by the sink in kHz. 0 means undefined.
  • dvi_dual β€” Dual-link DVI sink?
  • is_hdmi β€” True if the sink is an HDMI device. This field shall be used instead of calling drm_detect_hdmi_monitor when possible.
  • has_audio β€” True if the sink supports audio. This field shall be used instead of calling drm_detect_monitor_audio when possible.
  • has_hdmi_infoframe β€” Does the sink support the HDMI infoframe?
  • rgb_quant_range_selectable β€” Does the sink support selecting the RGB quantization range?
  • edid_hdmi_rgb444_dc_modes β€” Mask of supported hdmi deep color modes in RGB 4:4:4. Even more stuff redundant with bus_formats.
  • edid_hdmi_ycbcr444_dc_modes β€” Mask of supported hdmi deep color modes in YCbCr 4:4:4. Even more stuff redundant with bus_formats.
  • cea_rev β€” CEA revision of the HDMI sink.
  • hdmi β€” advance features of a HDMI sink.
  • hdr_sink_metadata β€” HDR Metadata Information read from sink
  • non_desktop β€” Non desktop display (HMD).
  • monitor_range β€” Frequency range supported by monitor range descriptor
  • luminance_range β€” Luminance range supported by panel
  • mso_stream_count β€” eDP Multi-SST Operation (MSO) stream count from the DisplayID VESA vendor block. 0 for conventional Single-Stream Transport (SST), or 2 or 4 MSO streams.
  • mso_pixel_overlap β€” eDP MSO segment pixel overlap, 0-8 pixels.
  • max_dsc_bpp β€” Maximum DSC target bitrate, if it is set to 0 the monitor's default value is used instead.
  • vics β€” Array of vics_len VICs. Internal to EDID parsing.
  • vics_len β€” Number of elements in vics. Internal to EDID parsing.
  • quirks β€” EDID based quirks. DRM core and drivers can query the drm_edid_quirk quirks using drm_edid_has_quirk, the rest of the quirks also tracked here are internal to EDID parsing.
  • source_physical_address β€” Source Physical Address from HDMI Vendor-Specific Data Block, for CEC usage. Defaults to CEC_PHYS_ADDR_INVALID (0xffff).
  • amd_vsdb β€” AMD-specific VSDB information.
  • panel_type β€” Panel type from DisplayID Display Parameters Data Block (tag 0x21). Uses DRM_MODE_PANEL_TYPE_* constants.

πŸ¦‹ Description πŸ¦‹

Describes a given display (e.g. CRT or flat panel) and its limitations. For fixed display sinks like built-in panels there's not much difference between this and struct drm_connector. But for sinks with a real cable this structure is meant to describe all the things at the other end of the cable.

For sinks which provide an EDID this can be filled out by calling drm_add_edid_modes.


πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./include/drm/drm_connector.h β€” and all the besties it brought with it:

  • enum drm_connector_status(9)
  • enum drm_connector_registration_state(9)
  • enum drm_connector_tv_mode(9)
  • struct drm_scrambling(9)
  • struct drm_hdmi_dsc_cap(9)
  • struct drm_hdmi_info(9)
  • enum drm_link_status(9)
  • enum drm_panel_orientation(9)
  • enum drm_hdmi_broadcast_rgb(9)
  • struct drm_monitor_range_info(9)
  • struct drm_luminance_range_info(9)
  • enum drm_privacy_screen_status(9)
  • enum drm_colorspace(9)
  • enum drm_output_color_format(9)
  • enum drm_connector_color_format(9)
  • enum drm_bus_flags(9)
  • struct drm_amd_vsdb_info(9)
  • struct drm_connector_tv_margins(9)
  • struct drm_tv_connector_state(9)
  • struct drm_connector_hdmi_infoframe(9)
  • struct drm_connector_state(9)
  • struct drm_connector_cec_funcs(9)
  • struct drm_connector_infoframe_funcs(9)
  • struct drm_connector_hdmi_funcs(9)
  • struct drm_connector_funcs(9)
  • struct drm_cmdline_mode(9)
  • struct drm_connector_hdmi_audio(9)
  • struct drm_connector_cec(9)
  • struct drm_connector(9)
  • drm_connector_lookup(9)
  • drm_connector_get(9)
  • drm_connector_put(9)
  • drm_connector_is_unregistered(9)
  • struct drm_tile_group(9)
  • struct drm_connector_list_iter(9)
  • drm_for_each_connector_iter(9)
  • drm_connector_for_each_possible_encoder(9)

that's the whole glow-up, bestie β€” source ./include/drm, dated October 2026, for struct drm_display_info(9). slay and read the docs πŸ’–βœ¨

πŸ“¦ where this page comes from