对于 Display 框架,我需要了解 KMS api 吗?| Linux 驱动( 三 )


用法:
# ./drm_info Node: /dev/dri/card0 ├───Driver: rockchip (RockChip Soc DRM) version 2.0.0 (20140818) │ ├───DRM_CLIENT_CAP_STEREO_3D supported │ ├───DRM_CLIENT_CAP_UNIVERSAL_PLANES supported │ ├───DRM_CLIENT_CAP_ATOMIC supported │ ├───DRM_CLIENT_CAP_ASPECT_RATIO supported │ ├───DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported │ ├───DRM_CAP_DUMB_BUFFER = 1 │ ├───DRM_CAP_VBLANK_HIGH_CRTC = 1 │ ├───DRM_CAP_DUMB_PREFERRED_DEPTH = 0 │ ├───DRM_CAP_DUMB_PREFER_SHADOW = 0 │ ├───DRM_CAP_PRIME = 3 │ ├───DRM_CAP_TIMESTAMP_MONOTONIC = 1 │ ├───DRM_CAP_ASYNC_PAGE_FLIP = 1 │ ├───DRM_CAP_Cursor_WIDTH = 64 │ ├───DRM_CAP_CURSOR_HEIGHT = 64 │ ├───DRM_CAP_ADDFB2_MODIFIERS = 1 │ ├───DRM_CAP_PAGE_FLIP_TARGET = 0 │ ├───DRM_CAP_CRTC_IN_VBLANK_EVENT = 1 │ ├───DRM_CAP_SYNCOBJ = 0 │ └───DRM_CAP_SYNCOBJ_TIMELINE not supported ├───Device: platform rockchip,display-subsystem │ └───Available nodes: primary, render ├───Framebuffer size │ ├───Width: [0, 8192] │ └───Height: [0, 8192] ├───Connectors │ ├───Connector 0 │ │ ├───Object ID: 77 │ │ ├───Type: eDP │ │ ├───Status: connected │ │ ├───Physical size: 256x144 mm │ │ ├───Subpixel: unknown │ │ ├───Encoders: {0} │ │ ├───Modes │ │ │ └───1920x1080@60.00 nhsync nvsync │ │ └───Properties │ │ ├───"EDID" (immutable): blob = 0 │ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On │ │ ├───"link-status": enum {Good, Bad} = Good │ │ ├───"non-desktop" (immutable): range [0, 1] = 0 │ │ ├───"CRTC_ID" (atomic): object CRTC = 54 │ │ ├───"brightness": range [0, 100] = 50 │ │ ├───"contrast": range [0, 100] = 50 │ │ ├───"saturation": range [0, 100] = 50 │ │ └───"hue": range [0, 100] = 50 [...] ├───Encoders │ ├───Encoder 0 │ │ ├───Object ID: 76 │ │ ├───Type: TMDS │ │ ├───CRTCS: {0} │ │ └───Clones: {} │ ├───Encoder 1 │ │ ├───Object ID: 78 │ │ ├───Type: TMDS │ │ ├───CRTCS: {0, 1} │ │ └───Clones: {} │ └───Encoder 2 │ ├───Object ID: 80 │ ├───Type: TMDS │ ├───CRTCS: {1} │ └───Clones: {} ├───CRTCs │ ├───CRTC 0 │ │ ├───Object ID: 54 │ │ ├───Mode: 1920x1080@60.00 nhsync nvsync │ │ ├───Gamma size: 256 │ │ └───Properties │ │ ├───"ACTIVE" (atomic): range [0, 1] = 1 │ │ ├───"MODE_ID" (atomic): blob = 91 │ │ │ └───1920x1080@60.00 nhsync nvsync │ │ ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0 │ │ ├───"left margin": range [0, 100] = 100 │ │ ├───"right margin": range [0, 100] = 100 │ │ ├───"top margin": range [0, 100] = 100 │ │ ├───"bottom margin": range [0, 100] = 100 │ │ ├───"ALPHA_SCALE" (atomic): range [0, 1] = 1 │ │ └───"FEATURE" (immutable): bitmask {afbdc} = () [...] └───Planes ├───Plane 0 │ ├───Object ID: 53 │ ├───CRTCs: {0} │ ├───FB ID: 128 │ │ ├───Object ID: 128 │ │ ├───Size: 1920x1080 │ │ ├───Pitch: 7680 bytes │ │ ├───Bits per pixel: 32 │ │ └───Depth: 24 │ ├───Formats: │ │ ├───XRGB8888 (0x34325258) │ │ ├───ARGB8888 (0x34325241) │ │ ├───XBGR8888 (0x34324258) │ │ ├───ABGR8888 (0x34324241) │ │ ├───RGB888 (0x34324752) │ │ ├───BGR888 (0x34324742) │ │ ├───RGB565 (0x36314752) │ │ └───BGR565 (0x36314742) │ └───Properties │ ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary │ ├───"FB_ID" (atomic): object framebuffer = 128 │ │ ├───Object ID: 128 │ │ ├───Size: 1920x1080 │ │ ├───Pitch: 7680 bytes │ │ ├───Bits per pixel: 32 │ │ └───Depth: 24 │ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1 │ ├───"CRTC_ID" (atomic): object CRTC = 54 │ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0 │ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0 │ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920 │ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1080 │ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0 │ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0 │ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920 │ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1080 │ ├───"ZPOS" (atomic): range [0, 3] = 0 │ ├───"FEATURE" (immutable): bitmask {scale, alpha, hdr2sdr, sdr2hdr, afbdc} = (alpha | afbdc) │ ├───"EOTF" (atomic): range [0, 5] = 0 │ ├───"COLOR_SPACE" (atomic): range [0, 12] = 0 │ ├───"GLOBAL_ALPHA" (atomic): range [0, UINT8_MAX] = 255 │ ├───"BLEND_MODE" (atomic): range [0, 1] = 0 │ ├───"ASYNC_COMMIT" (atomic): range [0, 1] = 0 │ └───"SHARE_ID" (atomic): range [0, UINT32_MAX] = 53 [...]


推荐阅读