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

AIDL Hal 开发笔记3---- stable-c HAL 实例分析

目录


stable-c HAL 实例分析

在 HIDL HAL 中 聊过 Same-Process HALs,这类 hal 的调用对性能要求高,一般直接链接,不适用跨进程的方式来调用。

在 AIDL HAL 中,与之对应的是 stable-c HAL。stable-c HAL 就是一个对外接口稳定的 so 库。

接着我们来看一个源码中的 stable-c HAL,hardware/interfaces/graphics/mapper

这里只是给出一个框架,具体需要芯片厂商来做实现。

其中最重要的就是hardware/interfaces/graphics/mapper/stable-c/implutils/include/android/hardware/graphics/mapper/utils/IMapperProvider.h,其中的IMapperV5Impl就是 stable-c HAL 的对外接口:

structIMapperV5Impl{staticconstautoversion=AIMAPPER_VERSION_5;virtual~IMapperV5Impl()=default;virtual AIMapper_ErrorimportBuffer(constnative_handle_t*_Nonnull handle,buffer_handle_t_Nullable*_Nonnull outBufferHandle)=0;virtual AIMapper_ErrorfreeBuffer(buffer_handle_t_Nonnull buffer)=0;virtual AIMapper_ErrorgetTransportSize(buffer_handle_t_Nonnull buffer,uint32_t*_Nonnull outNumFds,uint32_t*_Nonnull outNumInts)=0;virtual AIMapper_Errorlock(buffer_handle_t_Nonnull buffer,uint64_tcpuUsage,ARect accessRegion,intacquireFence,void*_Nullable*_Nonnull outData)=0;virtual AIMapper_Errorunlock(buffer_handle_t_Nonnull buffer,int*_Nonnull releaseFence)=0;virtual AIMapper_ErrorflushLockedBuffer(buffer_handle_t_Nonnull buffer)=0;virtual AIMapper_ErrorrereadLockedBuffer(buffer_handle_t_Nonnull buffer)=0;virtualint32_tgetMetadata(buffer_handle_t_Nonnull buffer,AIMapper_MetadataType metadataType,void*_Nullable destBuffer,size_tdestBufferSize)=0;virtualint32_tgetStandardMetadata(buffer_handle_t_Nonnull buffer,int64_tstandardMetadataType,void*_Nullable destBuffer,size_tdestBufferSize)=0;virtual AIMapper_ErrorsetMetadata(buffer_handle_t_Nonnull buffer,AIMapper_MetadataType metadataType,constvoid*_Nonnull metadata,size_tmetadataSize)=0;virtual AIMapper_ErrorsetStandardMetadata(buffer_handle_t_Nonnull buffer,int64_tstandardMetadataType,constvoid*_Nonnull metadata,size_tmetadataSize)=0;virtual AIMapper_ErrorlistSupportedMetadataTypes(constAIMapper_MetadataTypeDescription*_Nullable*_Nonnull outDescriptionList,size_t*_Nonnull outNumberOfDescriptions)=0;virtual AIMapper_ErrordumpBuffer(buffer_handle_t_Nonnull bufferHandle,AIMapper_DumpBufferCallback _Nonnull dumpBufferCallback,void*_Null_unspecified context)=0;virtual AIMapper_ErrordumpAllBuffers(AIMapper_BeginDumpBufferCallback _Nonnull beginDumpBufferCallback,AIMapper_DumpBufferCallback _Nonnull dumpBufferCallback,void*_Null_unspecified context)=0;virtual AIMapper_ErrorgetReservedRegion(buffer_handle_t_Nonnull buffer,void*_Nullable*_Nonnull outReservedRegion,uint64_t*_Nonnull outReservedSize)=0;};

Google 给出了一个模拟器的实现/external/minigbm/cros_gralloc/mapper_stablec

external/minigbm/cros_gralloc/mapper_stablec/Mapper.cpp中实现了一个 CrosGrallocMapperV5 类继承自 IMapperV5Impl,实现了所有的对外接口。

另外,定义了两个对外的入口符号:

extern"C"uint32_tANDROID_HAL_MAPPER_VERSION=AIMAPPER_VERSION_5;extern"C"AIMapper_ErrorAIMapper_loadIMapper(AIMapper*_Nullable*_Nonnull outImplementation){staticvendor::mapper::IMapperProvider<CrosGrallocMapperV5>provider;returnprovider.load(outImplementation);}

使用 mapper hal 的程序可以通过 AIMapper_loadIMapper 获取AIMapper指针,AIMapper内部的函数最终都会调用到 CrosGrallocMapperV5 类中的具体实现中。

这里两个符号都使用 extern “C” 修饰,也就是, c 和 cpp 程序都可以使用这两个符号来使用 mapper 模块。


http://www.jsqmd.com/news/253638/

相关文章:

  • 基于PLC的卷扬机控制系统
  • AIDL Hal 开发笔记4----驱动开发
  • 收藏级指南:Agentic RAG 彻底升级传统RAG,打造能干活的AI数字同事
  • 基于51单片机的出租车计价器
  • QML基本元素
  • 交直流可编程电源(技术资料) 直流电源是直流输出0-30V 5A TL494 线路; 交流电压...
  • DevSecOps时代测试工具的进化论:从功能验证到全链路质量保障
  • 收藏级!大厂后端面试全流程复盘+大模型从入门到实战学习礼包
  • 【Java毕设全套源码+文档】基于springboot的公务员考试管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 基于Arduino的物流分拣控制系统设计
  • 【Java毕设全套源码+文档】基于springboot的新闻发布会管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 本土DevOps领军者Gitee:如何重塑中国企业研发效能新范式
  • 收藏!AI焦虑别慌,程序员为啥要学大模型?零基础系统入门指南
  • listmap数据变驼峰
  • 【Java毕设源码分享】基于springboot+vue的水果在线销售系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 量产HLW8032串口通讯芯片的三相电参数采集系统项目资料 1主芯片采用STM32F407
  • Java后端开发学习路线,零基础入门到精通,收藏这篇就够了
  • Maven 4 终于快来了,新特性很香!
  • AntDesign Table sorter 为什么点击第三次取消了,还是有参数发出?可设置sortDirections解决
  • 如何应对AI生成重复内容:精选十大工具评测及有效解决策略
  • 【Java毕设源码分享】基于springboot+vue的二手书交易商城系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • AI驱动的11款论文写作工具,提供LaTeX格式智能排版与内容优化功能。
  • AI驱动的11项论文写作工具,支持LaTeX格式排版与智能内容优化
  • 2026电子行业投资策略:具身智能赋能全产业链,本土硬科技从星火到燎原
  • 拒稿退散!宏智树 AI 解锁期刊论文录用密码
  • 芯片级机密计算,天翼云CSV3筑牢数据“可用不可见”防线
  • 绿的谐波纳米减速器量产,苏州中新具身智能产业园开工,亚马逊升级物流机器人,波士顿动力Atlas迭代​
  • 查重 + AIGC 双险通关!宏智树 AI:给论文注入人工原创灵魂
  • 【计算化学与人工智能驱动的 MOFs 性能预测与筛选技术】
  • 四足机器人场景应用发展蓝皮书(2025)