看板 GameDesign 關於我們 聯絡資訊
※ 引述《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://www.ptt.cc/bbs/GameDesign/M.1402489984.A.9BF.html
azureblaze:我只知道DX9幾乎都不block 等到present()再停下來等 06/11 20:44