鸿蒙显示相关接口
摘要 本文档介绍了鸿蒙系统显示相关的两个核心接口模块:display_gralloc和display_devicex。display_gralloc模块提供了内存分配与管理接口,包括Buffer的申请/释放、内存映射/解映射、缓存刷新等操作,部分功能与Android类似但有所扩展。display_devicex模块则负责显示设备管理,包含显示模式设置、电源/背光控制、热插拔/VBlank事件回调、
·
鸿蒙显示相关接口

display_gralloc部分接口定义
以下接口列举的为VDI接口,接口声明见文件/drivers/peripheral/display/buffer/hdi_service/include/idisplay_buffer_vdi.h
| 接口 | 描述 | 与Android |
|---|---|---|
| IDisplayBuffer *Get() | 获取IDisplayBuffer接口的客户端代理对象 | |
| int32_t IsSupportedAlloc(const std::vector& infos, std::vector& supporteds) | 判断是否能申请请求的buffer | |
| int32_t AllocMem(const AllocInfo& info, BufferHandle*& handle) | 申请Buffer | allocate |
| void FreeMem(const BufferHandle& handle) | 释放Buffer | freeBuffer |
| void* Mmap(const BufferHandle& handle) | 将Buffer映射到内存 | Lock |
| int32_t Unmap(const BufferHandle& handle) | 解除Buffer内存映射 | Unlock |
| int32_t RegisterBuffer(const BufferHandle& handle) | 注册Buffer | |
| int32_t FlushCache(const BufferHandle& handle) | 刷新Buffer缓存 | flushLockedBuffer |
| int32_t InvalidateCache(const BufferHandle& handle) | 废弃Buffer缓存 | invalidateBuffer |
| int32_t GetMetadata(const BufferHandle& handle, uint32_t key, std::vector<uint8_t>& value) | 获取Buffer的元数据 | |
| int32_t ListMetadataKeys(const BufferHandle& handle, std::vector<uint32_t>& keys) | 列出所有元数据的key | |
| int32_t EraseMetadataKey(const BufferHandle& handle, uint32_t key) | 清除指定key的元数据信息 |
display_devicex相关接口
drivers/peripheral/display/composer/hdi_service/include/idisplay_composer_vdi.h
| 功能描述 | 接口名称 |
|---|---|
| 注册热插拔事件回调 | int32_t RegHotPlugCallback(HotPlugCallback cb, void* data) |
| 获取显示设备能力集 | int32_t GetDisplayCapability(uint32_t devId, DisplayCapability& info) |
| 获取显示设备支持的显示模式信息 | int32_t GetDisplaySupportedModes(uint32_t devId, std::vector<DisplayModeInfo>& modes) |
| 获取显示设备当前的显示模式 | int32_t GetDisplayMode(uint32_t devId, uint32_t& modeId) |
| 设置显示设备的显示模式 | int32_t SetDisplayMode(uint32_t devId, uint32_t modeId) |
| 获取显示设备当前的电源状态 | int32_t GetDisplayPowerStatus(uint32_t devId, DispPowerStatus& status) |
| 设置显示设备当前的电源状态 | int32_t SetDisplayPowerStatus(uint32_t devId, DispPowerStatus status) |
| 获取显示设备当前的背光值 | int32_t GetDisplayBacklight(uint32_t devId, uint32_t& level) |
| 设置显示设备当前的背光值 | int32_t SetDisplayBacklight(uint32_t devId, uint32_t level) |
| 获取显示设备属性值 | int32_t GetDisplayProperty(uint32_t devId, uint32_t id, uint64_t& value) |
| 获取显示设备合成类型有变化的layer | int32_t GetDisplayCompChange(uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& types) |
| 设置显示设备的裁剪区域 | int32_t SetDisplayClientCrop(uint32_t devId, const IRect& rect) |
| 设置显示设备的显示缓存 | int32_t SetDisplayClientBuffer(uint32_t devId, const BufferHandle& buffer, int32_t fence) |
| 设置显示设备的显示脏区 | int32_t SetDisplayClientDamage(uint32_t devId, std::vector<IRect>& rects) |
| 使能垂直同步信号 | int32_t SetDisplayVsyncEnabled(uint32_t devId, bool enabled) |
| 注册VBlank事件回调 | int32_t RegDisplayVBlankCallback(uint32_t devId, VBlankCallback cb, void* data) |
| 获取显示图层fence | int32_t GetDisplayReleaseFence(uint32_t devId, std::vector<uint32_t>& layers, std::vector<int32_t>& fences) |
| 创建虚拟显示设备 | int32_t CreateVirtualDisplay(uint32_t width, uint32_t height, int32_t& format, uint32_t& devId) |
| 销毁虚拟显示设备 | int32_t DestroyVirtualDisplay(uint32_t devId) |
| 设置虚拟屏的输出缓存 | int32_t SetVirtualDisplayBuffer(uint32_t devId, const BufferHandle& buffer, const int32_t fence) |
| 设置显示设备属性值 | int32_t SetDisplayProperty(uint32_t devId, uint32_t id, uint64_t value) |
| 提交合成送显请求 | int32_t Commit(uint32_t devId, int32_t& fence) |
| 打开图层 | int32_t CreateLayer(uint32_t devId, const LayerInfo& layerInfo, uint32_t& layerId) |
| 关闭图层 | int32_t DestroyLayer(uint32_t devId, uint32_t layerId) |
| 准备要送显的图层 | int32_t PrepareDisplayLayers(uint32_t devId, bool& needFlushFb) |
| 设置图层alpha值 | int32_t SetLayerAlpha(uint32_t devId, uint32_t layerId, const LayerAlpha& alpha) |
| 设置图层区域 | int32_t SetLayerRegion(uint32_t devId, uint32_t layerId, const IRect& rect) |
| 设置图层裁剪区域 | int32_t SetLayerCrop(uint32_t devId, uint32_t layerId, const IRect& rect) |
| 设置图层Z轴次序 | int32_t SetLayerZorder(uint32_t devId, uint32_t layerId, uint32_t zorder) |
| 设置图层预乘 | int32_t SetLayerPreMulti(uint32_t devId, uint32_t layerId, bool preMul) |
| 设置图层转换模式 | int32_t SetLayerTransformMode(uint32_t devId, uint32_t layerId, TransformType type) |
| 设置图层刷新区域 | int32_t SetLayerDirtyRegion(uint32_t devId, uint32_t layerId, const std::vector<IRect>& rects) |
| 设置一个图层的可见区域 | int32_t SetLayerVisibleRegion(uint32_t devId, uint32_t layerId, std::vector<IRect>& rects) |
| 设置一个层的缓冲区 | int32_t SetLayerBuffer(uint32_t devId, uint32_t layerId, const BufferHandle& buffer, int32_t fence) |
| 设置客户端期望的组合类型 | int32_t SetLayerCompositionType(uint32_t devId, uint32_t layerId, CompositionType type) |
| 设置混合类型 | int32_t SetLayerBlendType(uint32_t devId, uint32_t layerId, BlendType type) |
| 设置图层蒙版信息 | int32_t SetLayerMaskInfo(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo) |
| 设置纯色图层 | int32_t SetLayerColor(uint32_t devId, uint32_t layerId, const LayerColor& layerColor) |
更多推荐



所有评论(0)