专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

鸿蒙移植指南GPU测试程序编译

  但是我们还需要一些手段进行测试,以确认GPU能够正常工作。这里分享我用过的两个测试程序,glmark2和一个简单的三角形绘制程序。
  简单绘制三角形程序
  该测试程序程序来自AlgoIdeas大神,文末附有AlgoIdeas的原文连接,大家可以进一步细读。
  关键代码AlgoIdeas帖子里面已经提供下载,请大家去原帖下载,原版程序是基于dayu200开发板的,在此我讲解如何进行适配其他设备。适配OpenHarmony窗口系统
  OpenGL渲染出来的数据并不能直接显示到屏幕上,需要适配对接OpenHarmony的窗口系统。
  OpenHarmony提供了NativeWindow的API接口用以创建窗口,我们调用GPU渲染之后的数据就可以采用这个API接口进行显示。
  下载nativewindowwrapper。zip解压放到:foundationwindowwindowmanager
  目录下,因OH版本更新,部分配置需要修改并添加部件信息,修改后的BUILD。gn如下:Copyright(c)HisiliconTechnologiesCo。,Ltd。20212021。Allrightsreservedimport(buildohos。gni)ohossharedlibrary(nativewindowwrapper){sources〔nativewindowwrapper。cpp〕includedirs〔。〕cflags〔Wall,Werror,Wnocastqual,Wnopointerarith,Wnounusedparameter,Wnounusedvariable,Wnodeleteincomplete,〕deps〔foundationwindowwindowmanagerwm:libwm,foundationgraphicgraphic2dframeworkssurface:surface,foundationgraphicgraphic2drosenmodulesrenderserviceclient:librenderserviceclient,〕添加OH部件配置partnamewindowmanagersubsystemnamewindow}
  修改Makefile适配Mesa3d
  原版例子是适配rk3568的闭源驱动的,我们需要修改适配Mesa3d,以及适配64位系统。
  下载nativewindowohos。zip解压放到OH项目根目录。
  Makefile修改适配32位程序,rpi4举例:修改OHOSROOT为自己的目录OHOSROOThomealgoideasopenharmonymaster改为OHOSROOThomediemitOpenHarmony修改三处sysrootsysroot(OHOSROOT)outa311dobjthirdpartymusl改为sysroot(OHOSROOT)outrpi4objthirdpartymusl修改lib链接CLIBSL(OHOSROOT)devicesocrockchiphardwaregpuliblmalibifrostg52g2p0ohosCLIBSL(OHOSROOT)outrk3568packagesphonesystemliblhiloglsurface。zlutils。z改为CLIBSL(OHOSROOT)devicesocbroadcombcm2711standardhardwaregpuliblgalliumdriCLIBSL(OHOSROOT)outrpi4packagesphonesystemliblhiloglsurface。zlutils。z
  Makefile修改适配64位程序,小米6举例:修改OHOSROOT为自己的目录OHOSROOThomealgoideasopenharmonymaster改为OHOSROOThomediemitOpenHarmony修改三处sysrootsysroot(OHOSROOT)outa311dobjthirdpartymusl改为sysroot(OHOSROOT)outsagitobjthirdpartymusl修改lib链接CLIBSL(OHOSROOT)devicesocrockchiphardwaregpuliblmalibifrostg52g2p0ohosCLIBSL(OHOSROOT)outrk3568packagesphonesystemliblhiloglsurface。zlutils。z改为CLIBSL(OHOSROOT)devicesocqualcommmsm8998hardwaregpulib64lgalliumdriCLIBSL(OHOSROOT)outsagitpackagesphonesystemlib64lhiloglsurface。zlutils。z修改CFLAGS:删除marcharmv7amfloatabisoftfpmtunegenericarmv7amfpuneonmthumb修改targetarmlinuxohosmusl改为targetaarch64linuxohosmusl
  编译为可执行程序,加入OH编译框架
  进入nativewindowohos目录执行make命令:cdnativewindowohosmake
  复制生成好的nativemain程序到board仓下的自定义目录,我的是test下的nativewindowohos,然后配置BUILD。gn,添加nativemain为预编译程序。ohosprebuiltexecutable(nativemain){sourcenativewindowohosnativemainpartnamequalcommproductsinstallimages〔system〕installenabletrue}
  重新编译系统,刷机之后使用串口工具输入命令直接运行:nativemain
  如果一切正常,屏幕左上角会显示通过OpenGL接口调用GPU绘制的三角形,颜色会有异常这个无所谓,三角形能正确显示就证明Mesa3d已经正确配置。
  使用glmark2
  glmark2是一个经典的图形测试程序,lhl大神gitee仓中有一份移植的代码,但是有部分没有实现,这里我描述一下如何把glmark2适配到OpenHarmony。适配ohos
  lhlglmark22:https:gitee。comhonglianglinglmark22
  去lhl大神的仓库下载glmark2的源码,删除ohos文件夹,复制我们之前适配mesa3d修改好的ohos文件夹,然后修改编译的python脚本。
  ohosbuildohos64。py:修改runbuildcmdDplatformsohosDeglnativeplatformohosDdridriversDgalliumdriversfreedrenoDvulkandriversDgbmenabledDeglenabledDcpprttifalseDglxdisabledDtoolsDdrisearchpathvendorlib64chipsetsdk修改后runbuildcmdDflavorsohosglesv2其他保持不变适配OpenHarmony本地窗口
  glmark2在OpenHarmony平台不能直接显示,需要对接OpenHarmony的NativeWindow,需要预先完成章节1。1的适配,同时在glmark2中实现对窗口的调用。
  修改glmark2程序中的,添加ohoswrapperlinker。cpp。
  srcmeson。build:nativeohoslibstaticlibrary(nativeohos,nativestateohos。cpp,ohoswrapperlinker。cpp,dependencies:〔libmatrixheadersdep〕,)nativeohosdepdeclaredependency(
  srcohoswrapperlinker。cpp:includeohoswrapperlinker。hincludedlfcn。hincludelog。hboolOhosWrapperLinker::Init(){wrapperModuledlopen(WRAPPERLIBNAME,RTLDNOWRTLDNOLOAD);if(wrapperModule!nullptr){Log::debug(Modulesalreadyloaded,WRAPPERLIBNAME);}else{Log::debug(Loadingmodules,WRAPPERLIBNAME);wrapperModuledlopen(WRAPPERLIBNAME,RTLDNOW);if(wrapperModulenullptr){Log::debug(Failedtoloadmodule:s,dlerror());returnfalse;}}usingInitFuncbool()(WrapperFuncfuncs);InitFuncfuncreinterpretcastInitFunc(dlsym(wrapperModule,WRAPPERFUNCGET));if(funcnullptr){Log::debug(Failedtolookupsfunction:s,WRAPPERFUNCGET,dlerror());dlclose(wrapperModule);returnfalse;}if(func(wapperFuncs)){wrapperwapperFuncs。CreateWindowWrapper();}else{Log::debug(cannotgetwrapperfunctions);returnfalse;}if(wrapper!nullptr){Log::debug(wrapperinitsuccess);returntrue;}returnfalse;}boolOhosWrapperLinker::CreateWindow(uint32tw,uint32th){returnwapperFuncs。CreateWindow(wrapper,w,h);}voidOhosWrapperLinker::GetWindow(){returnwapperFuncs。GetNativeWindow(wrapper);}voidOhosWrapperLinker::SetVisibility(boolvisible){wapperFuncs。SetVisibility(wrapper,visible);}
  srcohoswrapperlinker。h:includecstdintexternC{typedefstruct{void(CreateWindowWrapper)();bool(CreateWindow)(voidwrapper,uint32tw,uint32th);void(GetNativeWindow)(voidwrapper);void(SetVisibility)(voidwrapper,boolvisible);void(DestroyWindowWrapper)(voidwrapper);}WrapperFunc;}classOhosWrapperLinker{public:boolInit();boolCreateWindow(uint32tw,uint32th);voidGetWindow();voidSetVisibility(boolvisible);private:staticconstexprconstcharWRAPPERLIBNAMElibnativewindowwrapper。z。so;staticconstexprconstcharWRAPPERFUNCGETGetWrapperFunc;WrapperFuncwapperFuncs;voidwrappernullptr;voidwrapperModulenullptr;};
  修改glmark2,对接OpenHarmony窗口系统。
  srcnativestateohos。h:ifndefGLMARK2NATIVESTATEOHOSHdefineGLMARK2NATIVESTATEOHOSHincludenativestate。hincludeohoswrapperlinker。hclassNativeStateOhos:publicNativeState{27,628,9classNativeStateOhos:publicNativeStateFlipsthedisplayvoidflip();private:OhosWrapperLinkerwrapper;WindowPropertiesproperties;};endifGLMARK2NATIVESTATEOHOSH
  srcnativestateohos。cpp:includenativestateohos。hincludelog。hInitializesthenativedisplayboolNativeStateOhos::initdisplay(){Log::debug(ss:d,FUNCTION,FILE,LINE);returnwrapper。Init();}GetsthenativedisplayvoidNativeStateOhos::display(){Log::debug(ss:d,FUNCTION,FILE,LINE);returnnullptr;}Creates(orrecreates)thenativewindowboolNativeStateOhos::createwindow(WindowPropertiesconstproperties){propertiesproperties;returnwrapper。CreateWindow(properties。width,properties。height);}Getsthenativewindowanditsproperties。Thedimensionsmaybedifferentthantheonesrequested。voidNativeStateOhos::window(WindowPropertiesproperties){propertiesproperties;returnwrapper。GetWindow();}SetsthevisibilityofthenativewindowvoidNativeStateOhos::visible(boolv){wrapper。SetVisibility(v);return;}WhethertheuserhasrequestedanexitboolNativeStateOhos::shouldquit(){returnfalse;}FlipsthedisplayvoidNativeStateOhos::flip(){return;}
  小米6适配的是arm64位编译环境,编译过程中srcglstateegl。cpp会报错,这里也顺便贴出解决办法。nativedisplayreinterpretcastEGLNativeDisplayType(nativedisplay);nativedisplaystaticcastEGLNativeDisplayType((intptrt)nativedisplay);编译为可执行程序,加入OH编译框架
  在glmark2目录执行以下命令:pythonohosbuildohos64。pyohosbeta5sagitohosbeta5glmark22
  复制buildhosinstallbin下生成好的glmark2es2ohos程序到board仓下的自定义目录,我的是test下的glmark2,然后配置BUILD。gn,添加glmark2es2ohos为预编译程序。ohosprebuiltexecutable(glmark2){sourceglmark2glmark2es2ohospartnamequalcommproductsinstallimages〔system〕installenabletrue}
  重新编译系统,刷机,此时还不能直接运行glamrk2运行需要额外的模型资源跟纹理资源,复制buildhosinstallshareglmark2下的资源到data分区。
  对于小米6,我是进入twrp,挂载data分区,使用mtp程序直接拷贝到机器内部。
  对于树莓派4,我是读卡器插入到Linux主机,然后挂载tf卡的data分区,再拷贝到data分区内。
  最后在小米6对应的路径为datamediaglmark2,其他开发板如果打通了hdc,可通过hdc传输文件。
  理论上也可以通过配置gn预置到某个目录,但是目前还没研究透,打包失败了,有知道的大神可以留言指导以下。
  准备就绪后,使用串口执行以下命令:默认分辨率运行800600glmark2es2ohosdatapathdatamediaglmark2指定分辨率10801920glmark2es2ohoss10801920datapathdatamediaglmark2
  顺利的话可以在屏幕上看到glmark2的渲染窗口。
  至此OpenGL接口的测试程序如何进行编译以及调用验证讲解完毕,希望能对大家有所帮助。

今年第三次,美国再对37家中企制裁!比尔盖茨的话该重视了美国已经彻底疯魔,这次针对中国连借口都不找了!37家中国企业进入美国贸易黑名单,比尔盖茨警告美国别玩火。拜登政府在近日把37家中国企业拉入了贸易黑名单,给出的理由是他们协助中国监视河南男子自称辣王,每天都要吃五斤辣椒配白酒,结局直接打脸我是中国辣王!我是吃辣第一人!世界上还没有能辣倒我的辣椒,你们吃的辣椒那都是小孩子吃的!在镜头前的李永志放下这样的豪言壮语。而他更是声称自己每天都要吃五斤辣椒配白酒,每天吃的辣椒比2018年,山东未婚女子瞒着母亲,生下混血三胞胎,称不需要男人2018年,山东菏泽一位漂亮的29岁单身女子,悄悄地收拾好行李,趁母亲不注意,一溜烟飞到了泰国。她此行的目的,是要让自己怀孕,生孩子。女子名叫李雪珂,是个性情温和的白富美,不仅脸蛋这十条提案,靠谱!句句都是良心话,道出了老百姓面临的真实困境聚焦全国的两会正在召开,这是一场汇民智集民意保民生的盛宴,汇聚了各个层次的人群。参会的代表们会以建议和提案等方式,把老百姓生活和工作中的难事和期望给讲出来。从而,转化为相对应的政策单骑救主!江苏超外狂砍4410,李楠靠他大翻身,已成CBA顶级外援CBA常规赛继续展开,江苏男篮加时114107险胜天津男篮,迎来一波两连胜,江苏男篮战绩已经来到15胜15负,继续稳固联赛第十一的排名。从比赛的整个过程来看,两支球队打得非常胶着,罗氏文脉江苏宿迁罗莊豫章堂视频加载中江苏省宿迁市宿豫区陆集镇十里长庄白马罗庄坐落着一座宏伟的建筑群罗氏文脉馆。该馆由企业家罗乾国出资600多万元兴建,占地面积2000平方米,整个建筑群由碑亭石刻文脉馆豫章堂雷锋精神闪耀边关广西崇左市退役军人志愿服务队为烈士亲属服务代祭扫记事你好,志愿者,我是烈士游光林的家属游贵香,今年没办法亲自为他斟酒,麻烦您,代我帮他斟杯酒,让我看看他日前,广西崇左市退役军人志愿者苏华接到一通来自湖南的陌生电话,表达请求志愿者帮忙寒门贵子庞众望父母残疾,靠捡破烂维持生活,高考744分上清华他是长得最像郭晶晶的男孩,清华校长邱勇曾亲自登门为他送去录取通知书。他就是2017年凭借744分高考成绩,考上清华大学的河北沧州理科状元庞众望。从他朴素的穿着和身后背景就能看出,他幽灵?水鬼?建国初闹得人心惶惶的毛人传言是怎么回事历史开讲奇怪的谣言1947年夏秋之交,江苏省大丰县,国民党与解放军正在此地争夺控制权。在共产党控制的农村地区,话题的主体仍然是日常生活和皇粮,但在普通的田间八卦和家长里短里突然混进谁把50后写的这么真实?直击人心,看完想哭50后的童年非常贫穷,但是他们的零食都是绿色食品,槐花榆钱马齿笕野菜等等甚至可以成为全家餐桌上的美食。用冻红的小嘴吹去上面的浮土,用脏脏的小手擦擦表面的泥巴,就可以放心地大吃特嚼,植此青绿,不负热爱!2023云植树等你来参加!经年回眸,在益起,蓝天责任云植树行动开展已三年有余,这场旨在守护黄河美好生态家园的行动,由你我做起,这场我们共同热爱的故事,终于在宽广的沙漠里,写下了一些属于你我的小小的成就。都说
我,90后,上门帮人洗澡本文来源时代周报作者韩利明2壬烯醛,是老人味的来源,类似油脂和杂草的混合味道,是衰老的标志之一。研究发现,人在40岁后会分泌含有较高浓度的2壬烯醛。勤洗澡,可以减少气味积累,保持身为什么是城阳?中国高铁逆势输出溯源世界经济复苏放缓,全球通胀压力居高难下背景下,中国印尼间高铁出口大单正式发货,为全球经济注入中国信心。近日,我国出口印尼用于雅万高铁的1组高速动车组和1组综合检测列车从青岛港运往印绿证交易列入七部委促进绿色消费实施方案!未来交易行情分析上期发布了绿证来了!快来一起划重点,学会交易,一些热心网友询问绿证交易政策和行情方面的情况,写一篇来统一做个介绍。一近期和绿证交易相关的政策2020年,关于促进非水可再生能源发电健简单聊下山西汾酒中报中一个细节山西汾酒2022年中报中有这么一个细节1。公司实现营业收入153。34亿元,去年同期是121。19亿元,同比增长26。53,或32。15亿元2。合同负债48。44亿元,去年同期是7又见违规担保!100万大罚单来了中国基金报颜颖时隔大半年,监管对ST奥马原实控人的调查有了结果。近日,广东证监局公布行政处罚决定书显示,赵国栋作为奥马电器原实控人,曾自行组织资金转为定期存单,并为第三方开具银行承欧冠战报吉鲁点射助AC米兰31战平矿工北京时间9月15日045,欧冠小组赛第2轮早场比赛率先打响,E组一场比赛中,AC米兰坐镇圣西罗球场迎战克罗地亚豪门萨格勒布迪纳摩。上半场第45分钟,莱奥在禁区内被放倒,裁判果断判罚房价到底能不能降纵观中国房事!这些年来,房价翻着跟头的涨幅,没有专家写文章客观的去分析利弊,一片欣欣向荣,好处千万无一弊端,带动了什么70多个行业的发展,带动地方经济。反之房价暂停的这一年来,众多小说得月楼16进了海滨街里,呵,真是心旷神怡!东西方建筑异彩纷呈,风情万种心怡清馨的气息,宛如蒙蒙撩撩的纱让你飘飘欲仙老虎石沙滩上,大链盒歪着身子躺着休息月儿在卫东的配合下,礁丛浪花溅花中完成了重磅!杜鲁多宣布放假1天3大福利!家庭一年能拿3201加拿大宣布,9月19日(下周一)将作为全国哀悼日和联邦假日,悼念伊丽莎白女王二世。加拿大总理杜鲁多今天在新不伦瑞克省的记者会上宣布了这一消息。图源Twitter我们将与各省和地区合MBAMPAcc联考数学打卡第35天分式不等式的解法适合于备考管理类硕士联考考生(含MBA工商管理硕士EMBA高级工商管理硕士MPA公共管理硕士MPAcc会计硕士MEM工程管理硕士MTA旅游管理硕士MLIS图书情报硕士MAud审计硕中超1终结武汉三镇12连胜直播吧9月14日讯北京时间9月14日1930,中超联赛第18轮,山东泰山主场迎战武汉三镇。上半场比赛,戴维森助攻高准翼首开纪录,下半场比赛,刘洋头球扳平比分。全场比赛结束,双方11
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网