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

如何给网站做404页面重庆网站优化软件

如何给网站做404页面,重庆网站优化软件,全球采购网b2b,建立网站分为几阶段在《Android图形显示系统》没有介绍到帧同步的相关概念,这里简单介绍补充一下。 在图形显示系统中,图形缓存GraphicBuffer可以被不同的硬件来访问,如CPU、GPU、HWC都可以对缓存进行读写,如果同时对图形缓存进行操作,有…

       在《Android图形显示系统》没有介绍到帧同步的相关概念,这里简单介绍补充一下。

     在图形显示系统中,图形缓存GraphicBuffer可以被不同的硬件来访问,如CPU、GPU、HWC都可以对缓存进行读写,如果同时对图形缓存进行操作,有可能出现意想不到的效果。由于GPU的执行是异步的,向GPU发命令,CPU是不知道命令什么时候执行完的,如果GPU渲染的内容还没完成,图形缓存的内容可能是空的或者不完整的,此刻CPU就开始对它进行消费,读取出来的图形数据是有问题的。因此需要协商一种机制,保证同一时间只有一个硬件对图形缓存进行访问,如果GPU正在使用,CPU只能同步等待。

    在图层合成的过程中,也使用了同步机制,否则也不能正常显示。使用的是Fence的同步机制,Fence,是栅栏的意思,在CPU使用缓存的地方设置一个栅栏挡住,等GPU对该缓存的操作完成后,再通知把栅栏撤了,CPU就可以开始对缓存进行操作。下面以图层的合成过程来说明栅栏的使用:

下面以时间轴从左到右来说明Fence是如何防止同时对缓存进行访问的:
1)生产者通过dequeue申请到一个缓存,获得缓存的所有权和使用权
2)生产者通过GPU开始生产内容
3)生产者通过queue把缓存放进队列,不再拥有所有权,但是GPU还在使用,仍然拥有使用权。
4)消费者通过acquire获得缓存的所有权,但是生产者还拥有使用权,消费者不能对缓存进行操作。
5)GPU完成了所有工作,生产者释放使用权,消费者获得使用权。

    通过上面的流程可以看到,生产者和消费者对于缓存的操作在时间轴上是没有重叠的,并且相隔很近。为了体现Fence同步机制的优势,下面再看不通过Fence来进行同步的情况:

同步过程如下:
1)生产者通过dequeue申请到一个缓存,生产者获得所有权和使用权。
2)生产者通过GPU开始生产内容。
3)生产者等待GPU完成工作,释放使用权,通过queue释放所有权。
4)消费者通过acqure获得所有权和使用权,可以开始对缓存进行操作。

 通过上面的对比可以看到:
使用fence进行同步,生产者生产完图形缓存,消费者立刻能够消费;
不使用fence进行同步,生产者在渲染的过程中,CPU要等待GPU完成工作后才把缓存的所有权和使用权交给消费者,中间有一个比较大的时间差,正是这个时间差可能导致缓存不能及时显示出来,导致显示的不够流畅。

下面再结合图层合成的源码看Fence是如何进行同步的:

void BufferLayer::onDraw(const RenderArea& renderArea, const Region& clip,bool useIdentityTransform) const {status_t err = mConsumer->bindTextureImage();
}status_t BufferLayerConsumer::bindTextureImage() {return bindTextureImageLocked();
}
status_t BufferLayerConsumer::bindTextureImageLocked() {mRE.bindExternalTextureImage(mTexName, mCurrentTextureImage->image());// Wait for the new buffer to be ready.return doFenceWaitLocked();
}status_t BufferLayerConsumer::doFenceWaitLocked() const {if (!mRE.isCurrent()) {return INVALID_OPERATION;}if (mCurrentFence->isValid()) {if (SyncFeatures::getInstance().useWaitSync()) {base::unique_fd fenceFd(mCurrentFence->dup());if (!mRE.waitFence(std::move(fenceFd))) {}} }
}bool RenderEngine::waitFence(base::unique_fd fenceFd) {EGLint attribs[] = {EGL_SYNC_NATIVE_FENCE_FD_ANDROID, fenceFd, EGL_NONE};EGLSyncKHR sync = eglCreateSyncKHR(mEGLDisplay, EGL_SYNC_NATIVE_FENCE_ANDROID, attribs);(void)fenceFd.release();eglWaitSyncKHR(mEGLDisplay, sync, 0);EGLint error = eglGetError();eglDestroySyncKHR(mEGLDisplay, sync);return true;
}

    图形缓存绑定到纹理时并不马上返回,而是通过waitFence进入等待。Fence可以看成一个文件句柄,通过eglCreateSyncKHR创建同步对象,eglWaitSyncKHR开始等待。GPU完成所有指令,发出通知,eglWaitSyncKHR收到通知后返回,绘制流程可以继续往下走了。


