※ 引述《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执行完以后才继续下面的程式呢?