本發明涉及計算機,特別是涉及一種圖形流水線采樣方法、圖形處理器及電子設備。
背景技術:
1、圖形流水線是將三維場景繪制成屏幕上顯示的二維圖像的一系列處理步驟。圖形流水線包括多個流水級,如輸入組裝級(input?assembler)、頂點著色器(vertex?shader)、光柵化器(rasterization)、像素著色器(pixel?shader)、輸出混合級(output?merger)等。
2、其中,輸入組裝級是圖形流水線的第一個流水級,是固定功能的流水級,用于將應用發來的頂點信息打包成后續流水需要的處理任務,其輸出是頂點著色器的輸入。頂點著色器接收輸入組裝級提供的頂點數據,對每個頂點進行處理,包括位置坐標的變換和顏色等屬性的計算,為每個頂點計算出最終的位置、顏色、法線等屬性,經過處理后將頂點數據傳遞給光柵化器。光柵化器以頂點著色器輸出的頂點數據為輸入,將其轉換為屏幕上的像素點,為像素著色器提供需要處理的像素信息。像素著色器用于對光柵化器生成的每個像素點進行處理,計算每一個像素的最終顯示顏色,將計算得到的像素顏色等信息傳遞給輸出混合級,其輸出結果決定了每個像素最終在屏幕上顯示的顏色。輸出混合級用于將像素顏色與渲染目標緩沖區中的值進行混合,生成最終的圖像。
3、圖形流水線是圖形處理器(graphics?processing?unit,gpu)工作的通用模型,以某種形式表示的三維場景為輸入,輸出二維的光柵圖像(raster?images)到顯示器。圖形繪制過程中,可能需要使用采樣指令對圖形流水線中的事件進行采樣,以實時檢查圖形流水線的執行狀態。圖形流水線中定義了若干事件,如頂點數、圖元數、被裁剪的圖元數等。為保證事件的采樣值正確,當解析到采樣指令時,需要等待整個圖形流水線排空后,才能執行采樣指令。也即,采樣過程需要暫停整個圖形流水線,可能會引入不必要的等待,降低圖形流水線的性能。
技術實現思路
1、鑒于上述問題,提出了本發明實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種圖形流水線采樣方法,可以實現更為精細的事件采樣流程,減少不必要的等待,提高圖形流水線的性能。
2、相應的,本發明實施例還提供了一種圖形處理器、電子設備、可讀存儲介質以及一種計算機程序產品,用以保證上述方法的實現及應用。
3、第一方面,本發明實施例公開了一種圖形流水線采樣方法,應用于圖形處理器,所述圖形處理器包括圖形流水線,所述圖形流水線包括指令處理前端以及與所述指令處理前端依次相連的若干級功能模塊,每級功能模塊內預置有采樣模塊,所述方法包括:
4、所述指令處理前端從指令緩沖區按順序讀取待執行指令,若識別所述待執行指令為采樣指令,則將所述采樣指令轉換為目標指令流,輸入所述圖形流水線的各級功能模塊依次進行處理;所述目標指令流用于獲取所述采樣指令指示的目標事件的采樣值;
5、對于接收到所述目標指令流的目標采樣模塊,若識別到所述目標事件命中本級功能模塊對應的事件,則在確定本級功能模塊排空后,獲取所述目標事件的采樣值并插入所述目標指令流,得到更新后的目標指令流;
6、所述目標采樣模塊向下一個模塊轉發所述更新后的目標指令流。
7、第二方面,本發明實施例公開了一種指令處理方法,應用于圖形處理器,所述圖形處理器包括圖形流水線,所述圖形流水線包括依次相連的若干級功能模塊,所述方法包括:
8、識別待執行指令是否為采樣指令;所述采樣指令包含用于指示目標事件的第一操作數,以及用于指示目標地址的第二操作數;所述目標地址為待寫入所述目標事件的采樣值的內存首地址;
9、若識別所述待執行指令為采樣指令,則根據所述第一操作數生成第一指令,以及根據所述第二操作數生成第二指令,得到由所述第一指令和所述第二指令組成的目標指令流;所述目標指令流用于獲取所述采樣指令指示的目標事件的采樣值;所述第一指令用于傳遞所述目標事件,所述第二指令用于傳遞所述目標地址;
10、所述目標指令流經過所述圖形流水線的各級功能模塊依次進行處理,并在命中所述目標事件的相應功能模塊排空后基于目標事件的采樣值被更新。
11、第三方面,本發明實施例公開了一種圖形處理器,所述圖形處理器包括圖形流水線,所述圖形流水線包括指令處理前端以及與所述指令處理前端依次相連的若干級功能模塊,每級功能模塊內預置有采樣模塊,其中:
12、所述指令處理前端,用于從指令緩沖區按順序讀取待執行指令,若識別所述待執行指令為采樣指令,則將所述采樣指令轉換為目標指令流,輸入所述圖形流水線的各級功能模塊依次進行處理;所述目標指令流用于獲取所述采樣指令指示的目標事件的采樣值;
13、所述采樣模塊,用于接收到所述目標指令流,若識別到所述目標事件命中本級功能模塊對應的事件,則在確定本級功能模塊排空后,獲取所述目標事件的采樣值并插入所述目標指令流,得到更新后的目標指令流;向下一個模塊轉發所述更新后的目標指令流。
14、第四方面,本發明實施例公開了一種圖形處理器,所述圖形處理器包括圖形流水線,所述圖形流水線包括指令識別模塊、指令轉換模塊以及與所述指令轉換模塊依次相連的若干級功能模塊;
15、所述指令識別模塊,用于識別待執行指令是否為采樣指令;所述采樣指令包含用于指示目標事件的第一操作數,以及用于指示目標地址的第二操作數;所述目標地址為待寫入所述目標事件的采樣值的內存首地址;
16、所述指令轉換模塊,用于若識別所述待執行指令為采樣指令,則根據所述第一操作數生成第一指令,以及根據所述第二操作數生成第二指令,得到由所述第一指令和所述第二指令組成的目標指令流;所述目標指令流用于獲取所述采樣指令指示的目標事件的采樣值;所述第一指令用于傳遞所述目標事件,所述第二指令用于傳遞所述目標地址;
17、所述功能模塊,用于對經過的目標指令流進行處理,并在命中所述目標事件的相應功能模塊排空后基于目標事件的采樣值更新所述目標指令流。
18、第五方面,本發明實施例公開了一種電子設備,包括:處理器、存儲器、通信接口和通信總線,所述處理器、所述存儲器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲器用于存放至少一可執行指令,所述可執行指令使所述處理器執行如前述中任一所述的圖形流水線采樣方法的步驟。
19、第六方面,本發明實施例公開了一種可讀存儲介質,所述可讀存儲介質上存儲程序或指令,所述程序或指令被處理器執行時能夠實現如前述中任一所述的圖形流水線采樣方法。
20、第七方面,本發明實施例公開了一種計算機程序產品,包括計算機程序,所述計算機程序被處理器執行時如前述中任一所述的圖形流水線采樣方法的步驟。
21、本發明實施例包括以下優點:
22、本發明實施例通過在采樣指令中指定待采樣的目標事件,指令處理前端將該采樣指令轉換為采樣模塊可識別的目標指令流,所述目標指令流用于獲取所述采樣指令指示的目標事件的采樣值。目標指令流經過圖形流水線的各級功能模塊(內置的采樣模塊)依次進行處理,當某級功能模塊內置的采樣模塊接收到目標指令流,并且識別到待采樣的目標事件命中本級功能模塊對應的事件時,獲取命中的目標事件的采樣值并插入目標指令流。當目標指令流經過圖形流水線的各級功能模塊(內置的采樣模塊)依次進行處理完成之后,可以統計得到所述采樣指令指示的所有目標事件的采樣值。在整個過程中,不需要等待整個圖形流水線排空,當目標指令流到達某個采樣模塊時,只需要等待本級功能模塊排空,即只需要暫停本級功能模塊的執行,不影響其他功能模塊的執行。本發明實施例將采樣點散布在圖形流水線中的各級功能模塊,可以減小采樣的粒度,使得采樣指令在指定的功能模塊中執行,不會阻塞圖形流水線中的其他功能模塊,能夠實現更為精細的事件采樣流程,可以減少不必要的等待,提高圖形流水線的性能,從而提高gpu繪制圖形的效率。