平鋪塊式基礎架構(gòu)上的經(jīng)優(yōu)化多遍次再現(xiàn)的制作方法
【專利摘要】本發(fā)明提供用于在基于平鋪塊的架構(gòu)上多路徑再現(xiàn)的系統(tǒng)和方法,其包含:運用圖形處理單元GPU執(zhí)行查詢遍次;運用所述GPU基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作;運用所述GPU基于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作;以及響應于執(zhí)行所述條件真遍次和所述條件假遍次而運用所述GPU執(zhí)行刷新操作。
【專利說明】
平鋪塊式基礎架構(gòu)上的經(jīng)優(yōu)化多遍次再現(xiàn)
[00011本申請案主張2013年12月27日申請的美國臨時申請案第61/921,145號的權益,所 述申請案的整個內(nèi)容以引用的方式并入本文中。
技術領域
[0002] 本發(fā)明涉及用于圖形處理的技術,且更具體地說涉及用于再現(xiàn)圖形處理中的基元 的技術。
【背景技術】
[0003] 圖形處理單元(GPU)可執(zhí)行基于平鋪塊的再現(xiàn)且可用于再現(xiàn)三維場景。因為三維 場景的此再現(xiàn)可為存儲器帶寬非常密集的,所以專用圖形存儲器(GMEM)可接近于GPU核心 定位。GPU核心一般使用GMEM再現(xiàn)場景。GPU或中央處理單元(CPU)接著可將含有場景的GMEM 的內(nèi)容分解到系統(tǒng)存儲器。換句話說,表示場景的數(shù)據(jù)可從GMEM傳送到系統(tǒng)存儲器。因為移 動環(huán)境中的GMEM的大小歸因于物理區(qū)域約束和存儲器帶寬可為有限的,所以GPU可將待再 現(xiàn)的場景拆分成較小部分以使得可個別地再現(xiàn)那些較小部分。具體來說,GPU可通過將場景 劃分成可再現(xiàn)到GMEM中的部分且將場景的每一部分再現(xiàn)到GMEM中來再現(xiàn)場景。
【發(fā)明內(nèi)容】
[0004] -般來說,本發(fā)明描述用于針對基于平鋪塊的圖形處理單元(GPU)架構(gòu)優(yōu)化圖形 再現(xiàn)的技術。通過在執(zhí)行再現(xiàn)指令時縮減中央處理單元(CHJ)與GPU之間的通信和數(shù)據(jù)傳 送,基于平鋪塊的GPU可改進其在再現(xiàn)圖形對象和場景方面的性能。具體來說,經(jīng)配置以用 于基于平鋪塊的再現(xiàn)的GHJ可對GPU自身執(zhí)行較大量的圖形場景的再現(xiàn)且不必須等待CPU交 互作用,此可改進GPU的再現(xiàn)性能。
[0005] 在一個實例中,本發(fā)明描述一種方法,其包含:運用圖形處理單元(GPU)執(zhí)行查詢 遍次;運用所述GPU基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作;運用所述GPU基 于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作;以及響應于執(zhí)行所述條件真遍次和所 述條件假遍次而運用所述GHJ執(zhí)行刷新操作。
[0006] 在另一實例中,本發(fā)明描述一種裝置,其包含經(jīng)配置以進行以下操作的GPU:執(zhí)行 查詢遍次;基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作;基于所述查詢遍次執(zhí)行 條件假遍次而不執(zhí)行刷新操作;以及響應于執(zhí)行所述條件真遍次和所述條件假遍次而執(zhí)行 刷新操作。
[0007] 在另一實例中,本發(fā)明描述一種裝置,其包含用于運用圖形處理單元(GPU)執(zhí)行查 詢遍次的裝置、用于運用所述GPU基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作的 裝置、用于運用所述GHJ基于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作的裝置,和用 于響應于執(zhí)行所述條件真遍次和所述條件假遍次而運用所述GPU執(zhí)行刷新操作的裝置。
[0008] 在另一實例中,本發(fā)明描述一種計算機可讀存儲媒體。所述計算機可讀存儲媒體 于其上存儲有指令,所述指令在執(zhí)行時致使一或多個處理器進行以下操作:執(zhí)行查詢遍次; 基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作;基于所述查詢遍次執(zhí)行條件假遍次 而不執(zhí)行刷新操作;以及響應于執(zhí)行所述條件真遍次和所述條件假遍次而執(zhí)行刷新操作。
【附圖說明】
[0009] 圖1為根據(jù)本發(fā)明的一些方面的說明用于再現(xiàn)三維場景的處理器、圖形處理單元 和系統(tǒng)存儲器的框圖。
[0010] 圖2為根據(jù)本發(fā)明的一些方面的說明基于平鋪塊的再現(xiàn)架構(gòu)中的場景的平鋪塊的 概念圖。
[0011] 圖3為根據(jù)本發(fā)明的方面的展示在倉之間劃分的基元的概念圖。
[0012] 圖4為根據(jù)本發(fā)明的技術的說明用于執(zhí)行多遍次再現(xiàn)的技術的概念圖。
[0013] 圖5為根據(jù)本發(fā)明中所描述的一或多個實例的說明可由硬件執(zhí)行的功能的實例的 概念圖。
[0014] 圖6為根據(jù)本發(fā)明中所描述的一或多個實例的說明用于在基于平鋪塊的架構(gòu)上多 遍次再現(xiàn)的實例方法的流程圖。
[0015] 圖7為說明可經(jīng)配置以實施本發(fā)明的一或多個方面的裝置的實例的框圖。
【具體實施方式】
[0016] 圖形處理單元(GPU)可用于再現(xiàn)三維(3D)場景。因為3D場景的此再現(xiàn)可為存儲器 帶寬非常密集的,所以可使用專用圖形存儲器(GMEM) AMEM可接近于GPU的圖形處理核心定 位以使得GMEM具有非常高存儲器帶寬(即,讀取和將存取寫入到GMEM相對快)。場景可由GPU 的圖形處理核心再現(xiàn)到GMEM,且可將所述場景從GMEM分解到存儲器(例如,幀緩沖器)以使 得所述場景接著可在顯示裝置處顯示。然而,因為GMEM的大小歸因于物理區(qū)域約束可為有 限的,所以GMEM可能不具有足夠的存儲器容量以含有整個三維場景(例如,幀)。
[0017]在一些實例中,GPU或其它處理裝置可經(jīng)配置以將3D場景拆分成平鋪塊,以使得組 成場景的每一平鋪塊可放入GiffiM中。這被稱作基于平鋪塊的再現(xiàn)或"裝倉"。作為一實例,如 果GMEM能夠存儲512kB的數(shù)據(jù),那么場景可劃分成平鋪塊以使得每一平鋪塊中所含有的像 素數(shù)據(jù)小于或等于512kB。以此方式,GPU或其它處理器可通過以下操作再現(xiàn)場景:將場景劃 分成可再現(xiàn)到GMEM中的平鋪塊以及將場景的每一平鋪塊個別地再現(xiàn)到GMEM中;將經(jīng)再現(xiàn)平 鋪塊從GMEM存儲到幀緩沖器;以及針對場景的每一平鋪塊重復再現(xiàn)和存儲。因此,GPU或其 它處理器可使用多個再現(xiàn)遍次平鋪塊逐平鋪塊地再現(xiàn)場景以再現(xiàn)場景的每一平鋪塊。
[0018]在一些實例中,基于平鋪塊的再現(xiàn)可以若干步驟執(zhí)行。舉例來說,實施基于平鋪塊 的架構(gòu)的GPU起初可在裝倉遍次期間處理或預處理整個場景以界定數(shù)個倉,所述倉也被稱 作"平鋪塊"。裝倉遍次隨后可為一系列再現(xiàn)遍次,在所述再現(xiàn)遍次期間再現(xiàn)經(jīng)界定平鋪塊 中的每一者。在一些實例中,以三個階段完成再現(xiàn)遍次中的每一者:(1)清除/未分解,(2)再 現(xiàn),(3)分解。在清除/未分解階段期間,GPU可針對新平鋪塊初始化GMEM且將已從外部存儲 器讀取的值存儲到GMEM中。在再現(xiàn)期間,GPU可重新創(chuàng)建與當前平鋪塊相關聯(lián)的多邊形,以 及產(chǎn)生像素值且表面處理當前平鋪塊,以使得可在顯示器上顯示平鋪塊。分解步驟可涉及 GPU將芯片上存儲器(GMEM)的內(nèi)容復制到GPU外部的存儲器,例如,由顯示器用來顯示經(jīng)表 面處理場景的緩沖器。
[0019] 在裝倉遍次期間,GPU可產(chǎn)生組成場景的多邊形(例如,三角形),且將多邊形分類 到多個"倉"中。如本文中所描述,裝倉遍次期間所界定的倉為呈現(xiàn)在顯示器上的最后場景 的平鋪塊(例如,有時被稱作"屏幕平鋪塊")的同義詞。舉例來說,每一倉表示最后場景(例 如,視頻數(shù)據(jù)幀、計算機產(chǎn)生的圖形圖像、靜態(tài)圖像,或其類似者的預定義部分)的一部分或 平鋪塊。因此,術語"倉"和"平鋪塊"可在本文中互換地使用。組成場景的平鋪塊可各自與存 儲每一相應平鋪塊中包含的基元的存儲器中的倉相關聯(lián)。倉為存儲器的一部分、圖片或幀 的一部分,例如,圖片或幀的平鋪塊中的基元。將場景的平鋪塊再現(xiàn)到GMEM中可包含執(zhí)行命 令以將相關聯(lián)的倉中的基元再現(xiàn)到GMEM中。GPU的裝倉遍次可將組成場景的基元分類到適 當倉中。GPU的裝倉遍次還可針對每一倉創(chuàng)建可見性流,其指示所述倉中的任何基元將在最 后再現(xiàn)場景中可見還是不可見??梢娦粤鳛橹甘井斣佻F(xiàn)基元時所述基元在每一平鋪塊中可 見還是不可見的位流。
[0020] 用以再現(xiàn)倉中的基元的命令可加載在間接緩沖器中。間接緩沖器可為(例如) GMEM、幀緩沖器或其它存儲器的一部分。然而,一般來說,間接緩沖器可為系統(tǒng)存儲器的一 部分。GPU可執(zhí)行存儲于間接緩沖器中的命令以再現(xiàn)包含于倉中的基元。如果倉的可見性流 指示所述倉不含有任何可見基元(即,倉中的所有基元將在最后再現(xiàn)的場景中不可見),那 么在GPU通過跳過執(zhí)行與倉相關聯(lián)的間接緩沖器中的指令而不再現(xiàn)所述倉中的基元的情況 下可改進性能。
[0021] 在多遍次再現(xiàn)的一些實例中,可多次再現(xiàn)場景和相關聯(lián)的對象。每次繪制對象時, 可計算對象的外觀的額外方面且將其與先前結(jié)果組合。一般來說,這可涉及粗糙初始再現(xiàn) 和基于第一粗糙遍次的查詢結(jié)果的詳細第二再現(xiàn)遍次。查詢遍次結(jié)果可包含數(shù)據(jù),例如,指 示是否應執(zhí)行裝倉遍次的計數(shù)器值或試探法。舉例來說,如果待再現(xiàn)的對象為簡單的(相對 來說),那么在執(zhí)行查詢遍次之后僅執(zhí)行再現(xiàn)遍次可為有利的。或者,如果待再現(xiàn)的對象為 復雜的(相對來說),那么在執(zhí)行查詢遍次之后執(zhí)行裝倉遍次和再現(xiàn)遍次可為有利的。
[0022] 在一些實例中,GPU還可經(jīng)配置以在裝倉遍次期間執(zhí)行操作以確定哪些多邊形在 場景中為可見的,例如,執(zhí)行深度測試以確定一多邊形是否覆蓋另一多邊形。在確定哪些多 邊形在場景中可見后,GPU就可產(chǎn)生被稱作"可見性流"的數(shù)據(jù)流??梢娦粤骺砂糜趫鼍?的多邊形中的每一者的值,且所述值可表示多邊形是否可見(例如,值"??芍甘径噙呅螢?可見的且值"〇"可指示多邊形為不可見的)。
[0023]在裝倉遍次之后,GPU可通過再次處理平鋪塊中的每一者來分離地再現(xiàn)平鋪塊中 的每一者。在一些實例中,GPU使用在裝倉期間產(chǎn)生的可見性流以省略或跳過再現(xiàn)不可見多 邊形。因此,僅處理且再現(xiàn)可見多邊形,即,促成最后場景的那些多邊形。GPU可以三個階段 來對平鋪塊中的每一者執(zhí)行再現(xiàn)處理:(1)清除/未分解,(2)再現(xiàn),(3)分解。
[0024]在清除/未分解階段期間,GPU可針對新平鋪塊初始化本地存儲器資源(例如,對于 GPU或芯片上GPU存儲器為本地的,其也可被稱作GMEM)。在一些實例中,GPU通過執(zhí)行清除處 理以清除GMEM來初始化GMEM。在其它實例中,GPU可通過執(zhí)行未分解處理來初始化GMEM。在 未分解處理期間,GPU可將值從外部存儲器讀取到GMEM中。當運用新數(shù)據(jù)僅更新場景的一部 分時,GPU可實施未分解處理。舉例來說,可使用未分解處理跨越一個以上場景(例如,圖形 數(shù)據(jù)的一個以上幀)保留未從一個場景改變?yōu)榱硪粓鼍暗南袼財?shù)據(jù)。
[0025]在再現(xiàn)期間,GPU可重新創(chuàng)建與當前平鋪塊相關聯(lián)的多邊形,以及產(chǎn)生像素值且表 面處理當前平鋪塊,以使得可在顯示器上顯示平鋪塊。舉例來說,GPU可在再現(xiàn)階段期間產(chǎn) 生適當像素值以使得所顯示的像素數(shù)據(jù)準確地表示場景。在一些實例中,GPU可將最后像素 值存儲在局部(對于GPU)或芯片上GPU存儲器(即,GMEM)中。
[0026]在再現(xiàn)之后,GPU可通過將芯片上存儲器的內(nèi)容復制至IjGPU外部的存儲器(例如,由 顯示器用來顯示經(jīng)表面處理場景的緩沖器)來分解當前平鋪塊。GPU通常必須等待分解像素 數(shù)據(jù)直到像素數(shù)據(jù)已結(jié)束再現(xiàn)為止。舉例來說,如果GPU在已經(jīng)完全再現(xiàn)像素之前將像素數(shù) 據(jù)從GMEM分解或復制到外部存儲器,那么所產(chǎn)生的場景在經(jīng)顯示時將不展現(xiàn)既定場景的適 當屬性。
[0027]在一些實例中,GHJ可等待分解平鋪塊直到整個平鋪塊已結(jié)束再現(xiàn)為止。舉例來 說,GPU可在將平鋪塊從GMEM復制到外部存儲器之前等待直到整個平鋪塊準備好顯示為止。 GPU通過針對下一個平鋪塊清除/未分解GMEM、再現(xiàn)下一個平鋪塊以及分解下一個平鋪塊來 重復所述過程直到表面處理整個場景為止。
[0028]在基于平鋪塊的架構(gòu)上,裝倉在兩個遍次上運行且可針對兩個遍次產(chǎn)生與裝倉相 關的數(shù)據(jù),這可涉及附加刷新點和中間場景分解。即使當應用程序的性能未由此行為增加 超過單個遍次情形時,狀況也可如此。因此,在一些狀況下,多遍次再現(xiàn)可包含執(zhí)行第一遍 次再現(xiàn)、查詢和第二遍次再現(xiàn)。查詢可為由應用程序觸發(fā)的對信息的任何請求。舉例來說, 應用程序可再現(xiàn)API側(cè)上的某物,刷新再現(xiàn)到圖形卡的對象。此操作完成具體再現(xiàn)。接著可 發(fā)送查詢。所述查詢可為在再現(xiàn)從API被刷新到圖形卡時所傳遞的像素的數(shù)目。所述查詢可 為對關于所執(zhí)行的最后再現(xiàn)或當前再現(xiàn)作業(yè)的狀態(tài)的信息的任何請求,所述最后再現(xiàn)或當 前再現(xiàn)作業(yè)由硬件支持。在一些狀況下,應用程序可再現(xiàn)某物,觸發(fā)查詢,且僅發(fā)送基于查 詢結(jié)果的數(shù)據(jù)。根據(jù)本申請案的一些實例,所述應用程序可發(fā)送查詢和多個第2級間接緩沖 器(IB2)<JB2含有用于再現(xiàn)管線的各個方面的命令。舉例來說,IB2可含有可由GPU執(zhí)行的前 導命令,例如,初始化GPU的靜止狀態(tài)且設置GPU的初始再現(xiàn)狀態(tài)的命令。GPU的再現(xiàn)狀態(tài)可 包含可基于具體應用程序改變的GPU設置。IB2可包含一系列狀態(tài)命令和繪圖命令以用于在 經(jīng)加載倉中繪制三角形。每一繪圖命令可指示GPU根據(jù)圖形處理管線繪制三角形。IB2 68可 影響由GHJ執(zhí)行的圖形處理管線的行為。舉例來說,狀態(tài)命令可改變顏色、多邊形模式(例 如,點而不是固體或線)、摻合(開/關)、深度測試(開/關)、紋理化(開/關)、剔除、剪除,和其 它邏輯運算??稍诿總€三角形(或每個基元)基礎上發(fā)出IB2狀態(tài)命令。
[0029] 在一實例中,所述應用程序可針對每一可能查詢結(jié)果發(fā)送一個IB2。因此,可發(fā)送 用于每一可能查詢結(jié)果的再現(xiàn)管線的各個方面的命令。在一個實例中,兩個查詢結(jié)果一 "真"和"假"可為可能的。因此,所述應用程序可發(fā)送兩個IB2,用于"真"查詢結(jié)果的一個IB2 和用于"假"查詢結(jié)果的一個IB2。因此,可發(fā)送用于"真"查詢結(jié)果的再現(xiàn)管線的各個方面的 命令,且可發(fā)送用于"假"查詢結(jié)果的再現(xiàn)管線的各個方面的命令。所述應用程序發(fā)送兩個 可能性,用于"真"查詢結(jié)果的IB2和用于"假"查詢結(jié)果的IB2。
[0030]因為所述應用程序發(fā)送用于"真"查詢結(jié)果的IB2和用于"假"查詢結(jié)果的IB2兩者, 所以所述應用程序不需要等待發(fā)送基于查詢結(jié)果的數(shù)據(jù)。實際上,GPU將讓用于"真"查詢結(jié) 果的IB2和用于"假"查詢結(jié)果的IB2兩者由所述應用程序發(fā)送,且GPU可等待查詢的結(jié)果。因 此,而非讓所述應用程序等待,所述GPU可等待查詢結(jié)果且接著所述GPU可執(zhí)行查詢遍次。所 述GPU可在查詢遍次的結(jié)果為"真"的情況下執(zhí)行條件真遍次。另外,可在不執(zhí)行刷新操作的 情況下執(zhí)行所述條件真遍次。所述GPU可在查詢遍次的結(jié)果為"假"的情況下執(zhí)行條件假遍 次。還可在不執(zhí)行刷新操作的情況下執(zhí)行條件假遍次。響應于基于查詢遍次的結(jié)果條件性 地執(zhí)行條件真遍次或條件假遍次中的一者,所述GHJ接著可執(zhí)行刷新操作。
[0031] 因此,在本發(fā)明的一些方面中,等待查詢結(jié)果可從應用程序被傳送到GPU。換句話 說,所述GHJ而非所述應用程序可等待查詢的結(jié)果。此情形為可能的,因為在一些實例中,所 述應用程序可將用于條件"真"狀況的IB2和用于條件"假"狀況的IB2兩者發(fā)送到GPU。因此, 所述GHJ具有針對"真"狀況和"假"狀況兩者所述應用程序?qū)⒃佻F(xiàn)的內(nèi)容以及所述應用程序 想要執(zhí)行的內(nèi)容,因為IB2中的每一者含有用于其相應狀況的再現(xiàn)管線的各個方面的命令, 例如,分別用于"真"查詢結(jié)果和"假"查詢結(jié)果的條件"真"狀況和條件"假"狀況。
[0032] 隨之可為額外查詢和后續(xù)遍次再現(xiàn):對于平鋪塊式系統(tǒng),此可對應于以下序列: (1)第一遍次再現(xiàn),也被稱作粗糙遍次或查詢遍次,其中平鋪塊式系統(tǒng)可執(zhí)行可產(chǎn)生可見性 流、處置用于第一遍次的再現(xiàn)遍次的加載以及再現(xiàn)及存儲的裝倉遍次;(2)查詢檢查(可由 應用程序進行),所述查詢檢查為檢查查詢遍次(第一遍次)的結(jié)果時的時間;以及(3)第二 遍次。第二遍次可包含基于第一遍次的查詢結(jié)果完成的所有再現(xiàn)。在此實例中,基于平鋪塊 的系統(tǒng)可執(zhí)行裝倉遍次,產(chǎn)生可見性流,以及執(zhí)行用于此第二遍次的再現(xiàn)遍次(其可具有基 于應用程序行為的詳細幾何形狀的不同集合,此情形最可能為所述狀況)的加載、再現(xiàn)和存 儲。因此,在基于平鋪塊的系統(tǒng)中,歸因于可針對兩個遍次觸發(fā)經(jīng)裝倉的再現(xiàn)的總線訪問, 可出現(xiàn)瓶頸。因此,通過使用可見性流獲得的任何優(yōu)化可被最小化,因為實施這些步驟的應 用程序可造成附加刷新以用于能夠執(zhí)行查詢遍次以確定數(shù)據(jù),例如,指示是否應執(zhí)行裝倉 遍次的計數(shù)器值或試探法。這些計數(shù)器值或試探法也可被稱作查詢遍次再現(xiàn)統(tǒng)計。另外,一 般來說,可產(chǎn)生例如指示是否應執(zhí)行裝倉遍次的計數(shù)器值或試探法的數(shù)據(jù)或?qū)⑺鰯?shù)據(jù)確 定為初始遍次的部分。
[0033] -般來說,在一些實例中,圖形應用程序觸發(fā)查詢,再現(xiàn)粗糙遍次(第一遍次),且 接著結(jié)束查詢。圖形應用程序可檢查查詢值(即,經(jīng)傳遞以檢測是否需要詳細的再現(xiàn)的像素 的數(shù)目)。基于查詢結(jié)果(圖形應用程序可觸發(fā)第二遍次)。當查詢?yōu)檎鏁r,可再現(xiàn)詳細的場 景;當查詢?yōu)榧贂r,可完全不再現(xiàn)所述場景或可再現(xiàn)粗糙但顏色管道實現(xiàn)場景。因此,第二 遍次可包含所有再現(xiàn),基于第一遍次的查詢結(jié)果可或可不執(zhí)行所述所有再現(xiàn)。
[0034] -些實例可修改應用程序的行為以便以其用于多遍次再現(xiàn)的優(yōu)勢而使用基于平 鋪塊的架構(gòu)。一些實例可界定新執(zhí)行點且將完全控制傳送到GPU和圖形驅(qū)動程序。舉例來 說,一些實例可:(1)在經(jīng)引入查詢條件的情況下于第一遍次中調(diào)用Start_Query_Pass,(2) 提交用于query_pass的再現(xiàn)調(diào)用,(3)結(jié)束query_pass(調(diào)用Query_Pass_End),(4)調(diào)用 Start_Condition_true遍次,(5)提交用于condition_true_pass的再現(xiàn)調(diào)用,(6)調(diào)用End_ condition_true_pass,(7)調(diào)用Start_Condition_false遍次,(8)提交用于condition- false_pass的再現(xiàn)調(diào)用,以及(9)調(diào)用End_condition_false_pass。
[0035] 在一個實例中,間接緩沖器I(IB1)可調(diào)用查詢遍次、裝倉遍次或再現(xiàn)遍次。查詢遍 次、裝倉遍次和再現(xiàn)遍次可為間接緩沖器2(IB2)的部分。IBl和IB2為緩沖器,例如,多級緩 沖器。頂層緩沖器(IBl)中的命令可用于調(diào)用較低級緩沖器(IB2)中的命令的整個集合。在 一實例中,查詢遍次可由調(diào)用查詢遍次IB2的IBl中的命令執(zhí)行,所述查詢遍次IB2可含有用 于查詢遍次的所有命令。另一 IB2可含有用于裝倉的所有命令,且又一 IB2可含有用于再現(xiàn) 等的所有命令。舉例來說,查詢遍次、裝倉遍次和再現(xiàn)遍次可各自為單獨IB2的(即)IB2級緩 沖器內(nèi)的單獨實體。查詢遍次可在裝倉遍次之前運行。裝倉遍次可在再現(xiàn)遍次之前運行。在 一些狀況下,可跳過裝倉遍次以使得緊接在查詢遍次之后運行再現(xiàn)遍次。在一些狀況下,在 查詢遍次之后既不執(zhí)行裝倉遍次也不執(zhí)行再現(xiàn)遍次。
[0036]舉例來說,查詢遍次可返回數(shù)據(jù),例如,指示是否應執(zhí)行裝倉遍次的計數(shù)器值或試 探法。在一實例中,條件執(zhí)行確定單元可確定是否應執(zhí)行裝倉遍次或再現(xiàn)遍次。對執(zhí)行裝倉 遍次的確定可基于待再現(xiàn)的對象的復雜性。舉例來說,對于簡單的對象,可跳過裝倉遍次。 相反地,對于較復雜的對象,可執(zhí)行裝倉遍次。因此,對于較簡單的對象,可跳過裝倉遍次以 使得緊接在查詢遍次之后運行再現(xiàn)遍次。另外,對于簡單的對象,可以單個迭代執(zhí)行再現(xiàn), 例如,整個屏幕可以單個遍次而非以一系列塊寫入。這對于非常簡單的重復屏幕再現(xiàn)可為 可能的。
[0037]圖1為根據(jù)本發(fā)明的一些方面的說明用于再現(xiàn)三維(3D)場景的處理器102、圖形處 理單元(GPU)120和系統(tǒng)存儲器118的框圖。處理器102可執(zhí)行軟件應用程序112、操作系統(tǒng) (OS)IH和圖形驅(qū)動程序116。系統(tǒng)存儲器118可包含存儲用于再現(xiàn)基元的命令流以及待由 GPU 120執(zhí)行的二級命令的間接緩沖器。GPU 120可包含GMEM 122AMEM 122可為上文所描 述的GMEM。在一些實例中,GMEM 122可與GPU 120在"芯片上"。在一些狀況下,圖1中所展示 的所有硬件元件在(例如)系統(tǒng)芯片(SoC)設計中可在芯片上。
[0038] 在圖1的實例中,處理器102、系統(tǒng)存儲器118和GPU 120可為裝置的一部分。裝置的 實例包含(但不限于)視頻裝置、媒體播放器、機頂盒、無線手機(例如,移動電話和所謂的智 能電話)、個人數(shù)字助理(PDA)、桌上型計算機、膝上型計算機、游戲控制臺、視頻會議單元、 平板計算裝置及其類似者。
[0039] 處理器102可為中央處理單元(CPU) APU 120可為處理單元,其經(jīng)配置以執(zhí)行例如 產(chǎn)生且輸出圖形數(shù)據(jù)以供在顯示器上呈現(xiàn)的與圖形相關的功能,以及執(zhí)行采用由GPU 120 提供的大規(guī)模處理并行性的與非圖形相關的功能。舉例來說,GPU 120可執(zhí)行圖形應用程序 和非圖形應用程序兩者。因為GPU 120除圖形處理能力之外還可提供通用處理能力,所以 GPU 120可被稱作通用GPU(GP-GPU)。
[0040] 處理器102和GPU 120的實例包含(但不限于)數(shù)字信號處理器(DSP)、通用微處理 器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效集成或離散邏輯電路。在 一些實例中,GPU 120可為微處理器,其經(jīng)設計用于例如提供用于處理圖形以及用于執(zhí)行與 非圖形相關的應用程序的大規(guī)模并行處理的特定用途。此外,盡管處理器102和GPU 120經(jīng) 說明為單獨組件,但本發(fā)明的各方面不限于此。舉例來說,處理器102和GPU 120可駐留在共 同集成電路(IC)中。
[0041] 在處理器102上執(zhí)行的軟件應用程序112可包含指示處理器102致使圖形數(shù)據(jù)再現(xiàn) 到顯示器(未圖示)的一或多個圖形再現(xiàn)指令。在一些實例中,圖形再現(xiàn)指令可包含軟件指 令,其可符合圖形應用程序編程接口(API),例如開放式圖形庫(OpenGL^API、開放式圖形 庫嵌入系統(tǒng)(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API,或任何 其它公共或?qū)S袠藴蕡D形API。為了處理圖形再現(xiàn)指令,處理器102可將一或多個圖形再現(xiàn) 命令發(fā)出到GPU 120 (例如,經(jīng)由圖形驅(qū)動程序116)以致使GPU 120執(zhí)行圖形數(shù)據(jù)的一些或 全部再現(xiàn)。在一些實例中,待再現(xiàn)的圖形數(shù)據(jù)可包含例如點、線、三角形、四邊形、三角形帶 的圖形基元的列表。
[0042] GPU 120可經(jīng)配置以執(zhí)行圖形操作以將一或多個圖形基元再現(xiàn)到顯示器。因此,當 在處理器102上執(zhí)行的軟件應用程序中的一者需要圖形處理時,處理器102可將圖形命令和 圖形數(shù)據(jù)提供到GPU 120以用于再現(xiàn)到顯示器。所述圖形數(shù)據(jù)可包含(例如)繪圖命令、狀態(tài) 信息、基元信息、紋理信息,等等。在一些情況下,GPU 120可內(nèi)置有高度并行結(jié)構(gòu),所述高度 并行結(jié)構(gòu)比處理器102提供復雜圖形相關操作的更有效的處理。舉例來說,GPU 120可包含 經(jīng)配置而以并行方式對多個頂點或像素操作的多個處理元件。在一些情況下,處理器102的 高度并行性質(zhì)允許GPU 120比使用處理器102直接將場景繪制到顯示器更快速地將圖形圖 像(例如,GUI和二維(2D)及/或三維(3D)圖形場景)繪制到顯示器上。
[0043] GPU 120可直接耦合到GMEM 122。換句話說,GPU 120可使用本地存儲裝置而不是 片外存儲器在本地處理數(shù)據(jù)。此允許GPU 120通過消除GPU 120經(jīng)由(例如)共享總線讀取及 寫入數(shù)據(jù)的需要而以更有效的方式操作,其中經(jīng)由總線操作可經(jīng)歷繁重的總線業(yè)務。然而, 在一些情況下,GPU 120可不包含單獨存儲器,而是利用系統(tǒng)存儲器118AMEM 122可包含一 或多個易失性或非易失性存儲器或存儲裝置,例如,隨機存取存儲器(RAM)、靜態(tài)RAM (SRAM)、動態(tài)RAM(DRAM)和一或多個寄存器。
[0044] 處理器102及/或GPU 120可將經(jīng)再現(xiàn)圖像數(shù)據(jù)存儲在幀緩沖器124中。幀緩沖器 124可為獨立存儲器或可分配在系統(tǒng)存儲器118內(nèi)。顯示處理器(未圖示)可從幀緩沖器124 檢索經(jīng)再現(xiàn)圖像數(shù)據(jù)且將所述經(jīng)再現(xiàn)圖像數(shù)據(jù)顯示在顯示器上。
[0045]系統(tǒng)存儲器118可為裝置中的存儲器且可駐留在處理器102和GPU 120外部,即,相 對于處理器102為晶片外,且相對于GPU 120為晶片外。系統(tǒng)存儲器118可存儲由處理器102 和GPU 120執(zhí)行的應用程序。此外,系統(tǒng)存儲器118可存儲所執(zhí)行應用程序?qū)ζ溥M行操作的 數(shù)據(jù),以及由應用程序產(chǎn)生的數(shù)據(jù)。然而,并非所有此數(shù)據(jù)在每一實例中都需要存儲在系統(tǒng) 存儲器118中。在一些情況下,數(shù)據(jù)可本地地存儲在處理器102或GPU 120上。舉例來說,所述 數(shù)據(jù)中的一些或全部可本地存儲在芯片上GHJ存儲器(例如,圖形存儲器,GMEM 122)內(nèi)。
[0046] 系統(tǒng)存儲器118可存儲可由處理器102存取以用于執(zhí)行的程序模塊、指令或這兩 者、供在處理器102上執(zhí)行的程序使用的數(shù)據(jù),或以上這些中的兩者或兩者以上。舉例來說, 系統(tǒng)存儲器118可存儲窗口管理器應用程序,其可由處理器102使用以將圖形用戶接口 (GUI)呈現(xiàn)在顯示器上。另外,系統(tǒng)存儲器118可存儲用戶應用程序和與所述應用程序相關 聯(lián)的應用程序表面數(shù)據(jù)。系統(tǒng)存儲器118可充當用于GPU 120的裝置存儲器,且可存儲待由 GPU 120操作的數(shù)據(jù)以及由GPU 120所執(zhí)行的操作產(chǎn)生的數(shù)據(jù)。舉例來說,系統(tǒng)存儲器118可 存儲紋理緩沖器、深度緩沖器、模板緩沖器、頂點緩沖器、幀緩沖器或其類似者的任何組合。
[0047] 系統(tǒng)存儲器118可為計算機可讀存儲媒體的實例。舉例來說,系統(tǒng)存儲器118可存 儲指令,其致使處理器102和GPU 120執(zhí)行在本發(fā)明中歸于每一者的功能。系統(tǒng)存儲器118可 被認為是包括指令的計算機可讀存儲媒體,所述指令致使一或多個處理器(例如,處理器 102或GPU 120)執(zhí)行各種功能。
[0048] 系統(tǒng)存儲器118的實例包含(但不限于)隨機存取存儲器(RAM)、只讀存儲器(R0M)、 電可擦除可編程只讀存儲器(EEPROM),或可用于攜載或存儲呈指令或數(shù)據(jù)結(jié)構(gòu)的形式的所 要程序代碼且可由計算機或處理器存取的任何其它媒體。作為一個實例,系統(tǒng)存儲器118可 從所述裝置移除,且移動到另一裝置。作為另一實例,大體類似于系統(tǒng)存儲器118的存儲裝 置可插入到所述裝置中。
[0049] 根據(jù)本發(fā)明的技術,一些實例可修改應用程序的行為以便以其用于多遍次再現(xiàn)的 優(yōu)勢而使用基于平鋪塊的架構(gòu)。在一些實例中,應用程序可使用新執(zhí)行點/后門/延伸,且將 完全控制傳送到GPU和圖形驅(qū)動程序。
[0050] 舉例來說,GPU可調(diào)用"暴露出"到應用程序的各個入口點,以使得GPU可將被提交 到應用程序的內(nèi)容的指示提供到驅(qū)動程序。"暴露出"是指到代碼塊的入口點,其提供可觸 發(fā)代碼塊的功能性指標(當需要所述功能性指標時)。一般來說,如果應用程序調(diào)用一些開 始步驟,即,StartXXX,那么調(diào)用在驅(qū)動程序中結(jié)束,且在一些實例中,以下再現(xiàn)/狀態(tài)調(diào)用 是為了 XXX遍次直到結(jié)束調(diào)用(即,EndXXX)被調(diào)用為止。因此,相關聯(lián)的遍次的開始與結(jié)束 之間的所有再現(xiàn)/狀態(tài)調(diào)用可累積且可用于針對這些遍次構(gòu)建間接緩沖器。實例調(diào)用包含 在經(jīng)引入查詢條件的情況下的Start_Query_Pass(第一遍次)C 3GPU通??商峤挥糜趒uery_ pass的再現(xiàn)調(diào)用且可調(diào)用Query_Pas s_End。GPU還可調(diào)用Star t_Condi t ion_true遍次以及 設置查詢。GPU可提交用于condition_true_pass的再現(xiàn)調(diào)用。GPU還可調(diào)用End_condition_ true_pass和5七&1'1:_(]〇11(1;[1:;[011_€&186遍次。6]:)1]還可提交用于(3〇11(1;[1:;[011_€&186_口&88再現(xiàn) 調(diào)用,調(diào)用End_condition_false_pass。因此,在一實例中,可僅需要一個刷新。刷新為所有 經(jīng)累積的再現(xiàn)命令到操作系統(tǒng)的提交或發(fā)送。當圖形應用程序觸發(fā)再現(xiàn)命令時,所述再現(xiàn) 命令不直接發(fā)送到硬件,例如,屏幕。相反地,所述命令由圖形驅(qū)動程序累積(按需要轉(zhuǎn)譯)。 刷新調(diào)用為需要處置再現(xiàn)且驅(qū)動程序?qū)⑺薪?jīng)累積的命令/緩沖器經(jīng)由操作系統(tǒng)核心發(fā) 送/提交到硬件的界限。
[0051] 在一些實例中,應用程序可不需要刷新直到發(fā)送完所有數(shù)據(jù)為止。另外,應用程序 可不需要明確地檢查查詢數(shù)據(jù)。在一實例中,硬件可執(zhí)行查詢遍次、裝倉遍次和再現(xiàn)遍次。 因此,可基于查詢結(jié)果針對匹配再現(xiàn)遍次觸發(fā)一次裝倉遍次。一般來說,對于經(jīng)很好地編寫 的應用程序,此遍次相較于其它遍次可需要用以執(zhí)行的較多處理循環(huán)。因此,在較佳地利用 硬件資源的情況下可以單個刷新點完成操作。因此,各種實例可去除不必要的加載/存儲 (分解/未分解)和刷新點。
[0052] 圖2為說明基于平鋪塊的再現(xiàn)架構(gòu)中的場景的平鋪塊的概念圖。如圖2中所展示, 待由GPU(例如,圖1中所展示的GPU 120)再現(xiàn)的3D圖形對象206可由基元(例如,基元208)組 成。在圖2中所展示的實例中,基元可為包含三個頂點的三角形。在其它實例中,基元可為 點、線及其類似者。含有圖形對象206的3D場景202可劃分成平鋪塊,例如平鋪塊204。場景 20 2的每一平鋪塊(例如,平鋪塊204)的大小可至少部分地基于GMEM的大小確定。舉例來說, 場景202的每一平鋪塊可經(jīng)設定大小以使得平鋪塊中含有的場景202的部分可全部在例如 圖1中所展示的GMEM 122的圖形存儲器中再現(xiàn)。場景202的每一平鋪塊可被視為在所述平鋪 塊中包含三角形的倉。在一個實例中,倉的寬度和高度可由32個像素對準。因為場景202劃 分成平鋪塊的5x5柵格,所以存在圖2中所展示的場景202的總共25個平鋪塊。
[0053] GPU 120可通過執(zhí)行用于再現(xiàn)三角形的命令而再現(xiàn)三角形。因此,GPU 120可通過 執(zhí)行用于再現(xiàn)組成圖形對象206的三角形中的每一者的命令而再現(xiàn)圖形對象206 APU 120 可將場景的三角形分類到倉中,以使得每一倉可包含命令流(命令的集合)以再現(xiàn)所述倉中 包含的三角形。因為存在場景202的總共25個平鋪塊,所以可存在場景202的25個對應倉。用 于每一倉的命令流可存儲于存儲器(例如,圖1中所展示的系統(tǒng)存儲器108)中的間接緩沖器 中。GPU 120通過執(zhí)行每一倉的命令流以將倉中的每一者中的三角形再現(xiàn)到GMEM 122上而 再現(xiàn)圖形對象206。
[0054]在一些實例中,為了再現(xiàn)場景,GPU 120執(zhí)行第一粗糙遍次。GPU 120接著可第二精 細遍次。在第一粗糙遍次期間,GPU 120可確定倉中的每一者中的三角形是否為可見的。在 先前技術中,在GPU完成第一遍次之后,CPU執(zhí)行刷新操作。刷新操作存儲第一遍次的結(jié)果且 將所述結(jié)果返回到CPU。所述結(jié)果可包含(例如)哪些三角形為可見的以及哪些為不可見的 等等。
[0055] 基于查詢操作的結(jié)果(例如,哪些三角形為可見的以及哪些為不可見的),CPU針對 第二遍次產(chǎn)生參數(shù)。在第二遍次期間,GPU執(zhí)行第二裝倉遍次。GPU還在第二遍次期間產(chǎn)生可 見性流。GPU可在第二遍次期間產(chǎn)生新可見性流。使用此新可見性流,GPU執(zhí)行第二再現(xiàn)遍 次。在第二遍次之后,GPU執(zhí)行另一刷新操作。在第二刷新操作中,可將GMEM的內(nèi)容寫入到圖 形緩沖器或系統(tǒng)存儲器118。
[0056] 在GPU 120將倉中所含有的場景202的部分再現(xiàn)到GMEM 122上之后,場景202的經(jīng) 再現(xiàn)部分可從GMEM 122加載到存儲器,例如圖1中所展示的幀緩沖器124 APU 120可重復以 下過程:執(zhí)行命令流;將倉的三角形再現(xiàn)到GMEM 122上;以及將場景202的經(jīng)再現(xiàn)部分從 GMEM 122加載到幀緩沖器124,以使得每一倉再現(xiàn)整個場景202。
[0057]如本文中所描述,"裝倉"或"基于平鋪塊的再現(xiàn)"為一種以較小部分再現(xiàn)3D場景的 方式。由于3D再現(xiàn)需要大量存儲器帶寬,因此適用于使用GMEM、專用圖形存儲器,其中高帶 寬接近于3D核心。然而,在移動環(huán)境中,由于區(qū)域約束,GMEM的大小受到限制。因此,可能需 要將場景拆分成較小部分以使得可分離地再現(xiàn)各者。
[0058] 在另一實例中,可使用面向流(faceness stream),但其可分離地應用于每一倉。 在其它實例中,面向流可包含指示三角形是前向還是背向的每三角形位數(shù)據(jù)。在此實例中, 此可擴展到可見性流,其中每一位指示三角形對于給定倉是否完全可見。對于每一倉存在 一個可見性流,其列舉對于所述倉可見的三角形??墒褂枚鄠€因素計算可見性值:(1)三角 形是否經(jīng)背面剔除,(2)所述三角形是否命中倉區(qū)域(包含Z方向),(3)所述三角形是否通過 低分辨率Z檢查閉合。
[0059] 在一實例中,在裝倉遍次期間,創(chuàng)建多個可見性流,針對每一倉創(chuàng)建一個可見性 流。在再現(xiàn)遍次期間,僅讀取一個可見性流(用于當前倉的所述可見性流)。另外,壓縮可見 性流。此可導致較小存儲器消耗。其還可在再現(xiàn)階段期間使得能夠快速跳過不可見三角形。
[0060] 在一實例中,可在裝倉遍次期間產(chǎn)生可見性流。此可涉及處理整個場景的命令流。 然而,一般來說,未進行任何像素著色。所述創(chuàng)建可包含以下階段:(1)運用倉著色器進行頂 點著色,(2)低分辨率光柵化,(3)低分辨率Z測試,和(4)可見性流壓縮。
[0061] 在兩個實例中,裝倉遍次需要特定裝倉著色器。此可為頂點著色器的經(jīng)修改版本, 其中唯一輸出為頂點位置。所有參數(shù)輸出以及與其相關的任何計算可從裝倉著色器移除。 然而,在一些實例中,不需要添加任何特定與倉相關的著色器代碼。(可有可能也在驅(qū)動程 序開發(fā)的初始階段期間將普通頂點著色器用作裝倉著色器。在此狀況下,也應存在適當像 素著色器,但其不僅不斷接收任何像素)。
[0062]根據(jù)經(jīng)著色頂點,光柵化器產(chǎn)生三角形的低分辨率表示,其中每一像素等于最后 圖像中的4X4像素區(qū)域。所產(chǎn)生的低分辨率像素可具有兩個值:部分地覆蓋或完全覆蓋。光 柵化與普通光柵化使用相同剔除規(guī)則(面向、錐臺等等),且因此僅產(chǎn)生真正地促成場景的 那些三角形。
[0063] 所述過程中的第三階段為低分辨率Z測試。GMEM還可在裝倉遍次期間用作Z緩沖 器。由于以4 X 4像素塊完成再現(xiàn),因此GMEM中的Z緩沖器也在此分辨率中。此外,不需要GMEM 中的顏色緩沖器。這意味著低分辨率Z緩沖器(LRZ-緩沖器)相較于全分辨率可覆蓋非常大 的屏幕上區(qū)域。由于LRZ緩沖器不在全分辨率下操作,因此LRZ處理需要為保守的。僅針對由 三角形完全覆蓋的像素進行寫入到LRZ緩沖器,且經(jīng)部分地覆蓋的像素不促成Z寫入。這還 意味著LRZ緩沖器不完全準確,因為在三角形邊緣處可能存在間隙。在裝倉遍次結(jié)束時,可 將LRZ緩沖器寫出到外部存儲器,且稍后所述LRZ緩沖器可用于在再現(xiàn)遍次期間初始化Z緩 沖器。此在再現(xiàn)期間提供經(jīng)改進的Z測試。
[0064] 圖3為根據(jù)本發(fā)明的方面的展示在倉之間劃分的基元的概念圖。如圖3中所展示, 各自含有像素的4\4柵格的倉302、304、306和308經(jīng)再現(xiàn)/光柵化以含有多個像素310。一般 來說,視頻再現(xiàn)為基于現(xiàn)有對象或模型產(chǎn)生圖像的過程。光柵化(rasterisation)(或光柵 化(rasterization))-般為拍攝以矢量圖形格式(例如,形狀)描述的圖像,以及將所述圖 像轉(zhuǎn)換為光柵圖像(例如,像素或點)以用于在視頻顯示器或打印機上輸出或用于以位圖文 件格式存儲。
[0065] 一或多個圖形基元可在每一倉中可見。舉例來說,三角形A(Tri A)的部分在倉302 和倉306兩者中可見。三角形B(Tri B)的部分在倉302、倉304、倉306和倉308中的每一者中 可見。三角形C(Tri C)僅在倉304中可見。在再現(xiàn)遍次期間,GPU 120可將場景拆分成倉且可 將三角形指派到所述倉。如果三角形在一個以上倉中可見,那么GPU 120可將三角形指派到 其中三角形為可見的倉中的僅一者,以使得三角形不隨著再現(xiàn)倉302、304、306和308中的每 一者而被再現(xiàn)多次。
[0066] GPU 120還可確定倉中的哪些三角形在最后經(jīng)再現(xiàn)場景中實際上可見。舉例來說, 一些三角形可在一或多個其它三角形后方且將在最后經(jīng)再現(xiàn)場景中不可見。以此方式,無 需再現(xiàn)針對所述倉的不可見的三角形。
[0067] 當執(zhí)行具體再現(xiàn)遍次時,與所述具體再現(xiàn)遍次相關聯(lián)的倉的像素數(shù)據(jù)可存儲在圖 形存儲器(例如圖1中所展示的GMEM 122(有時稱為倉緩沖器))中。在執(zhí)行再現(xiàn)遍次之后, GPU 120可將GMEM 122的內(nèi)容傳送到幀緩沖器124。在一些狀況下,GHJ 120可運用存儲在 GMEM 122中的數(shù)據(jù)重寫幀緩沖器124中的數(shù)據(jù)的一部分。在其它狀況下,GPU 120可將幀緩 沖器124中的數(shù)據(jù)與存儲在GMEM 122中的數(shù)據(jù)合成或組合。在將GMEM 122的內(nèi)容傳送到幀 緩沖器124之后,GPU 120可將GMEM 122初始化為默認值且開始相對于不同倉的后續(xù)再現(xiàn)遍 次。
[0068] 圖4為根據(jù)本發(fā)明的技術的說明用于執(zhí)行多遍次再現(xiàn)的技術的概念圖。一般來說, 此可允許僅執(zhí)行刷新一次??扇绻δ茉趫D4中經(jīng)定向來從"上到下"且從"左到右"執(zhí)行所述 功能。更確切而言,如圖4中所說明,可在執(zhí)行查詢遍次400之后執(zhí)行條件真遍次404、條件假 遍次406,且一旦三個遍次(查詢遍次400、條件真404和條件假406)完成,就執(zhí)行刷新操作 408。因此,在一些實例中,本發(fā)明的技術可通過修改應用程序的行為來去除在GPU 120完成 查詢遍次之后進行的刷新操作408,所述應用程序利用基于平鋪塊的GPU架構(gòu)。具體來說,在 一些實例中,本發(fā)明的技術可包含新執(zhí)行點、后門命令,及/或延伸。這些新執(zhí)行點、后門命 令及/或延伸可允許GPU 120和圖形驅(qū)動程序去除上文所描述的第二查詢操作。在一些實例 中,本發(fā)明的技術修改DirectX 11圖形API以包含允許GPU 120去除刷新命令的額外再現(xiàn)命 令。
[0069]當執(zhí)行多遍次基于平鋪塊的再現(xiàn)時,GHJ 120-般執(zhí)行查詢遍次400和查詢檢查 402,緊接著執(zhí)行條件真遍次404和條件假遍次406。查詢檢查402可為由應用程序觸發(fā)的對 信息的任何請求。舉例來說,應用程序可再現(xiàn)API側(cè)上的某物,刷新再現(xiàn)到圖形卡的對象。此 操作完成具體再現(xiàn)。接著可發(fā)送查詢。所述查詢可為在再現(xiàn)從API被刷新到圖形卡時所傳遞 的像素的數(shù)目。所述查詢可為對關于所執(zhí)行的最后再現(xiàn)或當前再現(xiàn)作業(yè)的狀態(tài)的信息的任 何請求,所述最后再現(xiàn)或當前再現(xiàn)作業(yè)由硬件支持。在一些狀況下,應用程序可再現(xiàn)某物, 觸發(fā)查詢,且僅發(fā)送基于查詢結(jié)果的數(shù)據(jù)。
[0070]根據(jù)本申請案的一些實例,所述應用程序可發(fā)送查詢和多個IB2。如上文所描述, IB2含有用于再現(xiàn)管線的各個方面的命令。
[0071 ]在一個實例中,兩個查詢結(jié)果一"真"和"假"可為可能的。因此,所述應用程序可發(fā) 送兩個IB2,用于"真"查詢結(jié)果的一個IB2和用于"假"查詢結(jié)果的一個IB2。因此,可發(fā)送用 于"真"查詢結(jié)果的再現(xiàn)管線的各個方面的命令,且可發(fā)送用于"假"查詢結(jié)果的再現(xiàn)管線的 各個方面的命令。所述應用程序發(fā)送兩個可能性,用于"真"查詢結(jié)果的IB2和用于"假"查詢 結(jié)果的IB2。
[0072]因為所述應用程序發(fā)送用于"真"查詢結(jié)果的IB2和用于"假"查詢結(jié)果的IB2兩者, 所以所述應用程序不需要等待發(fā)送基于查詢結(jié)果的數(shù)據(jù)。實際上,GPU將讓用于"真"查詢結(jié) 果的IB2和用于"假"查詢結(jié)果的IB2兩者由所述應用程序發(fā)送,且GPU可等待查詢的結(jié)果。因 此,而非讓所述應用程序等待,所述GPU可等待查詢結(jié)果且接著所述GPU可執(zhí)行查詢遍次。所 述GHJ可在查詢遍次的結(jié)果為"真"的情況下執(zhí)行條件真遍次。另外,可在不執(zhí)行刷新操作 408的情況下執(zhí)行所述條件真遍次。所述GPU可在查詢遍次的結(jié)果為"假"的情況下執(zhí)行條件 假遍次。還可在不執(zhí)行刷新操作408的情況下執(zhí)行條件假遍次。響應于基于查詢遍次的結(jié)果 條件性地執(zhí)行條件真遍次或條件假遍次中的一者,所述GHJ接著可執(zhí)行刷新操作408。
[0073]因此,在本發(fā)明的一些方面中,等待查詢結(jié)果可從應用程序被傳送到GPU。換句話 說,所述GHJ而非所述應用程序可等待查詢的結(jié)果。此情形為可能的,因為在一些實例中,所 述應用程序可將用于條件"真"狀況的IB2和用于條件"假"狀況的IB2兩者發(fā)送到GPU。因此, 所述GHJ具有針對"真"狀況和"假"狀況兩者所述應用程序?qū)⒃佻F(xiàn)的內(nèi)容以及所述應用程序 想要執(zhí)行的內(nèi)容,因為IB2中的每一者含有用于其相應狀況的再現(xiàn)管線的各個方面的命令, 例如,分別用于"真"查詢結(jié)果和"假"查詢結(jié)果的條件"真"狀況和條件"假"狀況。
[0074] 查詢遍次400確定三角形為可見的還是不可見的,且針對條件真遍次404和條件假 遍次406建立條件。一旦GPU 120完成查詢遍次400, GPU 120就執(zhí)行條件真遍次404,且接著 執(zhí)行條件假遍次406。條件真遍次和條件假遍次使不同數(shù)據(jù)和再現(xiàn)命令基于應用程序再現(xiàn) 序列累積在其中。
[0075]本發(fā)明的技術可包含可指定GPU 120執(zhí)行的再現(xiàn)遍次的開始和結(jié)束的再現(xiàn)指令。 因此,本發(fā)明的一些實例技術包含可指定(例如)查詢遍次400、條件真遍次404和條件假遍 次4 0 6的開始和結(jié)束的再現(xiàn)指令。具體來說,本發(fā)明的一些實例技術包含入口點,例如, Start_Query_Pass"^^、End_Query_Pass"^^、Start_Condition_True_pass,^PEnd_ condition_true_pass,以及End_condition_false_pass命令。這些為經(jīng)"暴露出"以允許存 取不同代碼子程序的入口點。此外,"暴露出"是指到代碼塊的入口點,其提供可觸發(fā)代碼塊 的功能性指標(當需要所述功能性指標時)。如本文中所描述,這些為經(jīng)暴露出到應用程序 以使得所述應用程序可將由應用程序提交到驅(qū)動程序的內(nèi)容的指示提供到驅(qū)動程序的入 口點。
[0076]在一實例中,在每對對應的命令(例如,查詢遍次開始和查詢遍次結(jié)束、條件真開 始和條件真結(jié)束、條件假開始和條件假結(jié)束)之間,圖形驅(qū)動程序或應用程序指定用于GPU 120在所述再現(xiàn)遍次期間執(zhí)行的再現(xiàn)命令。一旦完成所有遍次,GPU 120就執(zhí)行刷新命令。刷 新命令可將三個遍次一查詢遍次400、條件真404和條件假406-的結(jié)果寫入到系統(tǒng)存儲器 118〇
[0077] 如本文中所描述,查詢遍次400可在裝倉遍次之前運行。裝倉遍次可在再現(xiàn)遍次 (例如,用于條件真遍次404的再現(xiàn)或用于條件假遍次406的再現(xiàn))之前運行。(圖4中未說明 裝倉遍次。)在一些狀況下,可跳過裝倉遍次以使得緊接在查詢遍次400之后運行再現(xiàn)遍次 404或406。在一些狀況下,在查詢遍次400之后既不執(zhí)行裝倉遍次也不執(zhí)行再現(xiàn)遍次,例如, 用于條件真遍次404的再現(xiàn)或用于條件假遍次406的再現(xiàn)。舉例來說,條件假遍次可致使不 執(zhí)行裝倉遍次和再現(xiàn)遍次,但狀況并非總是如此。然而,在一些實例中,應針對條件假遍次 執(zhí)行裝倉遍次和再現(xiàn)遍次??舍槍l件真遍次執(zhí)行裝倉遍次和再現(xiàn)遍次。條件真遍次與條 件假遍次之間的主要差異在于使不同數(shù)據(jù)和再現(xiàn)命令基于應用程序再現(xiàn)序列累積在其中。 [0078]查詢遍次400可返回指示是否應執(zhí)行裝倉遍次的數(shù)據(jù)。在一實例中,條件執(zhí)行確定 單元可確定是否應執(zhí)行裝倉遍次或再現(xiàn)遍次,例如,用于條件真遍次404的再現(xiàn)或用于條件 假遍次406的再現(xiàn)。對執(zhí)行裝倉遍次的確定可基于待再現(xiàn)的對象的復雜性。舉例來說,對于 簡單的對象,可跳過裝倉遍次。相反地,對于較復雜的對象,可執(zhí)行裝倉遍次。如本文中所描 述,條件真再現(xiàn)和條件假再現(xiàn)可進行。查詢遍次和條件真再現(xiàn)以及條件假可在刷新408之前 進行。
[0079]如本文中所描述,一些實例直到所有數(shù)據(jù)列好隊才刷新。舉例來說,查詢遍次400、 再現(xiàn)遍次404和再現(xiàn)遍次406可各自列隊以用于刷新408而非在查詢遍次400和再現(xiàn)遍次404 以及再現(xiàn)遍次406中的每一者之后執(zhí)行刷新。因此,可執(zhí)行單個刷新408。此情形可為有條件 的且可基于查詢。如本文中所描述,在一些實例中,GPU 120完成查詢遍次400、再現(xiàn)遍次404 和再現(xiàn)遍次406,以及刷新408。刷新408可將數(shù)據(jù)發(fā)送到處理器102,以供操作系統(tǒng)114使用。 所述數(shù)據(jù)可為來自經(jīng)累積再現(xiàn)命令的數(shù)據(jù)。如本文中所描述,在一些實例中,刷新為所有經(jīng) 累積再現(xiàn)命令到操作系統(tǒng)114的提交或發(fā)送。當圖形應用程序觸發(fā)再現(xiàn)命令時,圖形驅(qū)動程 序不直接將經(jīng)累積再現(xiàn)命令發(fā)送到硬件。再現(xiàn)命令由圖形驅(qū)動程序累積(按需要轉(zhuǎn)譯)。
[0080]另外,在一些實例中,查詢值是多少并不重要。因此,可不需要鎖定存儲器地點以 使得值無法被寫入到(例如)經(jīng)鎖定存儲器地點,因為是否重寫存儲器地點可不重要??赡?不必要取回調(diào)用,等等。在一些實例中,存儲器驅(qū)動程序可執(zhí)行不促成可見性流的預裝倉遍 次/查詢遍次。在一些實例中,存儲器驅(qū)動程序可執(zhí)行裝倉遍次。條件性地執(zhí)行裝倉遍次。查 詢結(jié)果可從查詢檢查402返回。查詢檢查402可返回"真"或"假"值??苫诓樵兊恼婊蚣俳Y(jié) 果再現(xiàn)場景。換句話說,基于真或假的查詢結(jié)果條件性地執(zhí)行裝倉遍次。真查詢結(jié)果可導致 再現(xiàn)遍次404,而假查詢結(jié)果可導致再現(xiàn)遍次406。
[0081] 當由裝倉遍次返回的條件或值為真時,條件真再現(xiàn)404可促成可見性流?;蛘?,如 果由裝倉遍次返回的條件或值為假,那么條件假再現(xiàn)406作為再現(xiàn)IB2促成可見性流。條件 性地執(zhí)行再現(xiàn)遍次404和406。可針對正確再現(xiàn)遍次觸發(fā)一次裝倉遍次。接著可執(zhí)行正確可 見性流和優(yōu)化。可僅對正確幾何形狀執(zhí)行再現(xiàn)遍次而不執(zhí)行一個查詢遍次。可以單個刷新 點完成所述操作。
[0082] 舉例來說,一些裝置可執(zhí)行用于在基于平鋪塊的架構(gòu)上多路徑圖形再現(xiàn)的方法。 此類裝置可包含基于查詢遍次執(zhí)行查詢檢查402、條件真遍次404而不執(zhí)行刷新操作408,基 于查詢遍次執(zhí)行條件假遍次406而不執(zhí)行刷新操作408的GPU。一般來說,基于給定查詢檢查 402的結(jié)果執(zhí)行條件真遍次404或條件假遍次406。響應于執(zhí)行條件真遍次和條件假遍次, GPU可執(zhí)行刷新操作408。在一些實例中,條件真或條件假可導致產(chǎn)生可見性流的裝倉遍次。 或者,這些中的任一者一條件真或條件假,可使用直接再現(xiàn)遍次來再現(xiàn)場景。
[0083] 在一些實例中,查詢遍次(例如,查詢檢查402)可包含第一查詢遍次。執(zhí)行第一查 詢遍次可包含執(zhí)行指示第一查詢遍次的開始的圖形再現(xiàn)命令。另外,在一些實例中,執(zhí)行第 一查詢遍次進一步包含執(zhí)行指示第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。在一些實例中,執(zhí) 行條件假遍次進一步包含執(zhí)行指示條件假遍次的結(jié)束的圖形命令。在一些實例中,執(zhí)行開 始條件遍次進一步包含指示開始條件遍次的結(jié)束的圖形再現(xiàn)命令。在一些實例中,執(zhí)行條 件真遍次進一步包含執(zhí)行指示第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。在一些實例中,執(zhí)行 條件假遍次進一步包括執(zhí)行指示條件假遍次的開始的圖形命令。
[0084]圖5為根據(jù)本發(fā)明中所描述的一或多個實例的說明可由硬件執(zhí)行的功能的實例的 概念圖。在圖5的所說明的實例中,可在硬件中執(zhí)行查詢遍次500。還可在硬件中執(zhí)行裝倉遍 次502。另外,可在硬件中執(zhí)行再現(xiàn)遍次504。在一些實例中,硬件可包含GPU 120或其它處理 硬件??捎刹僮飨到y(tǒng)506控制查詢遍次500、裝倉遍次502和再現(xiàn)遍次504。操作系統(tǒng)506可起 動查詢遍次500。在一些實例中,再現(xiàn)遍次包含基于查詢結(jié)果的結(jié)果執(zhí)行條件真遍次和條件 假遍次中的一者。所述結(jié)果可控制第二遍次的裝倉和再現(xiàn)兩者。
[0085] 可在查詢塊508中執(zhí)行查詢遍次500,所述查詢塊508可將查詢結(jié)果返回到預先確 定的存儲器或預先確定的寄存器。操作系統(tǒng)506可致使查詢結(jié)果存儲于預先確定的存儲器 或預先確定的寄存器中。另外,可存儲于預先確定的存儲器或預先確定的寄存器中的查詢 結(jié)果可由裝倉遍次502、再現(xiàn)遍次504或這兩者使用。舉例來說,可結(jié)合多遍次再現(xiàn)場景和相 關聯(lián)的對象使用查詢結(jié)果。在多遍次再現(xiàn)中,可多次再現(xiàn)場景和相關聯(lián)的對象。每次繪制對 象時,可計算對象的外觀的額外方面且將其與先前結(jié)果組合。一般來說,這可涉及粗糙初始 再現(xiàn)和基于第一粗糙遍次的查詢結(jié)果的詳細第二再現(xiàn)遍次。可在查詢檢查期間檢查查詢結(jié) 果,且所述查詢結(jié)果可導致條件真查詢結(jié)果或條件假查詢結(jié)果。如上文所描述,所述查詢可 為由應用程序觸發(fā)的對信息的任何請求。所述查詢結(jié)果接著可通過執(zhí)行條件真隊列而導致 條件真圖形再現(xiàn)404,或所述查詢結(jié)果接著可通過執(zhí)行條件假隊列而導致條件假圖形再現(xiàn) 406 〇
[0086]裝倉遍次502為有條件的。在裝倉遍次502期間,GPU可產(chǎn)生組成場景且將多邊形分 類到多個"倉"的多邊形(例如,三角形)。如本文中所描述,在裝倉遍次502期間所界定的倉 可直接涉及呈現(xiàn)在顯示器上的最后場景的平鋪塊(例如,有時被稱作"屏幕平鋪塊")。舉例 來說,每一倉表示最后場景(例如,視頻數(shù)據(jù)幀、計算機產(chǎn)生的圖形圖像、靜態(tài)圖像,或其類 似者的預定義部分)的一部分或平鋪塊。因此,術語"倉"和"平鋪塊"可在本文中互換地使 用。
[0087]在一些實例中,GPU還在裝倉遍次502期間執(zhí)行操作以確定多邊形中的哪些在場景 中可見,例如,執(zhí)行深度測試以確定一多邊形是否覆蓋另一多邊形。在確定哪些多邊形在場 景中可見后,GPU就可產(chǎn)生被稱作"可見性流"的數(shù)據(jù)流。可見性流可包含用于場景的多邊形 中的每一者的值,且所述值可表示多邊形是否可見(例如,值"??芍甘径噙呅螢榭梢姷那?值"〇"可指示多邊形為不可見的)。
[0088]再現(xiàn)遍次504也是有條件的。在再現(xiàn)遍次504期間,再現(xiàn)所界定的平鋪塊中的每一 者。在一些實例中,可以三個階段完成再現(xiàn)遍次中的每一者:(1)清除/未分解,(2)再現(xiàn),(3) 分解。
[0089] 在一些實例中,存儲器驅(qū)動程序可執(zhí)行不促成可見性流的預裝倉遍次。在一些實 例中,存儲器驅(qū)動程序可執(zhí)行裝倉遍次502。條件性地執(zhí)行裝倉遍次502。舉例來說,對于直 接再現(xiàn),可跳過裝倉遍次502。在一些實例中,當條件性地執(zhí)行裝倉遍次502時,所述裝倉遍 次502可返回指示其是否促成可見性流的值?;蛘?,如果由裝倉遍次502返回的條件或值為 假,那么裝倉遍次502作為再現(xiàn)IB2促成可見性流。還條件性地執(zhí)行再現(xiàn)遍次504。當條件為 真時,再現(xiàn)遍次504促成可見性流。當條件性地執(zhí)行再現(xiàn)遍次504時,所述再現(xiàn)遍次504還可 返回"真"或"假"的值。當條件為假時,再現(xiàn)遍次504作為再現(xiàn)IB2促成可見性流??舍槍φ_ 再現(xiàn)遍次504觸發(fā)一次裝倉遍次502。接著可執(zhí)行正確可見性流和優(yōu)化??蓛H對正確幾何形 狀執(zhí)行再現(xiàn)遍次504而不執(zhí)行一個查詢遍次500??梢詥蝹€刷新點完成所述操作。
[0090] 在一個實例中,間接緩沖器I(IBl)可調(diào)用查詢遍次500、裝倉遍次502或再現(xiàn)遍次 504。查詢遍次500、裝倉遍次502和再現(xiàn)遍次504可為間接緩沖器2(IB2)的一部分。舉例來 說,查詢遍次500、裝倉遍次502和再現(xiàn)遍次504可各自為單獨IB2的(即)IB2級緩沖器內(nèi)的單 獨實體。查詢遍次500可在裝倉遍次502之前運行。裝倉遍次502可在再現(xiàn)遍次504之前運行。 在一些狀況下,可跳過裝倉遍次502以使得緊接在查詢遍次500之后運行再現(xiàn)遍次504。在一 些狀況下,在查詢遍次500之后既不執(zhí)行裝倉遍次502也不執(zhí)行再現(xiàn)遍次504。
[0091] 舉例來說,查詢遍次500可返回數(shù)據(jù),例如,指示是否應執(zhí)行裝倉遍次502的計數(shù)器 值或試探法。在一實例中,條件執(zhí)行確定單元可確定是否應執(zhí)行裝倉遍次502或再現(xiàn)遍次 504。對執(zhí)行裝倉遍次502的確定可基于待再現(xiàn)的對象的復雜性。舉例來說,對于簡單的對 象,可跳過裝倉遍次502。相反地,對于較復雜的對象,可執(zhí)行裝倉遍次502。因此,對于較簡 單的對象,可跳過裝倉遍次502以使得緊接在查詢遍次500之后運行再現(xiàn)遍次504。另外,對 于簡單的對象,可以單個迭代執(zhí)行再現(xiàn)遍次504,例如,整個屏幕可以單個遍次而非以一系 列塊寫入。這對于(例如)非常簡單的重復屏幕再現(xiàn)可為可能的。
[0092] 如本文中所描述,一些實例直到發(fā)送完所有數(shù)據(jù)才刷新。另外,在一些實例中,查 詢值是多少并不重要。因此,可不需要鎖定(例如)存儲器地點,因為是否重寫存儲器地點可 不重要。可能不必要取回調(diào)用,等等。在一些實例中,存儲器驅(qū)動程序可執(zhí)行不促成可見性 流的預裝倉遍次/查詢遍次。在一些實例中,存儲器驅(qū)動程序可執(zhí)行裝倉遍次502??蓷l件性 地執(zhí)行裝倉遍次502。在一些實例中,當條件性地執(zhí)行裝倉遍次502時,所述裝倉遍次502可 返回指示其促成可見性流的值?;蛘?,如果由裝倉遍次502返回的條件或值為假,那么裝倉 遍次502作為再現(xiàn)IB2促成可見性流。還條件性地執(zhí)行再現(xiàn)遍次504。當條件為真時,再現(xiàn)遍 次504促成可見性流。當條件性地執(zhí)行再現(xiàn)遍次504時,所述再現(xiàn)遍次504還可返回"真"或 "假"的值。當條件為假時,再現(xiàn)遍次504作為再現(xiàn)IB2促成可見性流??舍槍φ_再現(xiàn)遍次觸 發(fā)一次裝倉遍次。接著可執(zhí)行正確可見性流和優(yōu)化??蓛H對正確幾何形狀執(zhí)行再現(xiàn)遍次504 而不執(zhí)行一個查詢遍次500。可以單個刷新點完成所述操作。
[0093]舉例來說,一些裝置可執(zhí)行用于在基于平鋪塊的架構(gòu)上多路徑圖形再現(xiàn)的方法。 此類裝置可包含基于查詢遍次500執(zhí)行查詢遍次、條件真遍次而不執(zhí)行刷新操作,基于查詢 遍次500執(zhí)行條件假遍次而不執(zhí)行刷新操作的GPU,且響應于執(zhí)行條件真遍次和條件假遍 次,GPU可執(zhí)行刷新操作。
[0094] 在一些實例中,查詢遍次500可包含第一查詢遍次。執(zhí)行第一查詢遍次可包含執(zhí)行 指示第一查詢遍次的開始的圖形再現(xiàn)命令。另外,在一些實例中,執(zhí)行第一查詢遍次進一步 包含執(zhí)行指示第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。在一些實例中,執(zhí)行條件假遍次進一 步包含執(zhí)行指示條件假遍次的結(jié)束的圖形命令。在一些實例中,執(zhí)行開始條件遍次進一步 包含指示開始條件遍次的結(jié)束的圖形再現(xiàn)命令。在一些實例中,執(zhí)行條件真遍次進一步包 含執(zhí)行指示第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。在一些實例中,執(zhí)行條件假遍次進一步 包括執(zhí)行指示條件假遍次的開始的圖形命令。
[0095]圖6為根據(jù)本發(fā)明中所描述的一或多個實例的說明用于在基于平鋪塊的架構(gòu)上多 路徑圖形再現(xiàn)的實例方法的流程圖。GPU 120產(chǎn)生查詢遍次(600)。查詢遍次500可進一步包 含第一查詢遍次。另外,執(zhí)行第一查詢遍次可包含執(zhí)行指示第一查詢遍次的開始的圖形再 現(xiàn)命令。在一些實例中,執(zhí)行第一查詢遍次進一步包含執(zhí)行指示第一查詢遍次的結(jié)束的圖 形再現(xiàn)命令。
[0096] GPU 120基于查詢遍次500產(chǎn)生條件真遍次而不執(zhí)行刷新操作(602)。在一些實例 中,執(zhí)行開始條件遍次進一步包含指示開始條件遍次的結(jié)束的圖形再現(xiàn)命令。執(zhí)行條件真 遍次還可進一步包含執(zhí)行指示第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。
[0097] GPU 120基于查詢遍次500產(chǎn)生條件假遍次而不執(zhí)行刷新操作(604)。在一些實例 中,執(zhí)行條件假遍次進一步包含執(zhí)行指示條件假遍次的結(jié)束的圖形命令。在一些實例中,執(zhí) 行條件假遍次進一步包含執(zhí)行指示條件假遍次的開始的圖形命令。
[0098] GPU 120響應于執(zhí)行條件真遍次和條件假遍次而執(zhí)行刷新操作(606)。一旦完成三 個遍次一查詢遍次400、條件真404和條件假406,就可執(zhí)行刷新操作。一般來說,此可允許單 個刷新操作的性能。刷新命令408可將三個遍次一查詢遍次400、條件真404和條件假406- 的結(jié)果寫入到系統(tǒng)存儲器118。
[0099] 圖7為說明可經(jīng)配置以實施本發(fā)明的一或多個方面的裝置的實例的框圖。舉例來 說,圖7說明裝置702。裝置702的實例包含(但不限于)視頻裝置、媒體播放器、機頂盒、無線 手機(例如,移動電話和所謂的智能電話)、個人數(shù)字助理(PDA)、桌上型計算機、膝上型計算 機、游戲控制臺、視頻會議單元、平板計算裝置及其類似者。
[0100] 在圖7的實例中,裝置702可包含處理器10、系統(tǒng)存儲器118和GPU 120。出于簡潔的 目的,不關于圖7進一步描述處理器102、系統(tǒng)存儲器118和GPU 120,因為先前已經(jīng)關于圖1 描述了這些組件。裝置702還可包含顯示處理器724、收發(fā)器模塊726、用戶接口 728,和顯示 器730。收發(fā)器模塊726和顯示處理器724兩者都可為與處理器102及/或GPU 120相同的集成 電路(IC)的一部分。在另一實例中,收發(fā)器模塊726和顯示處理器724兩者都可在IC或包含 處理器102及/或GPU 120的若干IC的外部。在又一實例中,收發(fā)器模塊726和顯示處理器724 可形成于在包含處理器102及/或GPU 120的IC外部的IC中。
[0101] 出于清晰性的目的,裝置702可包含圖7中未展示的額外模塊或單元。舉例來說,裝 置702可包含揚聲器和麥克風,兩者中無一者在圖7中展示。在裝置702為移動無線電話的實 例中,揚聲器和麥克風可用于實現(xiàn)電話通信。當裝置702為媒體播放器時,其可包含用以提 供聲音輸出的揚聲器或其可包含輸出插座。裝置702還可包含攝像機。此外,裝置702中所展 示的各種模塊和單元可不必在裝置702的每一實例中。舉例來說,在裝置702為桌上型計算 機或經(jīng)裝備以與外部用戶接口或顯示器進行接口連接的其它裝置的實例中,用戶接口728 和顯示器730可在裝置702外部。
[0102] 用戶接口 728的實例包含(但不限于)觸摸屏、跟蹤球、鼠標、鍵盤,和其它類型的輸 入裝置。用戶接口 728還可為觸摸屏且可作為顯示器730的一部分并入。收發(fā)器模塊726可包 含用以允許裝置702與另一裝置或網(wǎng)絡之間的無線或有線通信的電路。收發(fā)器模塊726可包 含調(diào)制器、解調(diào)器、放大器和用于有線或無線通信的其它此類電路。
[0103] 在一些實例中,GPU 120可將完全形成的圖像存儲在系統(tǒng)存儲器118中。顯示處理 器724可從系統(tǒng)存儲器118檢索圖像,且輸出致使顯示器730的像素照明以顯示所述圖像的 值。顯示器730可為顯示由GPU 120產(chǎn)生的圖像內(nèi)容的裝置702的顯示器。顯示器730可為液 晶顯示器(IXD)、有機發(fā)光二極管顯示器(OLED)、陰極射線管(CRT)顯示器、等離子顯示器或 另一類型的顯示裝置。
[0104] 在一或多個實例中,所描述的功能可以硬件、軟件、固件或其任何組合來實施。如 果以軟件實施,那么可將功能作為一或多個指令或代碼而存儲在計算機可讀媒體上或經(jīng)由 計算機可讀媒體進行傳輸。計算機可讀媒體可包含計算機數(shù)據(jù)存儲媒體或通信媒體,通信 媒體包含促進將計算機程序從一處傳送到另一處的任何媒體。數(shù)據(jù)存儲媒體可為可由一或 多個計算機或一或多個處理器存取以檢索用于實施本發(fā)明中所描述的技術的指令、代碼 及/或數(shù)據(jù)結(jié)構(gòu)的任何可用媒體。借助于實例而非限制,這些計算機可讀媒體可包括RAM、 R0M、EEPR0M、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置。如本文中所 使用,磁盤和光盤包含壓縮光盤(CD)、激光光盤、光學光盤、數(shù)字多功能光盤(DVD)、軟磁盤 和藍光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤用激光以光學方式再現(xiàn)數(shù)據(jù)。上述 各項的組合也應包含在計算機可讀媒體的范圍內(nèi)。
[0105] 代碼可由一或多個處理器執(zhí)行,所述一或多個處理器例如一或多個數(shù)字信號處理 器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效的 集成或離散邏輯電路。因此,如本文中所使用的術語"處理器"可指前述結(jié)構(gòu)或適合于實施 本文中所描述的技術的任何其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文中所描述的功 能性可提供在專用硬件、軟件模塊或經(jīng)配置以用于編碼以及解碼的這些的組合內(nèi),或可并 入在經(jīng)組合的編解碼器中。另外,可將所述技術完全實施于一或多個電路或邏輯元件中。
[0106] 本發(fā)明的技術可實施于廣泛多種裝置或設備中,所述裝置或設備包含無線手機、 集成電路(IC)或一組IC(即,芯片組)。本發(fā)明中描述各種組件、模塊或單元以強調(diào)經(jīng)配置以 執(zhí)行所揭示的技術的裝置的功能性方面,但未必需要通過不同硬件單元實現(xiàn)。實際上,如上 文所描述,各種單元可結(jié)合合適的軟件、固件或這兩者組合在編解碼器硬件單元中,或由內(nèi) 部操作硬件單元(包含如上文所描述的一或多個處理器)的集合來提供。
【主權項】
1. 一種用于在基于平鋪塊的架構(gòu)上多路徑圖形再現(xiàn)的方法,所述方法包括: 運用圖形處理單元GPU執(zhí)行查詢遍次; 運用所述GHJ基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作; 運用所述GHJ基于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作;以及 響應于執(zhí)行所述條件真遍次和所述條件假遍次而運用所述GRJ執(zhí)行刷新操作。2. 根據(jù)權利要求1所述的方法,其中所述查詢遍次包括第一查詢遍次且執(zhí)行所述第一 查詢遍次包括執(zhí)行指示所述第一查詢遍次的開始的圖形再現(xiàn)命令。3. 根據(jù)權利要求2所述的方法,其中執(zhí)行所述第一查詢遍次進一步包括執(zhí)行指示所述 第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。4. 根據(jù)權利要求1所述的方法,其中執(zhí)行所述條件假遍次進一步包括執(zhí)行指示所述條 件假遍次的結(jié)束的圖形命令。5. 根據(jù)權利要求1所述的方法,其進一步包括執(zhí)行直接再現(xiàn)。6. 根據(jù)權利要求5所述的方法,其中執(zhí)行所述條件真遍次進一步包括執(zhí)行指示第一查 詢遍次的結(jié)束的圖形再現(xiàn)命令。7. 根據(jù)權利要求1所述的方法,其中執(zhí)行所述條件假遍次進一步包括執(zhí)行指示所述條 件假遍次的開始的圖形命令。8. -種用于在基于平鋪塊的架構(gòu)上多路徑圖形再現(xiàn)的裝置,其包括: GHJ,所述GRJ經(jīng)配置以: 執(zhí)行查詢遍次; 基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作; 基于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作;以及 響應于執(zhí)行所述條件真遍次和所述條件假遍次而執(zhí)行刷新操作。9. 根據(jù)權利要求8所述的裝置,其中所述查詢遍次包括第一查詢遍次且執(zhí)行所述第一 查詢遍次包括執(zhí)行指示所述第一查詢遍次的開始的圖形再現(xiàn)命令。10. 根據(jù)權利要求9所述的裝置,其中執(zhí)行所述第一查詢遍次進一步包括執(zhí)行指示所述 第一查詢遍次的結(jié)束的圖形再現(xiàn)命令。11. 根據(jù)權利要求8所述的裝置,其中執(zhí)行所述條件假遍次進一步包括執(zhí)行指示所述條 件假遍次的結(jié)束的圖形命令。12. 根據(jù)權利要求8所述的裝置,其進一步包括執(zhí)行直接再現(xiàn)。13. 根據(jù)權利要求12所述的裝置,其中執(zhí)行所述條件真遍次進一步包括執(zhí)行指示第一 查詢遍次的結(jié)束的圖形再現(xiàn)命令。14. 根據(jù)權利要求8所述的裝置,其中執(zhí)行所述條件假遍次進一步包括執(zhí)行指示所述條 件假遍次的開始的圖形命令。15. -種用于在基于平鋪塊的架構(gòu)上多路徑圖形再現(xiàn)的裝置,其包括: 用于運用圖形處理單元GRJ執(zhí)行查詢遍次的裝置; 用于運用所述GRJ基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作的裝置; 用于運用所述GRJ基于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作的裝置;以及 用于響應于執(zhí)行所述條件真遍次和所述條件假遍次而運用所述GPU執(zhí)行刷新操作的裝 置。16. 根據(jù)權利要求15所述的裝置,其中所述查詢遍次包括第一查詢遍次且執(zhí)行所述第 一查詢遍次包括執(zhí)行指示所述第一查詢遍次的開始的圖形再現(xiàn)命令。17. 根據(jù)權利要求16所述的裝置,其中執(zhí)行所述第一查詢遍次進一步包括用于執(zhí)行指 示所述第一查詢遍次的結(jié)束的圖形再現(xiàn)命令的裝置。18. 根據(jù)權利要求15所述的裝置,其中執(zhí)行所述條件假遍次進一步包括執(zhí)行指示所述 條件假遍次的結(jié)束的圖形命令。19. 根據(jù)權利要求15所述的裝置,其進一步包括執(zhí)行直接再現(xiàn)。20. 根據(jù)權利要求19所述的裝置,其中執(zhí)行所述條件真遍次進一步包括執(zhí)行指示第一 查詢遍次的結(jié)束的圖形再現(xiàn)命令。21. 根據(jù)權利要求15所述的裝置,其中執(zhí)行所述條件假遍次進一步包括執(zhí)行指示所述 條件假遍次的開始的圖形命令。22. -種計算機可讀存儲媒體,所述計算機可讀存儲媒體具有存儲于其上的指令以用 于在基于平鋪塊的架構(gòu)上多路徑圖形再現(xiàn),所述指令在執(zhí)行后就致使一或多個圖形處理單 元GPU進行以下操作: 執(zhí)行查詢遍次; 基于所述查詢遍次執(zhí)行條件真遍次而不執(zhí)行刷新操作; 基于所述查詢遍次執(zhí)行條件假遍次而不執(zhí)行刷新操作;以及 響應于執(zhí)行所述條件真遍次和所述條件假遍次而執(zhí)行刷新操作。
【文檔編號】G06T15/00GK105849780SQ201480070397
【公開日】2016年8月10日
【申請日】2014年12月4日
【發(fā)明人】穆拉特·巴爾契, 克里斯托弗·保羅·弗拉斯卡蒂, 阿溫阿什·賽塔拉邁亞
【申請人】高通股份有限公司