XenevaOS
Loading...
Searching...
No Matches
Public Attributes | List of all members
drm_crtc Struct Reference

#include <drm_crtc.h>

Collaboration diagram for drm_crtc:
Collaboration graph
[legend]

Public Attributes

struct drm_device * dev
 
struct device_node * port
 
struct list_head head
 
: human readable name, can be overwritten by the driver
char * name
 
struct drm_modeset_lock mutex
 
struct drm_mode_object base
 
struct drm_plane * primary
 
struct drm_plane * cursor
 
unsigned index
 
int cursor_x
 
int cursor_y
 
bool enabled
 
struct drm_display_mode mode
 
struct drm_display_mode hwmode
 
int x
 
int y
 
const struct drm_crtc_funcs * funcs
 
uint32_t gamma_size
 
uint16_t * gamma_store
 
const struct drm_crtc_helper_funcs * helper_private
 
struct drm_object_properties properties
 
struct drm_property * scaling_filter_property
 
struct drm_property * sharpness_strength_property
 
struct drm_crtc_state * state
 
struct list_head commit_list
 
spinlock_t commit_lock
 
struct dentry * debugfs_entry
 
struct drm_crtc_crc crc
 
unsigned int fence_context
 
spinlock_t fence_lock
 
unsigned long fence_seqno
 
char timeline_name [32]
 
struct drm_self_refresh_data * self_refresh_data
 

Detailed Description

struct drm_crtc - central CRTC control structure

Each CRTC may have one or more connectors associated with it. This structure allows the CRTC to be controlled.

Member Data Documentation

◆ base

struct drm_mode_object drm_crtc::base

@base: base KMS object for ID tracking etc.

◆ commit_list

struct list_head drm_crtc::commit_list

@commit_list:

List of &drm_crtc_commit structures tracking pending commits. Protected by @commit_lock. This list holds its own full reference, as does the ongoing commit.

"Note that the commit for a state change is also tracked in &drm_crtc_state.commit. For accessing the immediately preceding commit in an atomic update it is recommended to just use that pointer in the old CRTC state, since accessing that doesn't need any locking or list-walking. @commit_list should only be used to stall for framebuffer cleanup that's signalled through &drm_crtc_commit.cleanup_done."

◆ commit_lock

spinlock_t drm_crtc::commit_lock

@commit_lock:

Spinlock to protect @commit_list.

◆ crc

struct drm_crtc_crc drm_crtc::crc

@crc:

Configuration settings of CRC capture.

◆ cursor

struct drm_plane* drm_crtc::cursor

@cursor: Cursor plane for this CRTC. Note that this is only relevant for legacy IOCTL, it specifies the plane implicitly used by the SETCURSOR and SETCURSOR2 IOCTLs. It does not have any significance beyond that.

◆ cursor_x

int drm_crtc::cursor_x

@cursor_x: Current x position of the cursor, used for universal cursor planes because the SETCURSOR IOCTL only can update the framebuffer without supplying the coordinates. Drivers should not use this directly, atomic drivers should look at &drm_plane_state.crtc_x of the cursor plane instead.

◆ cursor_y

int drm_crtc::cursor_y

@cursor_y: Current y position of the cursor, used for universal cursor planes because the SETCURSOR IOCTL only can update the framebuffer without supplying the coordinates. Drivers should not use this directly, atomic drivers should look at &drm_plane_state.crtc_y of the cursor plane instead.

◆ debugfs_entry

struct dentry* drm_crtc::debugfs_entry

@debugfs_entry:

Debugfs directory for this CRTC.

◆ dev

struct drm_device* drm_crtc::dev

@dev: parent DRM device

◆ enabled

bool drm_crtc::enabled

@enabled:

Is this CRTC enabled? Should only be used by legacy drivers, atomic drivers should instead consult &drm_crtc_state.enable and &drm_crtc_state.active. Atomic drivers can update this by calling drm_atomic_helper_update_legacy_modeset_state().

◆ fence_context

unsigned int drm_crtc::fence_context

@fence_context:

timeline context used for fence operations.

◆ fence_lock

spinlock_t drm_crtc::fence_lock

@fence_lock:

spinlock to protect the fences in the fence_context.

◆ fence_seqno

unsigned long drm_crtc::fence_seqno

@fence_seqno:

Seqno variable used as monotonic counter for the fences created on the CRTC's timeline.

◆ funcs

const struct drm_crtc_funcs* drm_crtc::funcs

@funcs: CRTC control functions

◆ gamma_size

uint32_t drm_crtc::gamma_size

