作者lovesnake (LoyalDog)
看板GameDesign
标题Re: [程式] CPU会等GPU吗?
时间Wed Jun 11 20:33:01 2014
※ 引述《justinlcs (班班)》之铭言:
: ※ 引述《lovesnake (LoyalDog)》之铭言:
: : CPU把Batch丢给GPU以後,会等GPU Interapt才继续该Process/Thread吗?
: ^^^^^^^^
: interrupt
: 看你程式怎麽写,但是通常Render Thread只会有一个的情况下,CPU送东西给GPU之後,
: 大部分显示引擎会等到结果返回才进行下一次的render,要不然资源存取很容易打架
: : 还是就直接继续跑,不管GPU了?
: 大多数的引擎都会等,一个render结束才会执行下一个。
: : 问这个问题主要是想知道在Render前後抓时间,抓到的到底是只有
: : CPU的执行时间还是连GPU的都抓得到。
: 在软体层面来说,可以取得的时间只有
: 可以取得CPU准备资料所消耗的时间
: 可以取得CPU送指令给GPU所消耗的时间 + GPU收到指令返回结果所消耗时间的"总和"
: 无法从软体面单独取得CPU送资料给GPU消耗的时间
: 无法从软体面单独取得GPU收到指令完成运算时所消耗的时间
: 我所了解的程度有限,希望可以帮上忙
所用的是最底层的API OpenGL.
主程式可能有很多Thread,Timer、AI、Physics、Rendering等等。
我想知道的是,今天当CPU把Draw Call送给GPU後,是否会将RenderingThread Block,
然後执行其他的Thread,还是Busy-Waiting等到GPU处理完?
或者今天为单一Process,OpenGL的Display Function前後包夹clock();
他会直接把Display处理完丢给GPU,然後直接继续执行,然後等下一次要Display时,再
Wait GPU的Interrupt?
还是会等GPU执行完以後才继续下面的程式呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.121.198.169
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/GameDesign/M.1402489984.A.9BF.html
1F:→ azureblaze:我只知道DX9几乎都不block 等到present()再停下来等 06/11 20:44