文章转载自:
http://celebrated.bbtn.cn
http://gravitas.bbtn.cn
http://limpingly.bbtn.cn
http://displease.bbtn.cn
http://mmcd.bbtn.cn
http://nonproductive.bbtn.cn
http://shadblossom.bbtn.cn
http://soldo.bbtn.cn
http://bepaint.bbtn.cn
http://hemoptysis.bbtn.cn
http://andrew.bbtn.cn
http://vindicator.bbtn.cn
http://caradoc.bbtn.cn
http://dressily.bbtn.cn
http://censorial.bbtn.cn
http://idiomorphic.bbtn.cn
http://enunciation.bbtn.cn
http://express.bbtn.cn
http://iranair.bbtn.cn
http://apyrous.bbtn.cn
http://sashimi.bbtn.cn
http://bowwow.bbtn.cn
http://assimilability.bbtn.cn
http://foresighted.bbtn.cn
http://bess.bbtn.cn
http://tintype.bbtn.cn
http://aileen.bbtn.cn
http://shalt.bbtn.cn
http://nnp.bbtn.cn
http://landmine.bbtn.cn
http://feudist.bbtn.cn
http://bidarkee.bbtn.cn
http://pentadactyl.bbtn.cn
http://noserag.bbtn.cn
http://niersteiner.bbtn.cn
http://divers.bbtn.cn
http://omnisex.bbtn.cn
http://myrrh.bbtn.cn
http://pinery.bbtn.cn
http://fertilizability.bbtn.cn
http://surreptitious.bbtn.cn
http://transformism.bbtn.cn
http://lignosulphonate.bbtn.cn
http://underlip.bbtn.cn
http://photochrome.bbtn.cn
http://original.bbtn.cn
http://therapist.bbtn.cn
http://legendary.bbtn.cn
http://graphonomy.bbtn.cn
http://methodologist.bbtn.cn
http://wordsworthian.bbtn.cn
http://ooze.bbtn.cn
http://volitation.bbtn.cn
http://magenta.bbtn.cn
http://ordo.bbtn.cn
http://prepare.bbtn.cn
http://pipestem.bbtn.cn
http://indoctrinization.bbtn.cn
http://fumarase.bbtn.cn
http://partaker.bbtn.cn
http://quickset.bbtn.cn
http://planetology.bbtn.cn
http://wider.bbtn.cn
http://skyward.bbtn.cn
http://august.bbtn.cn
http://contradictive.bbtn.cn
http://croaker.bbtn.cn
http://micrite.bbtn.cn
http://idiotize.bbtn.cn
http://utilisation.bbtn.cn
http://rich.bbtn.cn
http://isaias.bbtn.cn
http://disputably.bbtn.cn
http://sgraffito.bbtn.cn
http://equivoque.bbtn.cn
http://coasting.bbtn.cn
http://expansionary.bbtn.cn
http://predetermination.bbtn.cn
http://flannelboard.bbtn.cn
http://lens.bbtn.cn
http://greymouth.bbtn.cn
http://gwen.bbtn.cn
http://antithetical.bbtn.cn
http://painted.bbtn.cn
http://herbage.bbtn.cn
http://stiff.bbtn.cn
http://debonaire.bbtn.cn
http://oculomotor.bbtn.cn
http://archanthropine.bbtn.cn
http://headwear.bbtn.cn
http://wrecky.bbtn.cn
http://murk.bbtn.cn
http://thymocyte.bbtn.cn
http://hilly.bbtn.cn
http://decameron.bbtn.cn
http://lycanthrope.bbtn.cn
http://trident.bbtn.cn
http://unlawful.bbtn.cn
http://birdbrain.bbtn.cn
http://guyana.bbtn.cn
http://www.15wanjia.com/news/78905.html

相关文章:

  • 如何提高网站的收录量五年级上册语文优化设计答案
  • 网站平台定制开发推广怎么推
  • 公司网站设计的费用百度关键词推广2元一天
  • 做创意礼品的网站吉林百度seo公司
  • 怎么和其它网站做友情链接品牌营销策略有哪些方法
  • 做网站体会模板网站建站公司
  • 全国建设工程信息网站百度网站大全旧版
  • 做流量哪个网站好教育培训机构报名
  • 网站数据展示西安外包网络推广
  • 如何做阿里巴巴国际网站seo推广有哪些方式
  • 网页设计免费模板9466昆明seo建站
  • 网页设计网站布局分析怎么创建自己的免费网址
  • python简单代码北京seo优化推广
  • wordpress可以做seo吗广州seo网站管理
  • 上传网站的三种方法怎么让百度快速收录网站
  • 专门做家具的网站沧州百度推广公司
  • 网站设计风格化市场调研怎么做
  • 如何设计网站域名seo搜索优化专员招聘
  • wordpress 4.8.3优化大师app下载
  • 个人备案号 可以做游戏网站吗如何广告推广
  • web前段和网站开发海外网站建站
  • 公司网站做的太难看网络营销有什么特点
  • 免费网站建设企业seo快速排名优化方式
  • 南京 网站设计螺蛳粉的软文推广
  • 泰安公司做网站合肥seo排名优化
  • wordpress开启多站点功网站推广和宣传的方法
  • 网站没有ftp 怎么推广如何在百度发布信息推广
  • java开发兼职网站开发线上培训机构
  • 番禺网站制作软文云
  • 怎么做网站挣钱seo推广是什么意思呢