@gamma_size: Size of legacy gamma ramp reported to userspace. Set up by calling drm_mode_crtc_set_gamma_size().

Note that atomic drivers need to instead use &drm_crtc_state.gamma_lut. See drm_crtc_enable_color_mgmt().

◆ gamma_store

uint16_t* drm_crtc::gamma_store

@gamma_store: Gamma ramp values used by the legacy SETGAMMA and GETGAMMA IOCTls. Set up by calling drm_mode_crtc_set_gamma_size().

Note that atomic drivers need to instead use &drm_crtc_state.gamma_lut. See drm_crtc_enable_color_mgmt().

◆ head

struct list_head drm_crtc::head

@head:

List of all CRTCs on @dev, linked from &drm_mode_config.crtc_list. Invariant over the lifetime of @dev and therefore does not need locking.

◆ helper_private

const struct drm_crtc_helper_funcs* drm_crtc::helper_private

@helper_private: mid-layer private data

◆ hwmode

struct drm_display_mode drm_crtc::hwmode

@hwmode:

Programmed mode in hw, after adjustments for encoders, crtc, panel scaling etc. Should only be used by legacy drivers, for high precision vblank timestamps in drm_crtc_vblank_helper_get_vblank_timestamp().

Note that atomic drivers should not use this, but instead use &drm_crtc_state.adjusted_mode. And for high-precision timestamps drm_crtc_vblank_helper_get_vblank_timestamp() used &drm_vblank_crtc.hwmode, which is filled out by calling drm_calc_timestamping_constants().

◆ index

unsigned drm_crtc::index

@index: Position inside the mode_config.list, can be used as an array index. It is invariant over the lifetime of the CRTC.

◆ mode

struct drm_display_mode drm_crtc::mode

@mode:

Current mode timings. Should only be used by legacy drivers, atomic drivers should instead consult &drm_crtc_state.mode. Atomic drivers can update this by calling drm_atomic_helper_update_legacy_modeset_state().

◆ mutex

struct drm_modeset_lock drm_crtc::mutex

@mutex:

This provides a read lock for the overall CRTC state (mode, dpms state, ...) and a write lock for everything which can be update without a full modeset (fb, cursor data, CRTC properties ...). A full modeset also need to grab &drm_mode_config.connection_mutex.

For atomic drivers specifically this protects @state.

◆ name

char* drm_crtc::name

◆ port

struct device_node* drm_crtc::port

@port: OF node used by drm_of_find_possible_crtcs().

◆ primary

struct drm_plane* drm_crtc::primary

@primary: Primary plane for this CRTC. Note that this is only relevant for legacy IOCTL, it specifies the plane implicitly used by the SETCRTC and PAGE_FLIP IOCTLs. It does not have any significance beyond that.

◆ properties

struct drm_object_properties drm_crtc::properties

@properties: property tracking for this CRTC

◆ scaling_filter_property

struct drm_property* drm_crtc::scaling_filter_property

@scaling_filter_property: property to apply a particular filter while scaling.

◆ self_refresh_data

struct drm_self_refresh_data* drm_crtc::self_refresh_data

@self_refresh_data: Holds the state for the self refresh helpers

Initialized via drm_self_refresh_helper_init().

◆ sharpness_strength_property

struct drm_property* drm_crtc::sharpness_strength_property

@sharpness_strength_property: property to apply the intensity of the sharpness requested.

◆ state

struct drm_crtc_state* drm_crtc::state

@state:

Current atomic state for this CRTC.

This is protected by @mutex. Note that nonblocking atomic commits access the current CRTC state without taking locks. Either by going through the &struct drm_atomic_commit pointers, see for_each_oldnew_crtc_in_state(), for_each_old_crtc_in_state() and for_each_new_crtc_in_state(). Or through careful ordering of atomic commit operations as implemented in the atomic helpers, see &struct drm_crtc_commit.

◆ timeline_name

char drm_crtc::timeline_name[32]

@timeline_name:

The name of the CRTC's fence timeline.

◆ x

int drm_crtc::x

@x: x position on screen. Should only be used by legacy drivers, atomic drivers should look at &drm_plane_state.crtc_x of the primary plane instead. Updated by calling drm_atomic_helper_update_legacy_modeset_state().

◆ y

int drm_crtc::y

@y: y position on screen. Should only be used by legacy drivers, atomic drivers should look at &drm_plane_state.crtc_y of the primary plane instead. Updated by calling drm_atomic_helper_update_legacy_modeset_state().


The documentation for this struct was generated from the following file: