儲器中。 因此,駐留檢查可用于確定所述紋理的一部分(例如,可以用于圖片的給定渲染的紋理的粒 度水平)是駐留還是非駐留。例如,GPU可請求駐留檢查以確定例如特定粒度水平的紋理是 否可用于存儲器及存儲器控制器8中,或I0MMU可返回指示駐留檢查的結(jié)果的駐留確認(rèn),例 如特定粒度水平的紋理是否可用于存儲器中。在渲染圖片需要紋理的非駐留部分時,存儲 器控制器8或I0MMU可返回默認(rèn)值。
[0044] 在一些實(shí)例中,在渲染圖片所需要的紋理在存儲器中不可用時,客戶端可求助于 具有較高mipmap水平(MIP水平)的更粗糙的紋理,其中給定紋理的以像素計(jì)的大小較小,并 且因此,紋理較粗糙。mipmap是表示相同圖像的陣列的有序集合;每一陣列具有低于先前分 辨率的分辨率。例如,mipmap水平(MIP水平)0可針對最高分辨率圖像,MIP水平1可針對第二 最高分辨率圖像,以此類推,其中最高M(jìn)IP水平針對具有最粗糙分辨率的圖像(參看表1)。較 粗糙的紋理是可由處理器存儲的紋理的較不詳細(xì)版本且其可取得較少的存儲器來存儲紋 理的較不詳細(xì)版本。因此,存儲紋理的一或多個較不詳細(xì)版本而不存儲紋理的詳細(xì)版本可 更有效。部分駐留的紋理的較粗糙版本可更可能是駐留的。在一些實(shí)例中,部分駐留紋理的 較粗糙版本可取決于給定紋理所需要的細(xì)節(jié)水平(L0D)而為可接受的。在一些實(shí)例中,紋理 單元可選擇所顯示的粗糙水平。例如,紋理單元可選擇駐留的較粗糙紋理而不是非駐留的 更詳細(xì)紋理。紋理單元可為單獨(dú)的硬件或可為像素著色器或其它著色器的部分。
[0045]
[0046] 表 1
[0047] 本文中描述的實(shí)例一般提供"失效保護(hù)",使得非駐留頁不出現(xiàn)頁錯誤。例如,通過 求助于具有較高mipmap水平(MIP水平)的更粗糙的紋理,在渲染圖片所需要的紋理在存儲 器中不可用時。在一些實(shí)例中,可不需要讀取。此可例如在讀取比加載在存儲器中的紋理水 平更詳細(xì)的紋理水平時發(fā)生。在此情況下,可告訴所述應(yīng)用紋理未駐留且可使用較不詳細(xì) 版本。紋理可能不被加載到保存存儲器。對于色彩寫入,可能遺失到保存物理存儲器的頁。
[0048] -些實(shí)例可存取非駐留頁以用于色彩緩沖。色彩緩沖可包含僅讀取操作、僅寫入 操作或讀取及寫入操作兩者。處理器(例如,GPU)可在例如使用目的地阿爾法通道信息且阿 爾法通道信息的當(dāng)前值將被保持且寫入被中止時執(zhí)行僅讀取操作。此可例如在混合情況中 發(fā)生。阿爾法通道是可添加到圖像的額外通道。阿爾法通道信息含有關(guān)于圖像的透明度信 息,且取決于阿爾法類型,其可含有各種水平的透明度。阿爾法通道一般控制所有其它通道 的透明度。通過將阿爾法通道信息添加到圖像,紅色通道、綠色通道及藍(lán)色通道的透明度可 受到控制。僅寫入通??捎糜趯⑸手祵懭氲酱鎯ζ?,例如每一像素一個色彩值。讀取及寫 入可一般用于混合。例如,處理器可讀取像素的目的地色彩及目的地阿爾法且使用例如與 所述像素的傳入源色彩及源阿爾法的波特-達(dá)夫樣式混合而合并所述像素的信息。因此,處 理器可讀取且隨后寫入與混合所述數(shù)據(jù)相關(guān)的數(shù)據(jù)。在一些情況下,可存在中止的寫入,在 此情況下,僅發(fā)生讀取。(波特-達(dá)夫混合規(guī)則界定用于控制兩個源像素對目的地像素的貢 獻(xiàn)的一對混合等式)。
[0049]圖1是說明可用于實(shí)施本發(fā)明中描述的技術(shù)的實(shí)例計(jì)算裝置2的框圖。計(jì)算裝置2 可包括個人計(jì)算機(jī)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、計(jì)算機(jī)工作站、視頻游戲平臺或控制臺、 無線通信裝置(例如,移動電話、蜂窩式電話、衛(wèi)星電話和/或移動電話手持機(jī))、陸線電話、 因特網(wǎng)電話、例如便攜式視頻游戲裝置或個人數(shù)字助理(PDA)的手持式裝置、個人音樂播放 器、視頻播放器、顯示裝置、電視、電視機(jī)頂盒、服務(wù)器、中間網(wǎng)絡(luò)裝置、主機(jī)計(jì)算機(jī)或處理 及/或顯示圖形數(shù)據(jù)的任何其它類型的裝置。
[0050]如圖1的實(shí)例中所說明,計(jì)算裝置2包含用戶接口4、CPU 6、存儲器控制器8、存儲器 10、圖形處理單元(GPU) 12、GPU高速緩沖存儲器14、顯示接口 16、顯示器18和總線20。用戶接 口4、CPU 6、存儲器控制器8、GPU 12和顯示接口 16可使用總線20彼此通信。應(yīng)注意,圖1中說 明的不同組件之間的總線和通信接口的特定配置僅是示范性的,且具有相同或不同組件的 計(jì)算裝置和/或其它圖形處理系統(tǒng)的其它配置可用以實(shí)施本發(fā)明的技術(shù)。
[0051] CPU 6可包括控制計(jì)算裝置2的操作的通用或?qū)S锰幚砥?。用戶可將輸入提供到?jì) 算裝置2以致使CPU 6執(zhí)行一或多個軟件應(yīng)用。在CPU 6上執(zhí)行的軟件應(yīng)用可包含(例如)操 作系統(tǒng)、字處理器應(yīng)用、電子郵件應(yīng)用、電子數(shù)據(jù)表應(yīng)用、媒體播放器應(yīng)用、視頻游戲應(yīng)用、 圖形用戶接口應(yīng)用或另一程序。用戶可經(jīng)由一或多個輸入裝置(未圖示)(例如,鍵盤、鼠標(biāo)、 麥克風(fēng)、觸摸墊或經(jīng)由用戶輸入接口 4耦合到計(jì)算裝置2的另一輸入裝置)將輸入提供到計(jì) 算裝置2。
[0052]在CPU 6上執(zhí)行的軟件應(yīng)用可包含指令GPU 12致使將圖形數(shù)據(jù)渲染到顯示器18的 一或多個圖形渲染指令。在一些實(shí)例中,軟件指令可符合圖形應(yīng)用編程接口(API),例如開 放圖形庫(〇penGLK)API、開放圖形庫嵌入系統(tǒng)(OpenGL ES)API、Direct3D API、DirectX API、RenderMan API、WebGL API或任何其它公共或?qū)S袠?biāo)準(zhǔn)圖形API。為了處理圖形渲染指 令,CPU 6可將一或多個圖形渲染命令發(fā)布到GPU 12以致使GPU 12執(zhí)行圖形數(shù)據(jù)的渲染的 一些或全部。在一些實(shí)例中,待渲染的圖形數(shù)據(jù)可包含例如點(diǎn)、線、三角形、四邊形、三角形 帶、小片等圖形基元的列表。
[0053]本發(fā)明提供向客戶端(例如CPU 6、GPU 12或存儲器控制器8)告知存儲器頁(例如, 虛擬存儲器的固定長度鄰接塊)非駐留在存儲器10中的系統(tǒng)及方法。一些實(shí)例可包含嘗試 存取非駐留頁且確定非駐留頁不應(yīng)該導(dǎo)致頁錯誤。此確定可基于指示特定非駐留頁不應(yīng)該 產(chǎn)生頁錯誤的位。一些實(shí)例可在對所述非駐留頁的存取是讀取時返回默認(rèn)值。在一些實(shí)例 中,所述非駐留頁不應(yīng)該導(dǎo)致頁錯誤且在對所述非駐留頁的存取是寫入時中斷寫入。所述 非駐留頁不應(yīng)該導(dǎo)致頁錯誤。在另一實(shí)例中,處理器(例如GPU 12)可嘗試存取非駐留頁 (即,未存儲于存儲器(例如存儲器10)中的頁)。非駐留頁的地址可替代地指向例如含有默 認(rèn)值的存儲器10中的存儲器頁。在對所述非駐留頁的存取是讀取且非駐留頁不應(yīng)該導(dǎo)致頁 錯誤時,默認(rèn)值可由存儲器10通過存儲器控制器8返回到GPU 12。在寫入是對非駐留頁且所 述非駐留頁不應(yīng)該導(dǎo)致頁錯誤時,例如GPU 12等處理器的寫入可被中斷。在一些實(shí)例中,例 如GPU 12等處理器可重新計(jì)算從中斷的寫入丟失的數(shù)據(jù)(如果稍后需要所述數(shù)據(jù))。
[0054] 存儲器控制器8促進(jìn)將數(shù)據(jù)傳遞進(jìn)出存儲器10。例如,存儲器控制器8可從CPU 6 及/或GPU 12接收存儲器讀取請求及存儲器寫入請求,且服務(wù)關(guān)于存儲器10的此類請求以 便為計(jì)算裝置2中的組件提供存儲器服務(wù)。存儲器控制器8通信地耦合到存儲器10。雖然在 圖1的實(shí)例計(jì)算裝置2中將存儲器控制器8說明為與CPU 6及存儲器10兩者分開的處理模塊, 但在其它實(shí)例中,存儲器控制器8的功能性中的一些或全部可實(shí)施在CPU 6、GPU 12及存儲 器10中的一或多者上。在一些實(shí)例中,存儲器管理單元(MMU)可為例如GPU 12或其它客戶端 的部分。在其它實(shí)例中,MMU(未圖示)可在每個客戶端(例如GPU 12)與存儲器控制器8之間。 [0055]存儲器10可存儲可存取以供CPU 6執(zhí)行的程序模塊和/或指令和/或供CPU 6上執(zhí) 行的程序使用的數(shù)據(jù)。舉例來說,存儲器10可存儲用戶應(yīng)用和與所述應(yīng)用相關(guān)聯(lián)的圖形數(shù) 據(jù)。存儲器10還可存儲供計(jì)算裝置2的其它組件使用和/或由其產(chǎn)生的信息。舉例來說,存儲 器10可充當(dāng)用于GPU 12的裝置存儲器且可存儲將由GPU 12操作的數(shù)據(jù)以及由GPU 12執(zhí)行 的操作產(chǎn)生的數(shù)據(jù)。舉例來說,存儲器10可存儲路徑數(shù)據(jù)、路徑片段數(shù)據(jù)、表面、紋理緩沖 器、深度緩沖器、單元緩沖器、頂點(diǎn)緩沖器、幀緩沖器或類似者的任何組合。另外,存儲器10 可存儲命令流以供GPU 12處理。存儲器10可包含一或多個易失性或非易失性存儲器或存儲 裝置,例如隨機(jī)存取存儲器(RAM)、靜態(tài)RAM(SRAM)、動態(tài)RAM(DRAM)、同步動態(tài)隨機(jī)存取存儲 器(SDRAM)、只讀存儲器(ROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、快 閃存儲器、磁性數(shù)據(jù)媒體或光學(xué)存儲媒體。
[0056] GPU 12可經(jīng)配置以執(zhí)行由CPU 6發(fā)出到GPU 12的命令。由GPU 12執(zhí)行的命令可包 含圖形命令、繪制調(diào)用命令、GPU狀態(tài)編程命令、存儲器傳送命令、通用計(jì)算命令、內(nèi)核執(zhí)行 命令等。存儲器傳遞命令可包含例如存儲器復(fù)制命令、存儲器合成命令及塊傳遞(傳圖)命 令。
[0057] 在一些實(shí)例中,GPU 12可經(jīng)配置以執(zhí)行圖形操作以向顯示器18渲染一或多個圖形 基元。在此些實(shí)例中,當(dāng)在CPU 6上執(zhí)行的軟件應(yīng)用中的一者需要圖形處理時,CPU 6可將圖 形數(shù)據(jù)提供到GPU 12以用于向顯示器18渲染且將一或多個圖形命令發(fā)出到GPU 12。所述圖 形命令可包含例如繪制調(diào)用命令、GPU狀態(tài)編程命令、存儲器傳遞命令、傳圖命令等。圖形數(shù) 據(jù)可包含頂點(diǎn)緩沖器、紋理數(shù)據(jù)、表面數(shù)據(jù)等。在一些實(shí)例中,CPU 6可通過將命令和圖形數(shù) 據(jù)寫入到存儲器10而將所述命令和圖形數(shù)據(jù)提供到GPU 12,存儲器10可由GPU 12存取。 [0058]在其它實(shí)例中,GPU 12可經(jīng)配置以針對在CPU 6上執(zhí)行的應(yīng)用執(zhí)行通用計(jì)算。在此 些實(shí)例中,當(dāng)在CPU 6上執(zhí)行的軟件應(yīng)用中的一者決定卸載到GPU 12的計(jì)算任務(wù)時,CPU 6 可將通用計(jì)算數(shù)據(jù)提供給GPU 12,且將一或多個通用計(jì)算命令發(fā)出到GPU 12。所述通用計(jì) 算命令可包含例如內(nèi)核執(zhí)行命令、存儲器傳遞命令等。在一些實(shí)例中,CPU 6可通過將命令 和圖形數(shù)據(jù)寫入到可由GPU 12存取的存儲器10而將命令和通用計(jì)算數(shù)據(jù)提供到GPU 12。
[0059] 在一些情況下,GPU 12可內(nèi)建有高度并行的結(jié)構(gòu),其提供比CPU 6更有效的處理。 舉例來說,GPU 12可包含經(jīng)配置而以并行方式對多個頂點(diǎn)、控制點(diǎn)、像素和/或其它數(shù)據(jù)操 作的多個處理元件。GPU 12的高度并行性質(zhì)在一些情況下可允許GPU 12與使用CPU 6渲染 圖像相比更快地將圖形圖像(例如,GUI和二維(2D)和/或三維(3D)圖形場景)渲染到顯示器 18上。另外,GPU 12的高度并行性質(zhì)可允許GPU 12比CPU 6更快速地處理用于通用計(jì)算應(yīng)用 的某些類型的向量及矩陣操作。
[0060] 在一些實(shí)例中,可將GPU 12集成到計(jì)算裝置2的母板中。在其它情況下,GPU 12可 存在于圖形卡上,所述圖形卡安裝在計(jì)算裝置2的母板中的端口中或可以其它方式并入經(jīng) 配置以與計(jì)算裝置2互操作的外圍裝置內(nèi)。在其它情況下,GPU 12可位于與CPU 6相同的微 芯片上,從而形成系統(tǒng)芯片(SoC) XPU 12可包含一或多個處理器,例如一或多個微處理器、 專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號處理器(DSP)或其它等效的集成 或離散邏輯電路。
[0061 ] 在一些實(shí)例中,GPU 12可直接耦合到GPU高速緩沖存儲器14。因此,GPU 12可在不 必使用總線20的情況下從GPU高速緩沖存儲器14讀取數(shù)據(jù)且將數(shù)據(jù)寫入到GPU高速緩沖存 儲器14。換句話說,GPU 12可使用本地存儲裝置