当前位置: 首页 > news >正文

在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支持哪些格式等

image.png

# ./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
http://www.dtcms.com/a/546144.html

相关文章:

  • 校园网站制度建设淘宝网页版怎么退出登录
  • Rust 中的零拷贝技术:从原理到实践的深度探索 [特殊字符]
  • 泰州网站建设多少钱什么是4c品牌建设模型
  • 公司网站模板源代码亳州网站建设推广
  • Linux驱动的加载与卸载
  • 二学一做专题网站无锡网页制作报价
  • 装修公司做自己网站珠海网站制作费用
  • 手机网站建站公司wordpress关于本站
  • 网站数字签名做网站能挣钱么
  • 温州做网站的wordpress the7.6
  • 中华古文明的视觉史诗:郭泰来以当代彩墨重构“上古三经”——迟来的祝贺:图书《山海经》荣获“出版奖”
  • Rust BTreeMap 红黑树
  • 为代理网站做网站wordpress站群作用
  • 网站上社保做增员怎么做wordpress html 代码
  • Lua--协程
  • 建立网站目录结构的原则优化二十条
  • 远近互联网站建设成品网站源码1688danji6
  • 枣庄三合一网站开发公司软件开发模型的v模型图
  • 生成式人工智能在教育领域的技术适配性研究:挑战、风险与应对方案
  • 技术解析:AI出海两极分化下的破局指南
  • CAN总线网关到底是什么:双5g车载网关案例
  • GifCam,一款小巧的GIF录制工具
  • 如何让脚本同时兼容Python2和Python3?
  • 永嘉网站建设工作室口腔建立网站
  • 莱芜十大首富多说评论插件对网站优化
  • 网站开发的主要内容亚马逊跨境电商开店
  • Linux 进程退出和进程控制
  • 计算机网络自顶向下方法14——应用层 DNS详解 工作机理
  • [GXDE软件包安装器]在龙芯deepin上一键安装旧世界包
  • dw设计模板系统优化的方法知识点