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

鸿蒙移植指南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接口的测试程序如何进行编译以及调用验证讲解完毕,希望能对大家有所帮助。

加仓的技巧1战略建仓和加仓先来区分一个概念,战略建仓和加仓。加仓是指在有持仓的情况下再开立新的同方向的仓位。战略建仓也是开立新的仓位,但是我认为意义不一样,很多人对这两个概念容易混淆,或者说黑白配越经典越耐穿,时尚博主这一身造型,时髦洋气经典的黑白配风格更好看,白色oversize的设计则是刚好形成比例,白色的短款以及拉伸最为合适,白色作为外搭本身就是和整体形成比例,三七分更为合适白色外搭黑色oversize的裤型曲悦女人这样吃,30天瘦成小V脸你是否总是抱怨脸太大拍照难看?全身都瘦就是脸不瘦?在这个看脸看身材的社会,有一张不错的脸可以说是如鱼得水,自然就成了女人最关注的部位。可是每次长胖,一胖就胖脸,这让很多妹纸们很苦恼全队96分,一人拿50分!命中16记三分!女版库里,她非职业女篮?5年前,当勇士队拿到73胜的那天,NBA头条消息并非属于他们。正巧科比退役战役,在那天直接抢走了勇士73胜的热度。那么今天,库里必须拿到NBA的头牌热度,生涯2974记三分正式超越火箭公布交易计划,133悍将大概率留队,费尔蒂塔愿意送走圆脸登北京时间12月15日,NBA常规赛正在进行,其中费城76人对于杰伦布朗非常感兴趣,仍然把詹姆斯哈登视为首要引援对象,太阳管理层探索杰伦史密斯的交易价值,并有意马刺的赛迪斯杨。就在刚开放王国荷兰现状,三分钟,带你看看真实的荷兰在我们印象里,荷兰是一个童话王国,郁金香风车,住房医疗教育的福利都很好,在这美好的背后,还有惊世骇俗的各种文化。荷兰这个开放的国家,对各方面都比较宽容,粉红色的灯泡在黑夜中,显得格赵露思真的只有80斤吗?学院风打扮又纯又欲,肉感腿成优势说起青春减龄感强的时尚单品,很多人都会想到短裙。不过短裙造型是否惊艳,还取决于裙型和搭配技巧。比如带小伞形轮廓的学院风短裙,就能改善腰臀曲线问题,让微胖女人也有娇俏感。我们在穿学院人人都有短靴,不如今年换一双鞋子中筒靴,时髦显瘦,还提气质秋冬季节,街头上最为常见的就是短靴。的确,短靴十分百搭好穿,还能为造型增加一定的利落感,是冬日必备的鞋子之一。人人都有短靴,今年冬天大家不妨换一双鞋子来尝尝鲜,在这里我推荐大家pi早知道中央经济工作会议全面实行股票发行注册制十四五冷链物流发展规划印发摘要光庭信息超达装备今日新股申购中央经济工作会议在北京举行中央经济工作会议全面实行股票发行注册制权威人士解读中央经济工作会议稳是最为突出关键词,房地产是支柱产业仍坚持房住不炒证监会1985年,百万大裁军后,54集团军成立,军部驻地为什么选址新乡?1985年,百万大裁军后,54集团军成立,军部驻地为什么选址新乡?54集团军是一支英雄的部队,前身54军历经抗美援朝对印反击战对越反击战。54军将星璀璨,走出了董占林何其宗张万年李1964年,张爱萍重要会议中告假,为何被周恩来拦下搜口袋?1964年10月的一天,周总理等人在紫光阁开展了一场重要会议,正当众人在激烈讨论的时候,时任副总参谋长的张爱萍却站了起来,向周总理请假说今晚他有一个外交部活动要参加,需提前离开。听
年底男发怎么剪?周边铲短露额发齐刘海,很多男士剪完都很帅既然你我相遇,那就是缘分,关注时尚,关注发型,关注刘丽丽男人不论年龄大小,都想让自己变得帅气一些,尤其是到了年底,都会选择把发型整一整,来让自己变得更有型,更帅气。那么今年年底剪什男士穿搭基础第一,全身上下不能超过三个色系。多数人以为的三种颜色其实是指三个色系,比如说浅灰和暗灰这属于同一个色系,那么穿在身上则只属于一个颜色。举个简单的例子,如果一位男士穿了一件浅蓝色的的身体瘀堵病在脸上!脸上有这种斑的人千万注意说到漂亮的脸蛋,很多人心里的标准都是皮肤细腻光洁。不过,随着年龄的增长,很多人发现自己的面色越来越晦暗色斑遍布,还顶着两个大大的黑眼圈。这是因为人老了吗?并不是!这可能是因为您有瘀男士如何穿,造型时髦又实用?上繁下简的技巧运用起来男士们在进行冬季搭配时,往往会避免自己的造型太过繁杂,而通常选择纯色搭配或者是单一配色。事实上,男士的冬季搭配同样可以复杂一些,只要选对了搭配技巧,就能够让造型变得时髦又实用!上繁从20岁穿到50岁的牛角扣大衣,大衣里的牛气单品,让男士大方气质大衣是再常见不过的单品,尤其是各种款式简约大方的纯色系大衣,相信男士们人人都有的。大衣款式众多,有经典款俏皮款休闲款。如果男士想要打造大方气质的冬季造型,可以试一试牛角扣的大衣,这全红婵不用担心发育长高了,周继红重大决定,新教练陈若琳立大功全红婵不用担心发育长高了!周继红重大决定,22冠王立大功12月21日第十五届短池游泳世锦赛落下帷幕,本届跳水的比赛地点设立在亚斯岛海边,全红婵和队友们努力训练备战,克服了跳海的恐惧最受欢迎的球星詹姆斯!最令人讨厌的球队湖人根据美媒Geotagged推特数据,本赛季全美各个州最讨厌的NBA球队出炉,湖人无悬念登顶。美国50个州中有26个州的最讨厌球队是湖人队篮网被12个州讨厌,位居次席勇士被4个州讨厌始料不及,陈亚楠铁杆粉全都退了,这下终于要凉凉了亚楠粉丝群的铁杆粉丝全都退群了,也就是说亚楠现在是光杆司令,意不意外,惊不惊喜。有人发现,陈亚楠最近抖音都刷不到她了,铁杆们也一个个离开了。典型的墙倒众人推,破鼓乱人捶了。这个结果女排周苏红,结婚5个月丈夫瘫痪,改嫁富商后把前夫当成亲弟弟有一种爱叫做放手,为爱放弃天长地久,我们相守若让你付出所有,让真爱带我走。这是歌曲有一种爱叫做放手里的歌词。也是周苏红与汤淼的婚姻。2007年,排球运动员汤淼在一场比赛中发生意外,年轻人的黄金亿万富翁列出比特币的好处亿万富翁投资者RayDalio表示,对于下一代投资者来说,比特币是黄金的替代品。他本人认为,比特币作为一种投资资产具有优势它使投资组合多样化并具有估计价值。对冲基金BridgewaiPhone离线定位立大功,被关机也成功找回微信禁止强制关注相信大家现在出去吃饭,只要稍微有点规模的餐馆都用上了扫码点餐,我们也习惯了在桌角上扫个码直接点餐,确实非常方便。不过可能也有一部分人发现了,扫码点餐全部都需要登录微
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网