|
XenevaOS
|
#include <drm_mode_config.h>

struct drm_mode_config - Mode configuration control structure @min_width: minimum fb pixel width on this device @min_height: minimum fb pixel height on this device @max_width: maximum fb pixel width on this device @max_height: maximum fb pixel height on this device @funcs: core driver provided mode setting functions @poll_enabled: track polling support for this device @poll_running: track polling status for this device @delayed_event: track delayed poll uevent deliver for this device @output_poll_work: delayed work for polling in process context @preferred_depth: preferred RBG pixel depth, used by fb helpers @prefer_shadow: hint to userspace to prefer shadow-fb rendering @cursor_width: hint to userspace for max cursor width @cursor_height: hint to userspace for max cursor height @helper_private: mid-layer private data
Core mode resource tracking structure. All CRTC, encoders, and connectors enumerated by the driver are added here, as are global properties. Some global restrictions are also here, e.g. dimension restrictions.
Framebuffer sizes refer to the virtual screen that can be displayed by the CRTC. This can be different from the physical resolution programmed. The minimum width and height, stored in @min_width and @min_height, describe the smallest size of the framebuffer. It correlates to the minimum programmable resolution. The maximum width, stored in @max_width, is typically limited by the maximum pitch between two adjacent scanlines. The maximum height, stored in @max_height, is usually only limited by the amount of addressable video memory. For hardware that has no real maximum, drivers should pick a reasonable default.
See also @DRM_SHADOW_PLANE_MAX_WIDTH and @DRM_SHADOW_PLANE_MAX_HEIGHT.
| struct drm_modeset_acquire_ctx* drm_mode_config::acquire_ctx |
@acquire_ctx:
Global implicit acquire context used by atomic drivers for legacy IOCTLs. Deprecated, since implicit locking contexts make it impossible to use driver-private &struct drm_modeset_lock. Users of this must hold @mutex.
| struct drm_property* drm_mode_config::aspect_ratio_property |
@aspect_ratio_property: Optional connector property to control the HDMI infoframe aspect ratio setting.
| struct drm_property* drm_mode_config::async_modifiers_property |
@async_modifiers_property: Plane property to list support modifier/format combination for asynchronous flips.
| bool drm_mode_config::async_page_flip |
@async_page_flip: Does this device support async flips on the primary plane?
| struct drm_property* drm_mode_config::background_color_property |
@background_color_property: Optional CRTC property to set the background color.
| struct mutex drm_mode_config::blob_lock |
@blob_lock:
Mutex for blob property allocation and management, protects @property_blob_list and &drm_file.blobs.
| struct list_head drm_mode_config::colorop_list |
@colorop_list:
List of colorop objects linked with &drm_colorop.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| struct drm_modeset_lock drm_mode_config::connection_mutex |
@connection_mutex:
This protects connector state and the connector to encoder to CRTC routing chain.
For atomic drivers specifically this protects &drm_connector.state.
| struct llist_head drm_mode_config::connector_free_list |
@connector_free_list:
List of connector objects linked with &drm_connector.free_head. Protected by @connector_list_lock. Used by drm_for_each_connector_iter() and &struct drm_connector_list_iter to savely free connectors using @connector_free_work.
| struct work_struct drm_mode_config::connector_free_work |
@connector_free_work: Work to clean up @connector_free_list.
| struct ida drm_mode_config::connector_ida |
@connector_ida: ID allocator for connector indices.
| struct list_head drm_mode_config::connector_list |
@connector_list:
List of connector objects linked with &drm_connector.head. Protected by @connector_list_lock. Only use drm_for_each_connector_iter() and &struct drm_connector_list_iter to walk this list.
| spinlock_t drm_mode_config::connector_list_lock |
@connector_list_lock: Protects @num_connector and @connector_list and @connector_free_list.
| struct drm_property* drm_mode_config::content_protection_property |
@content_protection_property: DRM ENUM property for content protection. See drm_connector_attach_content_protection_property().
| struct drm_property* drm_mode_config::content_type_property |
@content_type_property: Optional connector property to control the HDMI infoframe content type setting.
| struct list_head drm_mode_config::crtc_list |
@crtc_list:
List of CRTC objects linked with &drm_crtc.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| struct drm_property* drm_mode_config::ctm_property |
@ctm_property: Optional CRTC property to set the matrix used to convert colors after the lookup in the degamma LUT.
| uint32_t drm_mode_config::cursor_height |
| uint32_t drm_mode_config::cursor_width |
| struct drm_property* drm_mode_config::degamma_lut_property |
@degamma_lut_property: Optional CRTC property to set the LUT used to convert the framebuffer's colors to linear gamma.
| struct drm_property* drm_mode_config::degamma_lut_size_property |
@degamma_lut_size_property: Optional CRTC property for the size of the degamma LUT as supported by the driver (read-only).
| bool drm_mode_config::delayed_event |
| struct drm_property* drm_mode_config::dp_subconnector_property |
@dp_subconnector_property: Optional DP property to differentiate between different DP downstream port types.
| struct drm_property* drm_mode_config::dpms_property |
@dpms_property: Default connector property to control the connector's DPMS state.
| struct drm_property* drm_mode_config::dvi_i_select_subconnector_property |
@dvi_i_select_subconnector_property: Optional DVI-I property to select between analog or digital mode.
| struct drm_property* drm_mode_config::dvi_i_subconnector_property |
@dvi_i_subconnector_property: Optional DVI-I property to differentiate between analog or digital mode.
| struct drm_property* drm_mode_config::edid_property |
@edid_property: Default connector property to hold the EDID of the currently connected sink, if any.
| struct list_head drm_mode_config::encoder_list |
@encoder_list:
List of encoder objects linked with &drm_encoder.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| struct list_head drm_mode_config::fb_list |
@fb_list: List of all &struct drm_framebuffer.
| struct mutex drm_mode_config::fb_lock |
@fb_lock: Mutex to protect fb the global @fb_list and @num_fb.
| bool drm_mode_config::fb_modifiers_not_supported |
@fb_modifiers_not_supported:
When this flag is set, the DRM device will not expose modifier support to userspace. This is only used by legacy drivers that infer the buffer layout through heuristics without using modifiers. New drivers shall not set fhis flag.
| const struct drm_mode_config_funcs* drm_mode_config::funcs |
| struct drm_property* drm_mode_config::gamma_lut_property |
@gamma_lut_property: Optional CRTC property to set the LUT used to convert the colors, after the CTM matrix, to the gamma space of the connected screen.
| struct drm_property* drm_mode_config::gamma_lut_size_property |
@gamma_lut_size_property: Optional CRTC property for the size of the gamma LUT as supported by the driver (read-only).
| struct drm_property* drm_mode_config::hdcp_content_type_property |
@hdcp_content_type_property: DRM ENUM property for type of Protected Content.
| struct drm_property* drm_mode_config::hdr_output_metadata_property |
@hdr_output_metadata_property: Connector property containing hdr metatada. This will be provided by userspace compositors based on HDR content
| const struct drm_mode_config_helper_funcs* drm_mode_config::helper_private |
| struct mutex drm_mode_config::idr_mutex |
@idr_mutex:
Mutex for KMS ID allocation and management. Protects both @object_idr and @tile_idr.
| struct drm_property* drm_mode_config::legacy_tv_mode_property |
@legacy_tv_mode_property: Optional TV property to select the output TV mode.
Superseded by @tv_mode_property
| struct drm_property* drm_mode_config::link_status_property |
@link_status_property: Default connector property for link status of a connector
| unsigned int drm_mode_config::max_height |
| unsigned int drm_mode_config::max_width |
| unsigned int drm_mode_config::min_height |
| unsigned int drm_mode_config::min_width |
| struct drm_property* drm_mode_config::modifiers_property |
@modifiers_property: Plane property to list support modifier/format combination.
| struct mutex drm_mode_config::mutex |
@mutex:
This is the big scary modeset BKL which protects everything that isn't protect otherwise. Scope is unclear and fuzzy, try to remove anything from under its protection and move it into more well-scoped locks.
The one important thing this protects is the use of @acquire_ctx.
| struct drm_property* drm_mode_config::non_desktop_property |
@non_desktop_property: Optional connector property with a hint that device isn't a standard display, and the console/desktop, should not be displayed on it.
| bool drm_mode_config::normalize_zpos |
@normalize_zpos:
If true the drm core will call drm_atomic_normalize_zpos() as part of atomic mode checking from drm_atomic_helper_check()
| int drm_mode_config::num_colorop |
@num_colorop:
Number of colorop objects on this device. This is invariant over the lifetime of a device and hence doesn't need any locks.
| int drm_mode_config::num_connector |
@num_connector: Number of connectors on this device. Protected by @connector_list_lock.
| int drm_mode_config::num_crtc |
@num_crtc:
Number of CRTCs on this device linked with &drm_crtc.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| int drm_mode_config::num_encoder |
@num_encoder:
Number of encoders on this device. This is invariant over the lifetime of a device and hence doesn't need any locks.
| int drm_mode_config::num_fb |
@num_fb: Number of entries on @fb_list.
| int drm_mode_config::num_total_plane |
@num_total_plane:
Number of universal (i.e. with primary/curso) planes on this device. This is invariant over the lifetime of a device and hence doesn't need any locks.
| struct idr drm_mode_config::object_idr |
@object_idr:
Main KMS ID tracking object. Use this idr for all IDs, fb, crtc, connector, modes - just makes life easier to have only one.
| struct delayed_work drm_mode_config::output_poll_work |
| struct drm_property* drm_mode_config::panel_orientation_property |
@panel_orientation_property: Optional connector property indicating how the lcd-panel is mounted inside the casing (e.g. normal or upside-down).
| struct drm_property* drm_mode_config::panel_type_property |
@panel_type_property: Default connector property for panel type
| struct raw_spinlock drm_mode_config::panic_lock |
@panic_lock:
Raw spinlock used to protect critical sections of code that access the display hardware or modeset software state, which the panic printing code must be protected against. See drm_panic_trylock(), drm_panic_lock() and drm_panic_unlock().
| struct drm_property* drm_mode_config::path_property |
@path_property: Default connector property to hold the DP MST path for the port.
| struct list_head drm_mode_config::plane_list |
@plane_list:
List of plane objects linked with &drm_plane.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| struct drm_property* drm_mode_config::plane_type_property |
@plane_type_property: Default plane property to differentiate CURSOR, PRIMARY and OVERLAY legacy uses of planes.
| bool drm_mode_config::poll_enabled |
| bool drm_mode_config::poll_running |
| uint32_t drm_mode_config::prefer_shadow |
| uint32_t drm_mode_config::preferred_depth |
| struct list_head drm_mode_config::privobj_list |
@privobj_list:
List of private objects linked with &drm_private_obj.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| struct drm_property* drm_mode_config::prop_active |
@prop_active: Default atomic CRTC property to control the active state, which is the simplified implementation for DPMS in atomic drivers.
| struct drm_property* drm_mode_config::prop_crtc_h |
@prop_crtc_h: Default atomic plane property for the plane destination position in the &drm_crtc is being shown on.
| struct drm_property* drm_mode_config::prop_crtc_id |
@prop_crtc_id: Default atomic plane property to specify the &drm_crtc.
| struct drm_property* drm_mode_config::prop_crtc_w |
@prop_crtc_w: Default atomic plane property for the plane destination position in the &drm_crtc is being shown on.
| struct drm_property* drm_mode_config::prop_crtc_x |
@prop_crtc_x: Default atomic plane property for the plane destination position in the &drm_crtc is being shown on.
| struct drm_property* drm_mode_config::prop_crtc_y |
@prop_crtc_y: Default atomic plane property for the plane destination position in the &drm_crtc is being shown on.
| struct drm_property* drm_mode_config::prop_fb_damage_clips |
@prop_fb_damage_clips: Optional plane property to mark damaged regions on the plane in framebuffer coordinates of the framebuffer attached to the plane.
The layout of blob data is simply an array of &drm_mode_rect. Unlike plane src coordinates, damage clips are not in 16.16 fixed point.
| struct drm_property* drm_mode_config::prop_fb_id |
@prop_fb_id: Default atomic plane property to specify the &drm_framebuffer.
| struct drm_property* drm_mode_config::prop_in_fence_fd |
@prop_in_fence_fd: Sync File fd representing the incoming fences for a Plane.
| struct drm_property* drm_mode_config::prop_mode_id |
@prop_mode_id: Default atomic CRTC property to set the mode for a CRTC. A 0 mode implies that the CRTC is entirely disabled - all connectors must be of and active must be set to disabled, too.
| struct drm_property* drm_mode_config::prop_out_fence_ptr |
@prop_out_fence_ptr: Sync File fd pointer representing the outgoing fences for a CRTC. Userspace should provide a pointer to a value of type s32, and then cast that pointer to u64.
| struct drm_property* drm_mode_config::prop_src_h |
@prop_src_h: Default atomic plane property for the plane source position in the connected &drm_framebuffer.
| struct drm_property* drm_mode_config::prop_src_w |
@prop_src_w: Default atomic plane property for the plane source position in the connected &drm_framebuffer.
| struct drm_property* drm_mode_config::prop_src_x |
@prop_src_x: Default atomic plane property for the plane source position in the connected &drm_framebuffer.
| struct drm_property* drm_mode_config::prop_src_y |
@prop_src_y: Default atomic plane property for the plane source position in the connected &drm_framebuffer.
| struct drm_property* drm_mode_config::prop_vrr_enabled |
@prop_vrr_enabled: Default atomic CRTC property to indicate whether variable refresh rate should be enabled on the CRTC.
| struct list_head drm_mode_config::property_blob_list |
@property_blob_list:
List of all the blob property objects linked with &drm_property_blob.head. Protected by @blob_lock.
| struct list_head drm_mode_config::property_list |
@property_list:
List of property type objects linked with &drm_property.head. This is invariant over the lifetime of a device and hence doesn't need any locks.
| bool drm_mode_config::quirk_addfb_prefer_host_byte_order |
@quirk_addfb_prefer_host_byte_order:
When set to true drm_mode_addfb() will pick host byte order pixel_format when calling drm_mode_addfb2(). This is how drm_mode_addfb() should have worked from day one. It didn't though, so we ended up with quirks in both kernel and userspace drivers to deal with the broken behavior. Simply fixing drm_mode_addfb() unconditionally would break these drivers, so add a quirk bit here to allow drivers opt-in.
| bool drm_mode_config::quirk_addfb_prefer_xbgr_30bpp |
@quirk_addfb_prefer_xbgr_30bpp:
Special hack for legacy ADDFB to keep nouveau userspace happy. Should only ever be set by the nouveau kernel driver.
| struct drm_property* drm_mode_config::scaling_mode_property |
@scaling_mode_property: Optional connector property to control the upscaling, mostly used for built-in panels.
| struct drm_property* drm_mode_config::size_hints_property |
@size_hints_property: Plane SIZE_HINTS property.
| struct drm_property* drm_mode_config::suggested_x_property |
@suggested_x_property: Optional connector property with a hint for the position of the output on the host's screen.
| struct drm_property* drm_mode_config::suggested_y_property |
@suggested_y_property: Optional connector property with a hint for the position of the output on the host's screen.
| struct drm_atomic_commit* drm_mode_config::suspend_state |
@suspend_state:
Atomic state when suspended. Set by drm_mode_config_helper_suspend() and cleared by drm_mode_config_helper_resume().
| struct idr drm_mode_config::tile_idr |
@tile_idr:
Use this idr for allocating new IDs for tiled sinks like use in some high-res DP MST screens.
| struct drm_property* drm_mode_config::tile_property |
@tile_property: Default connector property to store the tile position of a tiled screen, for sinks which need to be driven with multiple CRTCs.
| struct drm_property* drm_mode_config::tv_bottom_margin_property |
@tv_bottom_margin_property: Optional TV property to set the right margin (expressed in pixels).
| struct drm_property* drm_mode_config::tv_brightness_property |
@tv_brightness_property: Optional TV property to set the brightness.
| struct drm_property* drm_mode_config::tv_contrast_property |
@tv_contrast_property: Optional TV property to set the contrast.
| struct drm_property* drm_mode_config::tv_flicker_reduction_property |
@tv_flicker_reduction_property: Optional TV property to control the flicker reduction mode.
| struct drm_property* drm_mode_config::tv_hue_property |
@tv_hue_property: Optional TV property to set the hue.
| struct drm_property* drm_mode_config::tv_left_margin_property |
@tv_left_margin_property: Optional TV property to set the left margin (expressed in pixels).
| struct drm_property* drm_mode_config::tv_mode_property |
@tv_mode_property: Optional TV property to select the TV standard output on the connector.
| struct drm_property* drm_mode_config::tv_overscan_property |
@tv_overscan_property: Optional TV property to control the overscan setting.
| struct drm_property* drm_mode_config::tv_right_margin_property |
@tv_right_margin_property: Optional TV property to set the right margin (expressed in pixels).
| struct drm_property* drm_mode_config::tv_saturation_property |
@tv_saturation_property: Optional TV property to set the saturation.
| struct drm_property* drm_mode_config::tv_select_subconnector_property |
@tv_select_subconnector_property: Optional TV property to select between different TV connector types.
| struct drm_property* drm_mode_config::tv_subconnector_property |
@tv_subconnector_property: Optional TV property to differentiate between different TV connector types.
| struct drm_property* drm_mode_config::tv_top_margin_property |
@tv_top_margin_property: Optional TV property to set the right margin (expressed in pixels).
| struct drm_property* drm_mode_config::writeback_fb_id_property |
@writeback_fb_id_property: Property for writeback connectors, storing the ID of the output framebuffer. See also: drm_writeback_connector_init()
| struct drm_property* drm_mode_config::writeback_out_fence_ptr_property |
@writeback_out_fence_ptr_property: Property for writeback connectors, fd pointer representing the outgoing fences for a writeback connector. Userspace should provide a pointer to a value of type s32, and then cast that pointer to u64. See also: drm_writeback_connector_init()
| struct drm_property* drm_mode_config::writeback_pixel_formats_property |
@writeback_pixel_formats_property: Property for writeback connectors, storing an array of the supported pixel formats for the writeback engine (read-only). See also: drm_writeback_connector_init()