在OpenHarmony上适配图形显示【5】——DRM 设备信息查询工具drm_info
系列文章
- 在OpenHarmony上适配图形显示【1】——确认drm是否正常
- 在OpenHarmony上适配图形显示【2】——调试display hdi的技巧
- 在OpenHarmony上适配图形显示【3】——添加显示接口类型
- 在OpenHarmony上适配图形显示【4】——rk3568_4.0r_mesa3d适配
- 在OpenHarmony上适配图形显示【5】——Mali GPU 调试小工具
drminfo
drminfo 是一个命令行工具,它可以将系统里 DRM 设备的所有信息都 dump 出来,很适合用于调试。
开源地址:
- https://github.com/ascent12/drm_info
oh上编译方法:
git clone https://gitee.com/OpenHarmony_rk_equipment_transplantation/ttyd_openharmony.gitcd ttyd_openharmony/lycium/
# 设置oh交叉编译环境
export OHOS_SDK=/root/OpenHarmony/cix_myself_5.0.0/prebuilts/ohos-sdk/linux/12# 编译依赖库
./build.sh drminfo# 编译好的文件在ttyd_openharmony/lycium/usr/drminfo
oh上效果
以rk3568为例,我们可以用drminfo查询Plane支持哪些格式等

# ./drm_info
Node: /dev/dri/card0
├───Driver: rockchip (RockChip Soc DRM) version 3.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_CLIENT_CAP_CURSOR_PLANE_HOTSPOT not 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 = 0
│ └───DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP not supported
├───Device: platform rockchip,display-subsystem
│ └───Available nodes: primary, render
├───Framebuffer size
│ ├───Width: [0, 16384]
│ └───Height: [0, 16384]
├───Connectors
│ ├───Connector 0
│ │ ├───Object ID: 141
│ │ ├───Type: writeback
│ │ ├───Status: unknown
│ │ ├───Physical size: 0×0 mm
│ │ ├───Subpixel: unknown
│ │ ├───Encoders: {0}
│ │ └───Properties
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 0
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 0
│ │ ├───"WRITEBACK_OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│ │ ├───"WRITEBACK_FB_ID" (atomic): object framebuffer = 0
│ │ ├───"WRITEBACK_PIXEL_FORMATS" (atomic, immutable): blob = 140
│ │ │ ├───BGR888 (0x34324742)
│ │ │ ├───ARGB8888 (0x34325241)
│ │ │ ├───RGB565 (0x36314752)
│ │ │ └───NV12 (0x3231564e)
│ │ ├───"brightness": range [0, 100] = 50
│ │ ├───"contrast": range [0, 100] = 50
│ │ ├───"saturation": range [0, 100] = 50
│ │ └───"hue": range [0, 100] = 50
│ ├───Connector 1
│ │ ├───Object ID: 143
│ │ ├───Type: HDMI-A
│ │ ├───Status: disconnected
│ │ ├───Encoders: {1}
│ │ └───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
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 0
│ │ ├───"max bpc": range [8, 16] = 0
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ ├───"color_depth": enum {Automatic, 24bit, 30bit} = 24bit
│ │ ├───"color_format": enum {rgb, ycbcr444, ycbcr422, ycbcr420, ycbcr_high_subsampling, ycbcr_low_subsampling, invalid_output} = rgb
│ │ ├───"color_depth_caps": range [0, UINT8_MAX] = 1
│ │ ├───"color_format_caps": range [0, 15] = 1
│ │ ├───"HDR_PANEL_METADATA" (immutable): blob = 0
│ │ ├───"NEXT_HDR_SINK_DATA" (immutable): blob = 0
│ │ ├───"output_hdmi_dvi": enum {auto, force_hdmi, force_dvi} = auto
│ │ ├───"output_type_capacity": enum {DVI, HDMI} = DVI
│ │ ├───"hdmi_quant_range": enum {default, limit, full} = default
│ │ ├───"Colorspace": enum {Default, SMPTE_170M_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, opRGB, BT2020_CYCC, BT2020_RGB, BT2020_YCC, DCI-P3_RGB_D65, DCI-P3_RGB_Theater} = Default
│ │ ├───"CONNECTOR_ID" (atomic, immutable): range [0, 15] = 0
│ │ ├───"Content Protection": enum {Undesired, Desired, Enabled} = Undesired
│ │ ├───"HDCP Content Type": enum {HDCP Type0, HDCP Type1} = HDCP Type0
│ │ ├───"hdcp_encrypted": range [0, 2] = 0
│ │ ├───"brightness": range [0, 100] = 50
│ │ ├───"contrast": range [0, 100] = 50
│ │ ├───"saturation": range [0, 100] = 50
│ │ └───"hue": range [0, 100] = 50
│ └───Connector 2
│ ├───Object ID: 159
│ ├───Type: DSI
│ ├───Status: connected
│ ├───Physical size: 68×121 mm
│ ├───Subpixel: unknown
│ ├───Encoders: {2}
│ ├───Modes
│ │ └───720×1280@69.05 preferred driver 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
│ ├───"TILE" (immutable): blob = 0
│ ├───"CRTC_ID" (atomic): object CRTC = 92
│ ├───"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: 136
│ │ ├───Type: virtual
│ │ ├───CRTCS: {0, 1, 2}
│ │ └───Clones: {0}
│ ├───Encoder 1
│ │ ├───Object ID: 142
│ │ ├───Type: TMDS
│ │ ├───CRTCS: {0}
│ │ └───Clones: {1}
│ └───Encoder 2
│ ├───Object ID: 158
│ ├───Type: DSI
│ ├───CRTCS: {1}
│ └───Clones: {2}
├───CRTCs
│ ├───CRTC 0
│ │ ├───Object ID: 70
│ │ ├───Legacy info
│ │ │ └───Gamma size: 1024
│ │ └───Properties
│ │ ├───"ACTIVE" (atomic): range [0, 1] = 0
│ │ ├───"MODE_ID" (atomic): blob = 0
│ │ ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│ │ ├───"VRR_ENABLED": range [0, 1] = 0
│ │ ├───"SOC_ID" (atomic, immutable): object CRTC = 218762
│ │ ├───"PORT_ID" (atomic, immutable): object CRTC = 0
│ │ ├───"ACLK": range [0, UINT32_MAX] = 396000
│ │ ├───"BACKGROUND": range [0, UINT32_MAX] = 0
│ │ ├───"LINE_FLAG1": range [0, UINT32_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
│ │ ├───"PLANE_MASK" (immutable): bitmask {Cluster0, Cluster1, Esmart0, Esmart1, Smart0, Smart1, Cluster2, Cluster3, Esmart2, Esmart3} = (Cluster1 | Smart1)
│ │ ├───"FEATURE" (immutable): bitmask {ALPHA_SCALE, HDR10, NEXT_HDR, VIVID_HDR} = (ALPHA_SCALE | HDR10)
│ │ ├───"OUTPUT_WIDTH" (immutable): range [0, 4096] = 0
│ │ ├───"OUTPUT_DCLK" (immutable): range [0, 594000000] = 0
│ │ ├───"variable refresh rate": range [0, 144] = 0
│ │ ├───"max refresh rate": range [0, 144] = 0
│ │ ├───"min refresh rate": range [0, 144] = 0
│ │ ├───"GAMMA_LUT": blob = 0
│ │ ├───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 1024
│ │ ├───"CUBIC_LUT": blob = 0
│ │ └───"CUBIC_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 729
│ ├───CRTC 1
│ │ ├───Object ID: 92
│ │ ├───Legacy info
│ │ │ ├───Mode: 720×1280@69.05 preferred driver nhsync nvsync
│ │ │ └───Gamma size: 1024
│ │ └───Properties
│ │ ├───"ACTIVE" (atomic): range [0, 1] = 1
│ │ ├───"MODE_ID" (atomic): blob = 163
│ │ │ └───720×1280@69.05 preferred driver nhsync nvsync
│ │ ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│ │ ├───"VRR_ENABLED": range [0, 1] = 0
│ │ ├───"SOC_ID" (atomic, immutable): object CRTC = 218762
│ │ ├───"PORT_ID" (atomic, immutable): object CRTC = 1
│ │ ├───"ACLK": range [0, UINT32_MAX] = 396000
│ │ ├───"BACKGROUND": range [0, UINT32_MAX] = 0
│ │ ├───"LINE_FLAG1": range [0, UINT32_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
│ │ ├───"PLANE_MASK" (immutable): bitmask {Cluster0, Cluster1, Esmart0, Esmart1, Smart0, Smart1, Cluster2, Cluster3, Esmart2, Esmart3} = (Cluster0 | Esmart0 | Smart0)
│ │ ├───"FEATURE" (immutable): bitmask {ALPHA_SCALE, HDR10, NEXT_HDR, VIVID_HDR} = (ALPHA_SCALE)
│ │ ├───"OUTPUT_WIDTH" (immutable): range [0, 2048] = 0
│ │ ├───"OUTPUT_DCLK" (immutable): range [0, 200000000] = 0
│ │ ├───"variable refresh rate": range [0, 144] = 0
│ │ ├───"max refresh rate": range [0, 144] = 0
│ │ ├───"min refresh rate": range [0, 144] = 0
│ │ ├───"GAMMA_LUT": blob = 0
│ │ └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 1024
│ └───CRTC 2
│ ├───Object ID: 114
│ ├───Legacy info
│ │ └───Gamma size: 1024
│ └───Properties
│ ├───"ACTIVE" (atomic): range [0, 1] = 0
│ ├───"MODE_ID" (atomic): blob = 0
│ ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│ ├───"VRR_ENABLED": range [0, 1] = 0
│ ├───"SOC_ID" (atomic, immutable): object CRTC = 218762
│ ├───"PORT_ID" (atomic, immutable): object CRTC = 2
│ ├───"ACLK": range [0, UINT32_MAX] = 396000
│ ├───"BACKGROUND": range [0, UINT32_MAX] = 0
│ ├───"LINE_FLAG1": range [0, UINT32_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
│ ├───"PLANE_MASK" (immutable): bitmask {Cluster0, Cluster1, Esmart0, Esmart1, Smart0, Smart1, Cluster2, Cluster3, Esmart2, Esmart3} = (Esmart1)
│ ├───"FEATURE" (immutable): bitmask {ALPHA_SCALE, HDR10, NEXT_HDR, VIVID_HDR} = (ALPHA_SCALE)
│ ├───"OUTPUT_WIDTH" (immutable): range [0, 1920] = 0
│ ├───"OUTPUT_DCLK" (immutable): range [0, 148500000] = 0
│ ├───"variable refresh rate": range [0, 144] = 0
│ ├───"max refresh rate": range [0, 144] = 0
│ ├───"min refresh rate": range [0, 144] = 0
│ ├───"GAMMA_LUT": blob = 0
│ └───"GAMMA_LUT_SIZE" (immutable): range [0, UINT32_MAX] = 1024
└───Planes├───Plane 0│ ├───Object ID: 56│ ├───CRTCs: {0, 1, 2}│ ├───Legacy info│ │ ├───FB ID: 0│ │ └───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 = 0│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1│ ├───"CRTC_ID" (atomic): object CRTC = 0│ ├───"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] = 0│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0│ ├───"IN_FORMATS" (immutable): blob = 57│ │ └───DRM_FORMAT_MOD_LINEAR (0x0000000000000000)│ │ ├───XRGB8888 (0x34325258)│ │ ├───ARGB8888 (0x34325241)│ │ ├───XBGR8888 (0x34324258)│ │ ├───ABGR8888 (0x34324241)│ │ ├───RGB888 (0x34324752)│ │ ├───BGR888 (0x34324742)│ │ ├───RGB565 (0x36314752)│ │ └───BGR565 (0x36314742)│ ├───"EOTF" (atomic): range [0, 5] = 0│ ├───"COLOR_SPACE" (atomic): range [0, 12] = 0│ ├───"ASYNC_COMMIT" (atomic): range [0, 1] = 0│ ├───"SHARE_ID" (atomic): range [0, UINT32_MAX] = 56│ ├───"rotation": bitmask {rotate-0, reflect-y} = (rotate-0)│ ├───"alpha": range [0, UINT16_MAX] = 65535│ ├───"pixel blend mode": enum {None, Pre-multiplied, Coverage} = Pre-multiplied│ ├───"zpos": range [0, 7] = 0│ ├───"NAME" (immutable): bitmask {Smart1-win0} = (Smart1-win0)│ ├───"FEATURE" (immutable): bitmask {scale} = (scale)│ ├───"INPUT_WIDTH" (immutable): range [0, 4096] = 0│ ├───"INPUT_HEIGHT" (immutable): range [0, 4096] = 0│ ├───"OUTPUT_WIDTH" (immutable): range [0, 4096] = 0│ ├───"OUTPUT_HEIGHT" (immutable): range [0, 4096] = 0│ ├───"SCALE_RATE" (immutable): range [8, 8] = 0│ └───"colorkey": range [0, 2164260863] = 0├───Plane 1│ ├───Object ID: 78│ ├───CRTCs: {0, 1, 2}│ ├───Legacy info│ │ ├───FB ID: 161│ │ │ ├───Object ID: 161│ │ │ ├───Size: 720×1280│ │ │ ├───Format: ABGR8888 (0x34324241)│ │ │ ├───Modifier: DRM_FORMAT_MOD_LINEAR (0x0000000000000000)│ │ │ └───Planes:│ │ │ └───Plane 0: offset = 0, pitch = 2880 bytes│ │ └───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 = 161│ │ ├───Object ID: 161│ │ ├───Size: 720×1280│ │ ├───Format: ABGR8888 (0x34324241)│ │ ├───Modifier: DRM_FORMAT_MOD_LINEAR (0x0000000000000000)│ │ └───Planes:│ │ └───Plane 0: offset = 0, pitch = 2880 bytes│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1│ ├───"CRTC_ID" (atomic): object CRTC = 92│ ├───"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] = 720│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1280│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 720│ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1280│ ├───"IN_FORMATS" (immutable): blob = 79│ │ └───DRM_FORMAT_MOD_LINEAR (0x0000000000000000)│ │ ├───XRGB8888 (0x34325258)│ │ ├───ARGB8888 (0x34325241)│ │ ├───XBGR8888 (0x34324258)│ │ ├───ABGR8888 (0x34324241)│ │ ├───RGB888 (0x34324752)│ │ ├───BGR888 (0x34324742)│ │ ├───RGB565 (0x36314752)│ │ └───BGR565 (0x36314742)│ ├───"EOTF" (atomic): range [0, 5] = 0│ ├───"COLOR_SPACE" (atomic): range [0, 12] = 0│ ├───"ASYNC_COMMIT" (atomic): range [0, 1] = 0│ ├───"SHARE_ID" (atomic): range [0, UINT32_MAX] = 78│ ├───"rotation": bitmask {rotate-0, reflect-y} = (rotate-0)│ ├───"alpha": range [0, UINT16_MAX] = 65535│ ├───"pixel blend mode": enum {None, Pre-multiplied, Coverage} = Pre-multiplied│ ├───"zpos": range [0, 7] = 3│ ├───"NAME" (immutable): bitmask {Smart0-win0} = (Smart0-win0)│ ├───"FEATURE" (immutable): bitmask {scale} = (scale)│ ├───"INPUT_WIDTH" (immutable): range [0, 4096] = 0│ ├───"INPUT_HEIGHT" (immutable): range [0, 4096] = 0│ ├───"OUTPUT_WIDTH" (immutable): range [0, 4096] = 0│ ├───"OUTPUT_HEIGHT" (immutable): range [0, 4096] = 0│ ├───"SCALE_RATE" (immutable): range [8, 8] = 0│ └───"colorkey": range [0, 2164260863] = 0├───Plane 2│ ├───Object ID: 100│ ├───CRTCs: {0, 1, 2}│ ├───Legacy info│ │ ├───FB ID: 0│ │ └───Formats:│ │ ├───XRGB8888 (0x34325258)│ │ ├───ARGB8888 (0x34325241)│ │ ├───XBGR8888 (0x34324258)│ │ ├───ABGR8888 (0x34324241)│ │ ├───RGB888 (0x34324752)│ │ ├───BGR888 (0x34324742)│ │ ├───RGB565 (0x36314752)│ │ ├───BGR565 (0x36314742)│ │ ├───NV12 (0x3231564e)│ │ ├───NV16 (0x3631564e)│ │ ├───NV24 (0x3432564e)│ │ ├───NV15 (0x3531564e)│ │ ├───NV20 (0x3032564e)│ │ ├───NV30 (0x3033564e)│ │ ├───YUYV (0x56595559)│ │ └───UYVY (0x59565955)│ └───Properties│ ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary│ ├───"FB_ID" (atomic): object framebuffer = 0│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1│ ├───"CRTC_ID" (atomic): object CRTC = 0│ ├───"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] = 0│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0│ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0│ ├───"IN_FORMATS" (immutable): blob = 101│ │ └───DRM_FORMAT_MOD_LINEAR (0x0000000000000000)│ │ ├───XRGB8888 (0x34325258)│ │ ├───ARGB8888 (0x34325241)│ │ ├───XBGR8888 (0x34324258)│ │ ├───ABGR8888 (0x34324241)│ │ ├───RGB888 (0x34324752)│ │ ├───BGR888 (0x34324742)│ │ ├───RGB565 (0x36314752)│ │ ├───BGR565 (0x36314742)│ │ ├───NV12 (0x3231564e)│ │ ├───NV16 (0x3631564e)│ │ ├───NV24 (0x3432564e)│ │ ├───NV15 (0x3531564e)│ │ ├───NV20 (0x3032564e)│ │ ├───NV30 (0x3033564e)│ │ ├───YUYV (0x56595559)│ │ └───UYVY (0x59565955)│ ├───"EOTF" (atomic): range [0, 5] = 0│ ├───"COLOR_SPACE" (atomic): range [0, 12] = 0│ ├───"ASYNC_COMMIT" (atomic): range [0, 1] = 0│ ├───"SHARE_ID" (atomic): range [0, UINT32_MAX] = 100│ ├───"rotation": bitmask {rotate-0, reflect-y} = (rotate-0)│ ├───"alpha": range [0, UINT16_MAX] = 65535│ ├───"pixel blend mode": enum {None, Pre-multiplied, Coverage} = Pre-multiplied│ ├───"zpos": range [0, 7] = 2│ ├───"NAME" (immutable): bitmask {Esmart1-win0} = (Esmart1-win0)│ ├───"FEATURE" (immutable): bitmask {scale} = (scale)│ ├───"INPUT_WIDTH" (immutable): range [0, 4096] = 0│ ├───"INPUT_HEIGHT" (immutable): range [0, 4096] = 0│ ├───"OUTPUT_WIDTH" (immutable): range [0, 4096] = 0│ ├───"OUTPUT_HEIGHT" (immutable): range [0, 4096] = 0│ ├───"SCALE_RATE" (immutable): range [8, 8] = 0│ └───"colorkey": range [0, 2164260863] = 0└───Plane 3├───Object ID: 122├───CRTCs: {0, 1, 2}├───Legacy info│ ├───FB ID: 0│ └───Formats:│ ├───XRGB8888 (0x34325258)│ ├───ARGB8888 (0x34325241)│ ├───XBGR8888 (0x34324258)│ ├───ABGR8888 (0x34324241)│ ├───RGB888 (0x34324752)│ ├───BGR888 (0x34324742)│ ├───RGB565 (0x36314752)│ ├───BGR565 (0x36314742)│ ├───NV12 (0x3231564e)│ ├───NV16 (0x3631564e)│ ├───NV24 (0x3432564e)│ ├───NV15 (0x3531564e)│ ├───NV20 (0x3032564e)│ ├───NV30 (0x3033564e)│ ├───YUYV (0x56595559)│ └───UYVY (0x59565955)└───Properties├───"type" (immutable): enum {Overlay, Primary, Cursor} = Overlay├───"FB_ID" (atomic): object framebuffer = 0├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1├───"CRTC_ID" (atomic): object CRTC = 0├───"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] = 0├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0├───"IN_FORMATS" (immutable): blob = 123│ └───DRM_FORMAT_MOD_LINEAR (0x0000000000000000)│ ├───XRGB8888 (0x34325258)│ ├───ARGB8888 (0x34325241)│ ├───XBGR8888 (0x34324258)│ ├───ABGR8888 (0x34324241)│ ├───RGB888 (0x34324752)│ ├───BGR888 (0x34324742)│ ├───RGB565 (0x36314752)│ ├───BGR565 (0x36314742)│ ├───NV12 (0x3231564e)│ ├───NV16 (0x3631564e)│ ├───NV24 (0x3432564e)│ ├───NV15 (0x3531564e)│ ├───NV20 (0x3032564e)│ ├───NV30 (0x3033564e)│ ├───YUYV (0x56595559)│ └───UYVY (0x59565955)├───"EOTF" (atomic): range [0, 5] = 0├───"COLOR_SPACE" (atomic): range [0, 12] = 0├───"ASYNC_COMMIT" (atomic): range [0, 1] = 0├───"SHARE_ID" (atomic): range [0, UINT32_MAX] = 122├───"rotation": bitmask {rotate-0, reflect-y} = (rotate-0)├───"alpha": range [0, UINT16_MAX] = 65535├───"pixel blend mode": enum {None, Pre-multiplied, Coverage} = Pre-multiplied├───"zpos": range [0, 7] = 6├───"NAME" (immutable): bitmask {Esmart0-win0} = (Esmart0-win0)├───"FEATURE" (immutable): bitmask {scale} = (scale)├───"INPUT_WIDTH" (immutable): range [0, 4096] = 0├───"INPUT_HEIGHT" (immutable): range [0, 4096] = 0├───"OUTPUT_WIDTH" (immutable): range [0, 4096] = 0├───"OUTPUT_HEIGHT" (immutable): range [0, 4096] = 0├───"SCALE_RATE" (immutable): range [8, 8] = 0└───"colorkey": range [0, 2164260863] = 0
