DRM全解析 —— CRTC详解(3)

接前一篇文章:DRM全解析 —— CRTC详解(2)

本文继续对DRM中CRTC的核心结构struct drm_crtc的成员进行释义。

3. drm_crtc结构释义

(13)struct drm_display_mode 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().
	 */
	struct drm_display_mode mode;

当前模式时序。应仅由旧有驱动程序使用,原子驱动程序而应咨询&drm_crtc_state.mode。

原子驱动程序可以通过调用drm_Atomic_helper_update_legacy_modeset_state()来更新此项。

(14)struct drm_display_mode 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().
	 */
	struct drm_display_mode hwmode;

对encoders、crtc、panel缩放等进行调整后的硬件编程模式。应仅由旧有驱动程序使用,用于drm_crtc_vblank_helper_get_vblank_timestamp()中的高精度vblank时间戳。

注意,原子驱动程序不应使用此选项,而应使用&drm_crtc_state.adjusted_mode。对于高精度的时间戳,drm_crtc_vblank_helper_get_vblank_timestamp()使用&drm_vblank_crtc.hwmode,其通过调用drm_calc_timestamping_constants()来填充。

(15)int 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().
	 */
	int x;

屏幕上x的位置。(此项)应只由旧有驱动程序使用,而原子驱动程序应该查看primary plane的&drm_plane_state.crtc_x。

通过调用drm_atomic_helper_update_legacy_modeset_state()进行更新。

(16)int 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().
	 */
	int y;

屏幕上y的位置。(此项)应只由旧有驱动程序使用,而原子驱动程序应该查看primary plane的&drm_plane_state.crtc_y。

通过调用drm_atomic_helper_update_legacy_modeset_state()进行更新。

(17)const struct drm_crtc_funcs *funcs

    /** @funcs: CRTC control functions */
	const struct drm_crtc_funcs *funcs;

CRTC控制函数(集)。

(18)uint32_t 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().
	 */
	uint32_t gamma_size;

报告给用户空间的旧有gamma渐变的大小。通过调用drm_mode_crtc_Set_gamm_size()进行设置。

注意,原子驱动程序需要使用&drm_crtc_state.gamma_lut。请参阅drm_crtc_enable_color_mgmt()。

(19)uint16_t *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().
	 */
	uint16_t *gamma_store;

旧有SETGAMMA和GETGAMA IOCTLs使用的Gamma渐变值。通过调用drm_mode_crtc_Set_gamm_size()进行设置。

注意,原子驱动程序需要使用&drm_crtc_state.gamma_lut。请参阅drm_crtc_enable_color_mgmt()。

(20)const struct drm_crtc_helper_funcs *helper_private

    /** @helper_private: mid-layer private data */
	const struct drm_crtc_helper_funcs *helper_private;

中间层私有数据。

drm_crtc结构的其余成员将在下一篇文章中继续深入释义。

你可能感兴趣的:(DRM,DRM)