背景技術(shù):
減少圖形處理中的存儲(chǔ)器流量以降低功率使用和/或提高性能是非常重要的。
僅位置著色(position-onlyshading)減少了存儲(chǔ)器流量。僅位置著色流水線(position-onlyshadingpipeline)包括兩個(gè)管道,即剔除管道和重放管道。三角形進(jìn)入剔除管道,并且對(duì)頂點(diǎn)執(zhí)行位置渲染。然后接著是不同類型的剔除測(cè)試,例如背面(bf)和視錐(vf)剔除,而且還有零覆蓋剔除(丟棄不覆蓋任何樣本的三角形)。最終,剔除管道記錄哪些三角形經(jīng)得起所有剔除測(cè)試,例如記錄在位流(每個(gè)三角形一個(gè)位)中。此后,執(zhí)行重放管道,并且在此,僅對(duì)幸存的三角形的頂點(diǎn)執(zhí)行全頂點(diǎn)著色,緊接著是圖形管道的剩余部分。
附圖說(shuō)明
關(guān)于以下附圖對(duì)一些實(shí)施例進(jìn)行描述:
圖1是一個(gè)實(shí)施例的示意性描繪;
圖2是一個(gè)實(shí)施例的流程圖;
圖3是根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖;
圖4是根據(jù)一個(gè)實(shí)施例在圖3中所示的處理器的框圖;
圖5是根據(jù)一個(gè)實(shí)施例圖3的圖形處理器的框圖;
圖6是根據(jù)一個(gè)實(shí)施例的圖形處理引擎的框圖;
圖7是根據(jù)另一個(gè)實(shí)施例的圖形處理器的框圖;
圖8展示了一個(gè)實(shí)施例的線程執(zhí)行邏輯;
圖9是根據(jù)一個(gè)實(shí)施例的圖形處理器執(zhí)行單元指令格式的框圖;
圖10是圖形處理器的另一個(gè)實(shí)施例的框圖;
圖11a是根據(jù)一個(gè)實(shí)施例的圖形處理器命令格式的框圖;
圖11b是根據(jù)一個(gè)實(shí)施例的圖形處理器命令序列的框圖;以及
圖12是一個(gè)實(shí)施例的圖形軟件架構(gòu)。
具體實(shí)施方式
在僅位置著色流水線的剔除管道中,已經(jīng)計(jì)算了三角形頂點(diǎn)的位置,并且可以通過(guò)基于這些坐標(biāo)對(duì)三角形組進(jìn)行揀分(sorting)來(lái)探索所述坐標(biāo)。作為一個(gè)示例,繪制調(diào)用中的一系列三角形可以組成一組。所述三角形組被揀分至具有某個(gè)粒度的倉(cāng)(bin)(例如,16×16像素分塊倉(cāng))中。在每個(gè)倉(cāng)中,則可以粗略地對(duì)所述三角形基于其深度進(jìn)行揀分。
當(dāng)柵格化過(guò)程在重放管道中開(kāi)始時(shí),所述管道一次一個(gè)倉(cāng)地、并且可選地還按照揀分的深度順序(從前到后,如果深度測(cè)試較小或小于例如)消耗所述三角形。在轉(zhuǎn)移至下一小屏幕空間區(qū)域之前,在小屏幕空間區(qū)域(比如分塊)中對(duì)基本上所有的三角形進(jìn)行訪問(wèn)。
在一些實(shí)施例中,這種一次區(qū)域處理顯著提高了深度緩沖器高速緩存和顏色緩沖器高速緩存的效率。在一些實(shí)施例中,可以減少向顏色和深度緩沖器的存儲(chǔ)器流量,并且這些緩沖器通常是當(dāng)前圖形處理器的主要帶寬消耗者。
圖1中示出了流水線10的實(shí)施例。三角形(在框12上方示出)由僅位置著色器12處理。這緊接著是背面(bf)、視錐(vf)和零覆蓋剔除(方框14)。在完成剔除之后,計(jì)算表示性坐標(biāo)集合,例如(x,y)和深度z,并且然后可以將三角形(或一組三角形)裝(或揀分)(方框16)入倉(cāng)緩沖器20中的適當(dāng)列表中。在方框18,記錄位流中幸存的三角形。對(duì)命令緩沖器的一遍進(jìn)行僅位置著色前端(剔除管道),并(針對(duì)未被剔除的三角形)將三角形標(biāo)識(shí)符(id)存儲(chǔ)在倉(cāng)中,其指標(biāo)是從三角形的被量化中心計(jì)算的,并且被轉(zhuǎn)換成莫頓代碼(或希爾伯特代碼)。
在重放管道中,基于裝倉(cāng)按照被揀分的順序處理(方框22)幸存的三角形(在方框22上方示出)。例如,如果所有的三角形被裝入16×16分塊中,則可以通過(guò)首先按照深度順序揀分這些三角形并且然后(例如)從前到后對(duì)其進(jìn)行柵格化來(lái)處理這種分塊內(nèi)部的三角形列表。按深度順序進(jìn)行揀分是可選的。當(dāng)被禁用時(shí),僅對(duì)幸存三角形的頂點(diǎn)執(zhí)行全頂點(diǎn)著色(vs)24,接著是管道的剩余部分26。
來(lái)自同一選定倉(cāng)的三角形被優(yōu)先化,以便在開(kāi)始提交下一選定倉(cāng)內(nèi)的三角形之前提交給柵格化器。這繼續(xù)進(jìn)行,直到所有的倉(cāng)都已被處理,并且因此,所有的三角形都已經(jīng)被發(fā)送至圖形流水線。
可以通過(guò)許多方式來(lái)計(jì)算表示性坐標(biāo)。例如,可以使用一組中三角形的平均頂點(diǎn)位置。另一選項(xiàng)是在頂點(diǎn)上方建立定界框,并使用定界框的中心的坐標(biāo)作為表示性坐標(biāo)。
一旦計(jì)算了三角形、或一組三角形的表示性坐標(biāo),就找到了合適的倉(cāng)并且將每個(gè)表示性坐標(biāo)映射至具體倉(cāng)??梢酝ㄟ^(guò)首先對(duì)表示性坐標(biāo)進(jìn)行量化并且然后將其轉(zhuǎn)換成沿空間填充曲線的整數(shù)位置(比如像莫頓、希爾伯特或掃描線順序)來(lái)完成這個(gè)映射。所述整數(shù)位置對(duì)應(yīng)于倉(cāng)。量化分辨率被選定為使得使用預(yù)定數(shù)量的倉(cāng)。除了x和y之外,裝倉(cāng)可以或可以不考慮深度(z),這意味著每個(gè)屏幕空間位置可以與不止一個(gè)倉(cāng)重疊。
在重放管道中,按線性順序一次訪問(wèn)一個(gè)倉(cāng)(即,沿莫頓曲線的倉(cāng)),并且使用三角形id在不重新運(yùn)行命令緩沖器的情況下讀取三角形。在對(duì)倉(cāng)中的三角形進(jìn)行渲染時(shí),可以檢索著色器。對(duì)于每個(gè)倉(cāng),所述倉(cāng)中的三角形被讀取并被用正確的著色器渲染。在一個(gè)實(shí)施例,繪制調(diào)用標(biāo)識(shí)符(id)、或每個(gè)三角形的著色器標(biāo)識(shí)符(id)可以與三角形id一起被存儲(chǔ)?;蛘呖梢允褂貌檎冶韥?lái)使一定范圍的三角形id“指”向不同著色器等。
對(duì)于重放命令流的簡(jiǎn)單版本,每個(gè)三角形的位數(shù)被加倍至每個(gè)三角形兩個(gè)位。第二個(gè)位被協(xié)同用于16或32個(gè)三角形的分組,所述三角形被基于重心或平均位置一起揀分至分塊中。這16至32個(gè)位是分塊標(biāo)識(shí)符(id)。此外,在更高的粒度上,例如對(duì)于下至兩三千個(gè)三角形的分組的每個(gè)繪制調(diào)用和/或?qū)蛹?jí),同樣記錄了位掩碼,對(duì)應(yīng)于這組三角形所觸摸的所有分塊(或在更大的粒度上)。可以將這個(gè)位掩碼與當(dāng)前正在重放的分塊進(jìn)行比較,并且可以跳過(guò)命令流的較大區(qū)段。通過(guò)調(diào)整粒度(屏幕空間中的和命令流中的兩者),這些位掩碼可以被保持在每個(gè)三角形1位以下。然后,每個(gè)三角形的總位數(shù)升高至最多3位。
在一個(gè)實(shí)施例中,所述流水線是后揀分(sort/last)流水線,從而使得獲得正確的結(jié)果將取決于屏幕空間中的揀分。這樣,則不受限于在渲染下一分塊之前對(duì)單個(gè)分塊渲染所有的幾何結(jié)構(gòu)??梢詫?duì)幾何結(jié)構(gòu)的一部分進(jìn)行揀分,并對(duì)此幾何結(jié)構(gòu)的經(jīng)揀分的三角形進(jìn)行渲染,并且然后對(duì)進(jìn)一步的幾何結(jié)構(gòu)進(jìn)行揀分和渲染。
所述揀分都可以是寬松的,因?yàn)樗趦蓚€(gè)方面上接近。首先,它在一組n個(gè)三角形內(nèi)的表示性點(diǎn)的基礎(chǔ)上接近,并且所述組被放置在單個(gè)分塊中。所述組中的所述三角形因此可以覆蓋屬于其他分塊的像素。這是與中揀分(sort-middle)架構(gòu)相比的關(guān)鍵差別。第二,所述三角形首先被揀分至具有指定尺寸的倉(cāng)中;然而,可以根據(jù)或者深度或者其他標(biāo)準(zhǔn)在每個(gè)分塊中對(duì)其進(jìn)行進(jìn)一步揀分,例如,每個(gè)三角形使用哪種紋理或著色器(即,狀態(tài))或其在紋理空間中的位置。
參考圖2,序列30可以在軟件、固件和/或硬件中實(shí)現(xiàn)。在軟件和固件實(shí)施例中,可以由存儲(chǔ)在一個(gè)或多個(gè)非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)(如磁性、光學(xué)或半導(dǎo)體存儲(chǔ)設(shè)備)上的計(jì)算機(jī)執(zhí)行指令來(lái)實(shí)現(xiàn)。一般地,這些指令將是圖形處理單元的一部分,所述圖形處理單元是負(fù)責(zé)圖形特征的硬件單元。
如框32中所指示的,序列30通過(guò)執(zhí)行僅位置著色來(lái)開(kāi)始。這緊接著的是框34中的剔除。
在框36,可以將圖元形成組,例如,繪制調(diào)用中的三角形數(shù)量。然后,所述圖元被基于其表示性坐標(biāo)進(jìn)行揀分(框38)。在一個(gè)實(shí)施例中,所述坐標(biāo)可以是x、y、和深度坐標(biāo)。
然后,如框40中所指示的,表示性坐標(biāo)被映射至具體倉(cāng)。接下來(lái),基于每個(gè)倉(cāng)內(nèi)的圖元深度進(jìn)行揀分(框42)。最終,在框44中,一次一個(gè)倉(cāng)地、并且(可選地)按深度順序進(jìn)行柵格化。
投影到大屏幕空間區(qū)域的三角形(在此被稱為“大”三角形)將與許多倉(cāng)重疊,并且會(huì)對(duì)性能有害。所述大三角形可以被如下處理:
·最容易的方案是簡(jiǎn)單地禁能對(duì)大三角形的整理和裝倉(cāng)。
·大三角形可以被頂著倉(cāng)邊界拆分,并且可以在許多倉(cāng)上復(fù)制。這意味著將在不同時(shí)間處理大三角形的不同部分。
·所述表示性點(diǎn)可以包括某個(gè)面積度量。映射功能然后對(duì)不同倉(cāng)中與較小三角形相比的大三角形進(jìn)行映射。所述大三角形則可以首先被處理,例如,在轉(zhuǎn)移至較小三角形之前。這種裝倉(cāng)可以被以多分辨率的方式完成,從而當(dāng)面積度量增大時(shí)降低平面空間倉(cāng)分辨率。
因而,裝倉(cāng)可以考慮三角形尺寸、以及其他信息比如狀態(tài)。這樣,裝倉(cāng)時(shí)使用的坐標(biāo)不應(yīng)該被解釋為僅包括空間中的位置,而且還可以包括例如三角形尺寸和狀態(tài)。
目前direct3d和opengl規(guī)范不允許驅(qū)動(dòng)器或硬件更改已提交的三角形的渲染順序。然而,direct3d考慮引入順序屏障,其中,圖形處理單元可以自由更改這些屏障之間的三角形順序。這種技術(shù)通過(guò)還可用于opengl和opengles,這將有益于在移動(dòng)設(shè)備上進(jìn)行渲染。
圖3是根據(jù)實(shí)施例的數(shù)據(jù)處理系統(tǒng)100的框圖。數(shù)據(jù)處理系統(tǒng)100包括一個(gè)或多個(gè)處理器102以及一個(gè)或多個(gè)圖形處理器108,并且可以是單處理器桌面系統(tǒng)、多處理器工作站系統(tǒng)、或具有大量處理器102或處理器核107的服務(wù)器系統(tǒng)。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)100是用于移動(dòng)設(shè)備、手持式設(shè)備、或嵌入式設(shè)備的片上系統(tǒng)(soc)集成電路。
數(shù)據(jù)處理系統(tǒng)100的實(shí)施例可以包括或并入基于服務(wù)器的游戲平臺(tái)、游戲控制臺(tái),包括游戲或媒體控制臺(tái)、移動(dòng)游戲控制臺(tái)、手持游戲控制臺(tái)、或在線游戲控制臺(tái)。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)100是移動(dòng)設(shè)備、智能電話、平板計(jì)算設(shè)備或移動(dòng)互聯(lián)網(wǎng)設(shè)備。數(shù)據(jù)處理系統(tǒng)100還可以包括可穿戴設(shè)備(諸如智能手表可穿戴設(shè)備、智能眼鏡設(shè)備、增強(qiáng)現(xiàn)實(shí)設(shè)備、或虛擬現(xiàn)實(shí)設(shè)備)、與所述可穿戴設(shè)備耦合、或者集成在所述可穿戴設(shè)備中。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)100是電視或機(jī)頂盒設(shè)備,所述電視或機(jī)頂盒設(shè)備具有一個(gè)或多個(gè)處理器102以及由一個(gè)或多個(gè)圖形處理器108生成的圖形界面。
所述一個(gè)或多個(gè)處理器102各自包括用于處理指令的一個(gè)或多個(gè)處理器核107,所述指令在被執(zhí)行時(shí)執(zhí)行系統(tǒng)和用戶軟件的操作。在一個(gè)實(shí)施例中,所述一個(gè)或多個(gè)處理器核107中的每一個(gè)被配置成用于處理特定指令集109。指令集109可以促進(jìn)復(fù)雜指令集計(jì)算(cisc)、精簡(jiǎn)指令集計(jì)算(risc)、或經(jīng)由超長(zhǎng)指令字(vliw)的計(jì)算。多個(gè)處理器核107可以各自處理不同的指令集109,所述指令集可以包括用于促進(jìn)對(duì)其他指令集進(jìn)行仿真的指令。處理器核107還可以包括其他處理設(shè)備,如數(shù)字信號(hào)處理器(dsp)。
在一個(gè)實(shí)施例中,處理器102包括高速緩存存儲(chǔ)器104。取決于架構(gòu),處理器102可具有單個(gè)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存。在一個(gè)實(shí)施例中,在處理器102的各部件之間共享所述高速緩存存儲(chǔ)器。在一個(gè)實(shí)施例中,處理器102還使用外部高速緩存(例如,三級(jí)(l3)高速緩存或末級(jí)高速緩存(llc))(未示出),可以使用已知的高速緩存一致性技術(shù)在處理器核107之間共享所述外部高速緩存。寄存器組106附加地包括在處理器102中,所述處理器可以包括用于存儲(chǔ)不同類型數(shù)據(jù)的不同類型的寄存器(例如,整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器、和指令指針寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以專用于處理器102的設(shè)計(jì)。
處理器102耦合至處理器總線110,所述處理器總線用于在處理器102與系統(tǒng)100內(nèi)的其他部件之間傳輸數(shù)據(jù)信號(hào)。系統(tǒng)100使用示例性‘中樞’系統(tǒng)架構(gòu),包括存儲(chǔ)器控制器中樞116和輸入輸出(i/o)控制器中樞130。存儲(chǔ)器控制器中樞116促進(jìn)存儲(chǔ)器設(shè)備與系統(tǒng)100的其他部件之間的通信,而i/o控制器中樞(ich)130經(jīng)由本地i/o總線提供與i/o設(shè)備的連接。
存儲(chǔ)器設(shè)備120可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)設(shè)備、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)設(shè)備、閃存設(shè)備、或具有合適的性能用作處理存儲(chǔ)器的某個(gè)其他存儲(chǔ)器設(shè)備。存儲(chǔ)器120可以存儲(chǔ)數(shù)據(jù)122和指令121,以供在處理器102執(zhí)行過(guò)程時(shí)使用。存儲(chǔ)器控制器中樞116還與可選的外部圖形處理器112耦合,所述可選的外部圖形處理器可以與處理器102中與所述一個(gè)或多個(gè)圖形處理器108通信,從而執(zhí)行圖形和媒體操作。
ich130使得外圍部件經(jīng)由高速i/o總線連接至存儲(chǔ)器120和處理器102。i/o外圍部件包括音頻控制器146、固件接口128、無(wú)線收發(fā)器126(例如,wi-fi、藍(lán)牙)、數(shù)據(jù)存儲(chǔ)設(shè)備124(例如,硬盤驅(qū)動(dòng)器、閃存等)、以及用于將傳統(tǒng)(例如,個(gè)人系統(tǒng)2(ps/2))設(shè)備耦合至所述系統(tǒng)的傳統(tǒng)i/o控制器。一個(gè)或多個(gè)通用串行總線(usb)控制器142連接輸入設(shè)備,諸如鍵盤和鼠標(biāo)144組合。網(wǎng)絡(luò)控制器134還可以耦合至ich130。在一個(gè)實(shí)施例中,高性能網(wǎng)絡(luò)控制器(未示出)耦合至處理器總線110。
圖4是處理器200的實(shí)施例的框圖,所述處理器具有一個(gè)或多個(gè)處理器核202a-n、集成存儲(chǔ)器控制器214、以及集成圖形處理器208。處理器200可包括多達(dá)且包括由虛線框表示的附加核202n的附加核。內(nèi)核202a-n中的每一個(gè)包括一個(gè)或多個(gè)內(nèi)部高速緩存單元204a-n。在一個(gè)實(shí)施例中,每個(gè)內(nèi)核還可以訪問(wèn)一個(gè)或多個(gè)共享高速緩存單元206。
所述內(nèi)部高速緩存單元204a-n和共享的高速緩存單元206代表處理器200內(nèi)部的高速緩存存儲(chǔ)器層級(jí)。高速緩存存儲(chǔ)器層級(jí)可以包括每個(gè)核內(nèi)的至少一級(jí)指令和數(shù)據(jù)高速緩存、以及一級(jí)或多級(jí)共享中級(jí)高速緩存(比如2級(jí)(l2)、三級(jí)(l3)、四級(jí)(l4)、或其他級(jí)高速緩存,其中,外部存儲(chǔ)器之前的最高級(jí)高速緩存被分類為末級(jí)高速緩存(llc))。在一個(gè)實(shí)施例中,高速緩存一致性邏輯維持各個(gè)高速緩存單元206與204a-n之間的一致性。
處理器200還可以包括一個(gè)或多個(gè)總線控制器單元216的集合以及系統(tǒng)代理210。所述一個(gè)或多個(gè)總線控制器單元管理外圍總線集合,諸如一個(gè)或多個(gè)外圍組件互連總線(例如,pci總線、pci快速總線)。系統(tǒng)代理210為各處理器部件提供管理功能。在一個(gè)實(shí)施例中,系統(tǒng)代理210包括一個(gè)或多個(gè)集成存儲(chǔ)器控制器214以便管理對(duì)各外部存儲(chǔ)器設(shè)備(未示出)的訪問(wèn)。
在一個(gè)實(shí)施例中,核202a-n中的一個(gè)或多個(gè)包括對(duì)同步多線程的支持。在這種實(shí)施例中,系統(tǒng)代理210包括用于在多線程處理過(guò)程中協(xié)調(diào)和操作核202a-n的部件。系統(tǒng)代理210可以附加地包括功率控制單元(pcu),所述功率控制單元包括用于調(diào)節(jié)核202a-n的功率狀態(tài)的邏輯和部件以及圖形處理器208。
處理器200附加地包括用于執(zhí)行圖形處理操作的圖形處理器208。在一個(gè)實(shí)施例中,圖形處理器208耦合至共享高速緩存單元206集以及系統(tǒng)代理單元210,所述系統(tǒng)代理單元包括所述一個(gè)或多個(gè)集成存儲(chǔ)器控制器214。在一個(gè)實(shí)施例中,顯示控制器211耦合至圖形處理器208從而以便將圖形處理器輸出驅(qū)動(dòng)到一個(gè)或多個(gè)耦合的顯示器。顯示控制器211可以是經(jīng)由至少一個(gè)互連與圖形處理器耦合的單獨(dú)模塊,或者可以集成在圖形處理器208或系統(tǒng)代理210內(nèi)。
在一個(gè)實(shí)施例中,基于環(huán)的互連單元212用于耦合處理器200的內(nèi)部部件,然而,可以使用替代性互連單元,比如點(diǎn)到點(diǎn)互連、切換式互連、或其他技術(shù),包括本領(lǐng)域眾所周知的技術(shù)。在一個(gè)實(shí)施例中,圖形處理器208經(jīng)由i/o鏈路213與環(huán)形互連212耦合。
示例性i/o鏈路213代表多個(gè)i/o互連中的至少一個(gè),包括促進(jìn)各處理器部件與高性能嵌入式存儲(chǔ)器模塊218(比如edram模塊)之間的通信的封裝體i/o互連。在一個(gè)實(shí)施例中,核202-n中的每一個(gè)和圖形處理器208使用嵌入式存儲(chǔ)器模塊218作為共享末級(jí)高速緩存。
在一個(gè)實(shí)施例中,核202a-n是在同一指令集架構(gòu)上執(zhí)行的均質(zhì)核。在另一實(shí)施例中,核202a-n就指令集架構(gòu)(isa)而言是異質(zhì)的,其中,核202a-n中的一個(gè)或多個(gè)執(zhí)行第一指令集,而其他核中的至少一個(gè)執(zhí)行所述第一指令集的子集或不同的指令集。
處理器200可以是使用多種處理技術(shù)(例如,互補(bǔ)型金屬氧化物半導(dǎo)體(cmos)、雙極結(jié)型/互補(bǔ)型金屬氧化物半導(dǎo)體(bicmos)、或n型金屬氧化物半導(dǎo)體邏輯(nmos))中的任何處理技術(shù)的一個(gè)或多個(gè)襯底的一部分或者實(shí)現(xiàn)在所述一個(gè)或多個(gè)襯底上。另外,處理器200可以實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上或者被實(shí)現(xiàn)為具有除其他部件之外的所展示的部件的片上系統(tǒng)(soc)集成電路。
圖5是圖形處理器300的一個(gè)實(shí)施例的框圖,所述圖形處理器可以是分立的圖形處理單元、或者可以是與多個(gè)處理核集成的圖形處理器。在一個(gè)實(shí)施例中,圖形處理器經(jīng)由到圖形處理器上的寄存器的映射i/o接口并且經(jīng)由被放置在處理器中的命令與存儲(chǔ)器進(jìn)行通信。圖形處理器300包括存儲(chǔ)器接口314以便訪問(wèn)存儲(chǔ)器。存儲(chǔ)器接口314可以是到本地存儲(chǔ)器、一個(gè)或多個(gè)內(nèi)部高速緩存、一個(gè)或多個(gè)共享外部高速緩存、和/或到系統(tǒng)存儲(chǔ)器的接口。
圖形處理器300還包括顯示控制器302,所述顯示控制器用于將顯示輸出數(shù)據(jù)驅(qū)動(dòng)到顯示設(shè)備320。顯示控制器302包括用于顯示器的一個(gè)或多個(gè)重疊平面的硬件以及多層視頻或用戶接口元件的組成。在一個(gè)實(shí)施例中,圖形處理器300包括用于編碼、解碼、或者向、從或在一個(gè)或多個(gè)媒體編碼格式之間進(jìn)行媒體代碼轉(zhuǎn)換的視頻編解碼器引擎306,包括但不限于:運(yùn)動(dòng)圖像專家組(mpeg)(諸如mpeg-2)、高級(jí)視頻編碼(avc)格式(諸如h.264/mpeg-4avc)、以及電影&電視工程師協(xié)會(huì)(smpte)421m/vc-1、和聯(lián)合圖像專家組(jpeg)格式(諸如jpeg、以及運(yùn)動(dòng)jpeg(mjpeg)格式)。
在一個(gè)實(shí)施例中,圖形處理器300包括塊圖像轉(zhuǎn)移(blit)引擎304以便執(zhí)行二維(2d)柵格化器操作,包括例如位邊界塊轉(zhuǎn)移。然而,在一個(gè)實(shí)施例中,使用圖形處理引擎(gpe)310的一個(gè)或多個(gè)部件來(lái)執(zhí)行2d圖形操作。圖形處理引擎310是用于執(zhí)行圖形操作的計(jì)算引擎,所述圖形操作包括三維(3d)圖形操作和媒體操作。
gpe310包括用于執(zhí)行3d操作的3d流水線312,比如使用作用于3d圖元形狀(例如,矩形、三角形等)的處理功能來(lái)渲染三維圖像和場(chǎng)景。3d流水線312包括可編程且固定的功能元件,所述可編程且固定功能元件在到3d/媒體子系統(tǒng)315的元件和/或生成的執(zhí)行線程內(nèi)執(zhí)行各種任務(wù)。雖然3d流水線312可以用來(lái)執(zhí)行媒體操作,但是gpe310的實(shí)施例還包括媒體流水線316,所述媒體流水線具體地用于執(zhí)行媒體操作,諸如視頻后處理和圖像增強(qiáng)。
在一個(gè)實(shí)施例中,媒體流水線316包括固定功能或可編程邏輯單元以便代替、或代表視頻編解碼器引擎306來(lái)執(zhí)行一種或多種專門的媒體操作,比如視頻解碼加速、視頻去隔行、以及視頻編碼加速。在一個(gè)實(shí)施例中,媒體流水線316附加地包括線程生成單元以便生成用于在3d/媒體子系統(tǒng)315上執(zhí)行的線程。所生成的線程對(duì)3d/媒體子系統(tǒng)中所包括的一個(gè)或多個(gè)圖形執(zhí)行單元的媒體操作進(jìn)行計(jì)算。
3d/媒體子系統(tǒng)315包括用于執(zhí)行3d流水線312和媒體流水線316生成的線程的邏輯。在一個(gè)實(shí)施例中,流水線向3d/媒體子系統(tǒng)315發(fā)送線程執(zhí)行請(qǐng)求,所述3d/媒體子系統(tǒng)包括用于仲裁并將各請(qǐng)求分派到可用的線程執(zhí)行資源的線程分派邏輯。所述執(zhí)行資源包括用于處理3d線程和媒體線程的圖形執(zhí)行單元陣列。在一個(gè)實(shí)施例中,3d/媒體子系統(tǒng)315包括用于線程指令和數(shù)據(jù)的一個(gè)或多個(gè)內(nèi)部高速緩存。在一個(gè)實(shí)施例中,子系統(tǒng)還包括共享存儲(chǔ)器(包括寄存器和可尋址存儲(chǔ)器)以便在線程之間共享數(shù)據(jù)并用于存儲(chǔ)輸出數(shù)據(jù)。
圖6是用于圖形處理器的圖形處理引擎410的實(shí)施例的框圖。在一個(gè)實(shí)施例中,圖形處理引擎(gpe)410是圖5中示出的gpe310的版本。所述gpe410包括3d流水線412和媒體流水線416,其中每個(gè)流水線可以與圖5的3d流水線312和媒體流水線316的實(shí)現(xiàn)方式不同或者類似。
在一個(gè)實(shí)施例中,gpe410與命令流送器403耦合,所述命令流送器向gpe3d流水線412和媒體流水線416提供命令流。命令流送器403耦合至存儲(chǔ)器,所述存儲(chǔ)器可以是系統(tǒng)存儲(chǔ)器、或內(nèi)部高速緩存存儲(chǔ)器和共享高速緩存存儲(chǔ)器中的一個(gè)或多個(gè)高速緩存存儲(chǔ)器。所述命令流送器403從所述存儲(chǔ)器接收命令并將所述命令發(fā)送至3d流水線412和/或媒體流水線416。所述3d和媒體流水線通過(guò)經(jīng)由各自流水線內(nèi)的邏輯執(zhí)行操作或者通過(guò)將一個(gè)或多個(gè)執(zhí)行線程分派至執(zhí)行單元陣列414來(lái)處理所述命令。在一個(gè)實(shí)施例中,執(zhí)行單元陣列414是可擴(kuò)展的,從而使得所述陣列包括基于gpe410的目標(biāo)功率和性能水平的可變數(shù)量的執(zhí)行單元。
采樣引擎430與存儲(chǔ)器(例如,高速緩存存儲(chǔ)器或系統(tǒng)存儲(chǔ)器)和執(zhí)行單元陣列414耦合。在一個(gè)實(shí)施例中,采樣引擎430為可擴(kuò)展執(zhí)行單元陣列414提供存儲(chǔ)器訪問(wèn)機(jī)制,所述存儲(chǔ)器訪問(wèn)機(jī)制允許執(zhí)行陣列414從存儲(chǔ)器讀取圖形和媒體數(shù)據(jù)。在一個(gè)實(shí)施例中,采樣引擎430包括用于執(zhí)行針對(duì)媒體的專門圖像采樣操作的邏輯。
采樣引擎430中的所述專門媒體采樣邏輯包括去噪/去隔行模塊432、運(yùn)動(dòng)估計(jì)模塊434、和圖像縮放和濾波模塊436。去噪/去隔行模塊432包括用于對(duì)經(jīng)解碼的視頻數(shù)據(jù)執(zhí)行去噪或去隔行算法中的一項(xiàng)或多項(xiàng)的邏輯。去隔行邏輯將隔行的視頻內(nèi)容的交替字段組合為單個(gè)視頻幀。去噪邏輯從視頻和圖像數(shù)據(jù)減少或去除數(shù)據(jù)噪音。在一個(gè)實(shí)施例中,去噪和去隔行邏輯是運(yùn)動(dòng)自適應(yīng)的并且使用基于在所述視頻數(shù)據(jù)中檢測(cè)到的運(yùn)動(dòng)量的空間或時(shí)間濾波。在一個(gè)實(shí)施例中,去噪/去隔行模塊432包括專門的運(yùn)動(dòng)檢測(cè)邏輯(例如,在運(yùn)動(dòng)估計(jì)引擎434內(nèi))。
運(yùn)動(dòng)估計(jì)引擎434通過(guò)對(duì)視頻數(shù)據(jù)執(zhí)行視頻加速功能(比如運(yùn)動(dòng)向量估計(jì)和預(yù)測(cè))來(lái)為視頻操作提供硬件加速。運(yùn)動(dòng)估計(jì)引擎確定運(yùn)動(dòng)向量,所述運(yùn)動(dòng)向量描述了連續(xù)視頻幀之間的圖像數(shù)據(jù)的變換。在一個(gè)實(shí)施例中,圖形處理器媒體編解碼器使用視頻運(yùn)動(dòng)估計(jì)引擎434來(lái)對(duì)宏塊級(jí)視頻執(zhí)行操作,對(duì)于其使用通用處理器來(lái)執(zhí)行可以另外地是計(jì)算密集型的。在一個(gè)實(shí)施例中,運(yùn)動(dòng)估計(jì)引擎434通??捎糜趫D形處理器部件以便輔助視頻解碼和處理功能,所述視頻解碼和處理功能對(duì)于視頻數(shù)據(jù)內(nèi)的運(yùn)動(dòng)的方向或幅度是敏感或自適應(yīng)的。
圖像縮放和濾波模塊436執(zhí)行圖像處理操作以便增強(qiáng)所生成的圖像和視頻的視覺(jué)質(zhì)量。在一個(gè)實(shí)施例中,所述縮放和濾波模塊436在向執(zhí)行單元陣列414提供數(shù)據(jù)之前在采樣操作過(guò)程中處理圖像和視頻數(shù)據(jù)。
在一個(gè)實(shí)施例中,圖形處理引擎410包括數(shù)據(jù)端口444,所述數(shù)據(jù)端口提供用于圖形子系統(tǒng)訪問(wèn)存儲(chǔ)器的附加機(jī)制。數(shù)據(jù)端口444針對(duì)操作促進(jìn)存儲(chǔ)器訪問(wèn),所述操作包括渲染目標(biāo)寫(xiě)入、恒定緩沖器讀取、暫時(shí)存儲(chǔ)器空間讀區(qū)/寫(xiě)入、和媒體表面訪問(wèn)。在一個(gè)實(shí)施例中,數(shù)據(jù)端口444包括用于高速緩存對(duì)存儲(chǔ)器的訪問(wèn)的高速緩存存儲(chǔ)器空間。所述高速緩存存儲(chǔ)器可以是單個(gè)數(shù)據(jù)高速緩存或被分割為用于所述多個(gè)子系統(tǒng)的多個(gè)高速緩存,所述多個(gè)高速緩存經(jīng)由數(shù)據(jù)端口訪問(wèn)存儲(chǔ)器(例如,渲染緩沖器高速緩存、恒定緩沖器高速緩存等)。在一個(gè)實(shí)施例中,在執(zhí)行單元陣列414中的執(zhí)行單元上執(zhí)行的線程通過(guò)經(jīng)由數(shù)據(jù)分配互連來(lái)交換消息而與所述數(shù)據(jù)端口進(jìn)行通信,所述數(shù)據(jù)分配互連耦合所述圖形處理引擎410的所述子系統(tǒng)中的每個(gè)子系統(tǒng)。
圖7是圖形處理器的另一個(gè)實(shí)施例的框圖。在一個(gè)實(shí)施例中,所述圖形處理器包括環(huán)形互連502、流水線前端504、媒體引擎537、以及圖形核580a-n。所述環(huán)形互連502將所述圖形處理器耦合至其他處理單元,包括其他圖形處理器或者一個(gè)或多個(gè)通用處理器核。在一個(gè)實(shí)施例中,圖形處理器是集成在多核處理系統(tǒng)內(nèi)的多個(gè)處理器之一。
圖形處理器經(jīng)由所述環(huán)形互連502接收多批命令。傳入命令由流水線前端504中的命令流送器503來(lái)解譯。圖形處理器包括用于經(jīng)由所述(多個(gè))圖形核580a-n來(lái)執(zhí)行3d幾何處理和媒體處理的可擴(kuò)展執(zhí)行邏輯。針對(duì)3d幾何處理命令,命令流轉(zhuǎn)換器503將所述命令供應(yīng)至幾何流水線536。針對(duì)至少一些媒體處理命令,命令流轉(zhuǎn)換器503將所述命令供應(yīng)至視頻前端534,所述視頻前端與媒體引擎537耦合。媒體引擎537包括用于視頻和圖像后處理的視頻質(zhì)量引擎(vqe)530以及用于提供硬件加速的媒體數(shù)據(jù)編碼和解碼的多格式編碼/解碼(mfx)533引擎。幾何流水線536和媒體引擎537各自生成執(zhí)行線程,所述執(zhí)行線程用于由至少一個(gè)圖形核580a提供的線程執(zhí)行資源。
圖形處理器包括可擴(kuò)展線程執(zhí)行資源表征模塊核580a-n(有時(shí)被稱為核分片),各個(gè)可擴(kuò)展線程執(zhí)行資源表征模塊核具有多個(gè)子核550a-n、560a-n(有時(shí)被稱為核子分片)。圖形處理器可以具有任意數(shù)量的圖形核580a至580n。在一個(gè)實(shí)施例中,圖形處理器包括圖形核580a,所述圖形核至少具有第一子核550a和第二子核560a。在另一實(shí)施例中,圖形處理器是具有單個(gè)子核(例如,550a)的低功率處理器。在一個(gè)實(shí)施例中,圖形處理器包括多圖形核580a-n,每個(gè)圖形核包括第一子核550a-n的集合以及第二子核560a-n的集合。所述這組第一子內(nèi)核550a-n中的每個(gè)子內(nèi)核至少包括第一組執(zhí)行單元552a-n和媒體/紋理采樣器554a-n。所述第二子核560a-n的集合中的每個(gè)子核至少包括執(zhí)行單元562a-n以及采樣器564a-n的第二集合。在一個(gè)實(shí)施例中,每個(gè)子核550a-n、560a-n共享共享資源570a-n的集合。在一個(gè)實(shí)施例中,所述共享資源包括共享高速緩存存儲(chǔ)器和像素操作邏輯。其他共享資源還可以包括在圖形處理器的各實(shí)施例中。
圖8展示了線程執(zhí)行邏輯600,所述線程執(zhí)行邏輯包括在圖形處理引擎的一個(gè)實(shí)施例中采用的處理元件陣列。在一個(gè)實(shí)施例中,線程執(zhí)行邏輯600包括像素著色器602、線程分派器604、指令高速緩存606、可擴(kuò)展執(zhí)行單元陣列(包括多個(gè)執(zhí)行單元608a-n)、采樣器610、數(shù)據(jù)高速緩存612、以及數(shù)據(jù)端口614。在一個(gè)實(shí)施例中,所包括的部件經(jīng)由互連結(jié)構(gòu)而互連,所述互連結(jié)構(gòu)鏈接至所述部件中的每個(gè)部件。線程執(zhí)行邏輯600包括通過(guò)指令高速緩存606、述數(shù)據(jù)端口614、采樣器610、以及執(zhí)行單元陣列608a-n中的一項(xiàng)或多項(xiàng)與存儲(chǔ)器(諸如系統(tǒng)存儲(chǔ)器或高速緩存存儲(chǔ)器)的一個(gè)或多個(gè)連接。在一個(gè)實(shí)施例中,每個(gè)執(zhí)行單元(例如,608a)是單獨(dú)的向量處理器,所述向量處理器能夠執(zhí)行多個(gè)同步線程并且針對(duì)每個(gè)線程并行地處理多個(gè)數(shù)據(jù)元素。執(zhí)行單元陣列608a-n包括任何數(shù)量的單獨(dú)執(zhí)行單元。
在一個(gè)實(shí)施例中,執(zhí)行單元陣列608a-n主要用于執(zhí)行“著色器”程序。在一個(gè)實(shí)施例中,陣列608a-n中的執(zhí)行單元執(zhí)行指令集(所述指令集包括對(duì)許多標(biāo)準(zhǔn)3d圖形著色器指令的本機(jī)支持),從而使得以最小的轉(zhuǎn)換執(zhí)行來(lái)自圖形庫(kù)(例如,direct3d和opengl)的著色器程序。執(zhí)行單元支持頂點(diǎn)和幾何處理(例如,頂點(diǎn)程序、幾何程序、頂點(diǎn)著色器)、像素處理(例如,像素著色器、碎片著色器)和通用處理(例如,計(jì)算和媒體著色器)。
執(zhí)行單元陣列608a-n中的每個(gè)執(zhí)行單元在數(shù)據(jù)元素陣列上進(jìn)行操作。數(shù)據(jù)元素的數(shù)量是“執(zhí)行大小”、或針對(duì)指令的通道數(shù)量。執(zhí)行通道是執(zhí)行數(shù)據(jù)元素訪問(wèn)、掩蓋、和指令內(nèi)的流控制的邏輯單元。通道的數(shù)量可以與針對(duì)特定圖形處理器的物理alu或fpu的數(shù)量無(wú)關(guān)。執(zhí)行單元608a-n支持整數(shù)和浮點(diǎn)數(shù)據(jù)類型。
執(zhí)行單元指令集包括單指令多數(shù)據(jù)(simd)指令。所述各數(shù)據(jù)元素可作為壓縮數(shù)據(jù)類型存儲(chǔ)在寄存器中,并且所述執(zhí)行單元將基于所述元素的數(shù)據(jù)大小來(lái)處理所述各元素。例如,當(dāng)在256位寬的向量上進(jìn)行操作時(shí),所述256位的向量存儲(chǔ)在寄存器中,并且所述執(zhí)行單元作為四個(gè)單獨(dú)64位打包數(shù)據(jù)元素(四倍字長(zhǎng)(qw)大小的數(shù)據(jù)元素)、八個(gè)單獨(dú)32位打包數(shù)據(jù)元素(雙倍字長(zhǎng)(dw)大小的數(shù)據(jù)元素)、十六個(gè)單獨(dú)16位打包數(shù)據(jù)元素(字長(zhǎng)(w)大小的數(shù)據(jù)元素)、或三十二個(gè)單獨(dú)8位數(shù)據(jù)元素(字節(jié)(b)大小的數(shù)據(jù)元素)在所述向量上進(jìn)行操作。然而,不同的向量寬度和寄存器大小是可能的。
一個(gè)或多個(gè)內(nèi)部指令高速緩存(例如,606)包括在所述線程執(zhí)行邏輯600中以便高速緩存所述執(zhí)行單元的線程指令。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)高速緩存(例如,612)被包括用于高速緩存在線程執(zhí)行過(guò)程中的線程數(shù)據(jù)。采樣器610被包括用于為3d操作提供紋理采樣并且為媒體操作提供媒體采樣。在一個(gè)實(shí)施例中,采樣器610包括專門的紋理或媒體采樣功能,以便在向執(zhí)行單元提供采樣數(shù)據(jù)之前在采樣處理過(guò)程中處理紋理或媒體數(shù)據(jù)。
在執(zhí)行過(guò)程中,所述圖形和媒體流水線通過(guò)線程生成和分派邏輯向線程執(zhí)行邏輯600發(fā)送線程發(fā)起請(qǐng)求。線程執(zhí)行邏輯600包括本地線程分派器604,所述本地線程分派器對(duì)來(lái)自所述圖形和媒體流水線的線程發(fā)起請(qǐng)求進(jìn)行仲裁并且在一個(gè)或多個(gè)執(zhí)行單元608a-n上實(shí)例化所述請(qǐng)求的線程。例如,所述幾何流水線(例如,圖3的536)將頂點(diǎn)處理、鑲嵌或幾何處理線程分派至所述線程執(zhí)行邏輯600。線程分派器604還可處理來(lái)自執(zhí)行著色器程序的運(yùn)行時(shí)間線程生成請(qǐng)求。
一旦一組幾何對(duì)象被處理并被柵格化成像素?cái)?shù)據(jù),則像素著色器602被調(diào)用以便進(jìn)一步計(jì)算輸出信息并且使得結(jié)果被寫(xiě)入到輸出表面(例如,色彩緩沖器、深度緩沖器、模板緩沖器等)。在一個(gè)實(shí)施例中,像素著色器602計(jì)算各頂點(diǎn)屬性的值,所述各頂點(diǎn)屬性跨柵格化對(duì)象被內(nèi)插。像素著色器602然后執(zhí)行api供應(yīng)的像素著色器程序。為了執(zhí)行所述像素著色器程序,所述像素著色器602經(jīng)由所述線程分派器604將線程分派至執(zhí)行單元(例如,608a)。像素著色器602使用采樣器610中的紋理采樣邏輯來(lái)訪問(wèn)存儲(chǔ)在存儲(chǔ)器中的紋理圖中的紋理數(shù)據(jù)。對(duì)紋理數(shù)據(jù)和輸入幾何數(shù)據(jù)的算術(shù)運(yùn)算計(jì)算每個(gè)幾何碎片的像素顏色數(shù)據(jù),或丟棄一個(gè)或多個(gè)像素而不進(jìn)行進(jìn)一步處理。
在一個(gè)實(shí)施例中,數(shù)據(jù)端口614提供存儲(chǔ)器訪問(wèn)機(jī)制,供線程執(zhí)行邏輯600將經(jīng)處理的數(shù)據(jù)輸出至存儲(chǔ)器以便在圖形處理器輸出流水線上進(jìn)行處理。在一個(gè)實(shí)施例中,數(shù)據(jù)端口614包括并耦合至一個(gè)或多個(gè)高速緩存存儲(chǔ)器(例如,數(shù)據(jù)高速緩存612)從而經(jīng)由數(shù)據(jù)端口高速緩存數(shù)據(jù)以供存儲(chǔ)器訪問(wèn)。
圖9是根據(jù)實(shí)施例的框圖,展示了圖形處理器執(zhí)行單元的指令格式。在一個(gè)實(shí)施例中,圖形處理器執(zhí)行單元支持具有采用多種格式的指令的指令集。實(shí)線框展示了通常包括在執(zhí)行單元指令中的部件,而虛線包括是可選的或者僅包括在指令子集中的部件。如所展示,所描述的指令格式是宏指令,因?yàn)樗鼈兪枪?yīng)至所述執(zhí)行單元的指令,這與從指令解碼產(chǎn)生的微操作相反(一旦所述指令被處理)。
在一個(gè)實(shí)施例中,圖形處理器執(zhí)行單元本機(jī)地支持采用128位格式710的指令。64位壓縮指令格式730可用于基于所選擇的指令、指令選項(xiàng)、以及操作數(shù)量的一些指令。所述本機(jī)128位格式710提供對(duì)所有指令選項(xiàng)的訪問(wèn),而一些選項(xiàng)和操作限制在所述64位格式730中。在所述64位格式730中可用的本地指令隨實(shí)施例而改變。在一個(gè)實(shí)施例中,使用索引字段713中的索引值的集合來(lái)部分地壓縮所述指令。所述執(zhí)行單元硬件基于所述索引值來(lái)參考?jí)嚎s表集合并且使用所述壓縮表輸出來(lái)重構(gòu)采用128位格式710的本地指令。
對(duì)于每種格式,指令操作碼712限定了所述執(zhí)行單元要執(zhí)行的操作。所述執(zhí)行單元跨每個(gè)操作數(shù)的所述多個(gè)數(shù)據(jù)元素來(lái)并行地執(zhí)行每條指令。例如,響應(yīng)于添加指令,所述執(zhí)行單元跨每個(gè)顏色通道執(zhí)行同步添加操作,所述顏色通道表示紋理元素或圖片元素。默認(rèn)地,所述執(zhí)行單元跨所述操作數(shù)的所有數(shù)據(jù)通道執(zhí)行每條指令。指令控制字段712使能控制某些執(zhí)行選項(xiàng),諸如通道選擇(例如,預(yù)測(cè))以及數(shù)據(jù)通道排序(例如,重排)。針對(duì)128位指令710,執(zhí)行大小字段716限制了將被并行執(zhí)行的數(shù)據(jù)通道的數(shù)量。所述執(zhí)行大小字段716不可用于所述64位緊湊指令格式730。
一些執(zhí)行單元指令具有多達(dá)三個(gè)操作數(shù),包括兩個(gè)源操作數(shù)(src0720、src1722)和一個(gè)目的地操作數(shù)718。在一個(gè)實(shí)施例中,執(zhí)行單元支持雙目的地操作數(shù)指令,其中,所述目的地操作數(shù)之一是隱式的。數(shù)據(jù)操縱指令可具有第三源操作數(shù)(例如,src2724),其中,所述指令操作碼jj12確定源操作數(shù)的數(shù)量。指令的最后一個(gè)源操作數(shù)可以是指令所傳遞的中間值(例如,硬編碼值)。
在一個(gè)實(shí)施例中,基于操作碼位字段將指令進(jìn)行分組從而簡(jiǎn)化操作碼解碼740。對(duì)于8位的操作碼,第4、5、和6位允許執(zhí)行單元確定操作碼的類型。所示出的精確操作碼分組是示例性的。在一個(gè)實(shí)施例中,移動(dòng)和邏輯操作碼分組742包括數(shù)據(jù)移動(dòng)和邏輯指令(例如,mov、cmp)。所述移動(dòng)和邏輯分組742共享所述第五最高有效位(msb),其中,移動(dòng)指令采用0000xxxxb的形式(例如,0x0x)并且邏輯指令采用0001xxxxb的形式(例如,0x01)。流控制指令分組744(例如,call、jmp)包括0010xxxxb(例如,0x20)形式的指令。混雜指令分組746包括指令的混合,包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,wait、send)。并行數(shù)學(xué)指令分組748包括采用0100xxxxb形式(例如,0x40)的部件式的算術(shù)指令(例如,add、mul)。所述并行數(shù)學(xué)分組748跨數(shù)據(jù)通道并行地執(zhí)行算術(shù)運(yùn)算。向量數(shù)學(xué)分組750包括采用0101xxxxb形式(例如,0x50)的算術(shù)指令(例如,dp4)。所述向量數(shù)學(xué)分組對(duì)向量操作數(shù)執(zhí)行算術(shù)運(yùn)算,諸如點(diǎn)積運(yùn)算。
圖10是圖形處理器的另一個(gè)實(shí)施例的框圖,所述圖形處理器包括圖形流水線820、媒體流水線830、顯示引擎840、線程執(zhí)行邏輯850、以及渲染輸出流水線870。在一個(gè)實(shí)施例中,圖形處理器是多核處理系統(tǒng)內(nèi)的圖形處理器,所述多核處理系統(tǒng)包括一個(gè)或多個(gè)通用處理核。圖形處理器受到至一個(gè)或多個(gè)控制寄存器(未示出)的寄存器寫(xiě)入的控制或者經(jīng)由環(huán)形互連802經(jīng)由下發(fā)至所述圖形處理器的命令被控制。環(huán)形互連802將圖形處理器耦合至其他處理部件,諸如其他圖形處理器或通用處理器。來(lái)自所述環(huán)形互連的命令通過(guò)命令流送器803被解譯,所述命令流轉(zhuǎn)換器將指令供應(yīng)至所述圖形流水線820或媒體流水線830的單獨(dú)部件。
所述命令流送器803引導(dǎo)頂點(diǎn)拾取器805部件的操作,所述頂點(diǎn)拾取器部件從存儲(chǔ)器讀取頂點(diǎn)數(shù)據(jù)并執(zhí)行由所述命令流送器803所提供的頂點(diǎn)處理命令。所述頂點(diǎn)拾取器805將頂點(diǎn)數(shù)據(jù)提供給頂點(diǎn)著色器807,所述頂點(diǎn)著色器對(duì)每個(gè)頂點(diǎn)進(jìn)行坐標(biāo)空間轉(zhuǎn)換和照明操作。頂點(diǎn)拾取器805和頂點(diǎn)著色器807通過(guò)經(jīng)由線程分派器831向執(zhí)行單元852a、852b分派執(zhí)行線程來(lái)執(zhí)行頂點(diǎn)處理指令。
在一個(gè)實(shí)施例中,所述執(zhí)行單元852a、852b是向量處理器陣列,所述向量處理器陣列具有用于執(zhí)行圖形和媒體操作的指令集。所述執(zhí)行單元852a、852b具有附接的l1高速緩存851,所述l1高速緩存對(duì)每個(gè)陣列是特定的或者在所述陣列之間被共享。所述高速緩存可被配置為數(shù)據(jù)高速緩存、指令高速緩存、或單個(gè)高速緩存,所述單個(gè)高速緩存被分區(qū)為包含不同分區(qū)中的數(shù)據(jù)和指令。
在一個(gè)實(shí)施例中,圖形流水線820包括用于執(zhí)行3d對(duì)象的硬件加速鑲嵌的鑲嵌部件。可編程的外殼著色器811配置鑲嵌操作??删幊逃蛑?17提供對(duì)鑲嵌輸出的后端評(píng)估。鑲嵌器813在外殼著色器811的方向上進(jìn)行操作并且包含專用邏輯,所述專用邏輯用于基于粗糙幾何模型來(lái)生成詳細(xì)的幾何對(duì)象集合,所述粗糙幾何模型作為輸入被提供至所述圖形流水線820。如果未使用鑲嵌,則所述鑲嵌部件811、813、817可以被旁路掉。
完整的幾何對(duì)象可以由幾何著色器819經(jīng)由被分派至所述執(zhí)行單元852a、852b的一個(gè)或多個(gè)線程被處理、或者可以直接行進(jìn)至剪裁器829。幾何著色器在整個(gè)幾何對(duì)象(而非頂點(diǎn)或者如所述圖形流水線的先前級(jí)中的頂點(diǎn)分片)上進(jìn)行操作。如果禁用所述鑲嵌,則所述幾何著色器819從所述頂點(diǎn)著色器807接收輸入。幾何著色器819可由幾何著色器程序編程以便在鑲嵌單元被禁用時(shí)執(zhí)行幾何鑲嵌。
在柵格化之前,頂點(diǎn)數(shù)據(jù)由剪裁器829來(lái)處理,所述剪裁器是固定功能剪裁器或者是具有剪裁和幾何著色器功能的可編程剪裁器。在一個(gè)實(shí)施例中,渲染輸出流水線870的柵格化器873分派像素著色器以將幾何對(duì)象轉(zhuǎn)換成其每像素表示。在一個(gè)實(shí)施例中,像素著色器邏輯包括在線程執(zhí)行邏輯850中。
圖形引擎具有互連總線、互連結(jié)構(gòu)、或某個(gè)其他的互連機(jī)制,所述互連機(jī)制允許數(shù)據(jù)和消息在所述圖形引擎的主要部件之中傳遞。在一個(gè)實(shí)施例中,執(zhí)行單元852a、852b和(多個(gè))相關(guān)聯(lián)的高速緩存851、紋理和媒體采樣器854、以及紋理/采樣器高速緩存858經(jīng)由數(shù)據(jù)端口856進(jìn)行互連,以便執(zhí)行存儲(chǔ)器訪問(wèn)并且與所述圖形引擎的渲染輸出流水線部件進(jìn)行通信。在一個(gè)實(shí)施例中,采樣器854、高速緩存851、858以及執(zhí)行單元852a、852b各自具有單獨(dú)的存儲(chǔ)器訪問(wèn)路徑。
在一個(gè)實(shí)施例中,渲染輸出流水線870包含柵格化器和深度測(cè)試部件873,所述柵格化器和深度測(cè)試部件將基于頂點(diǎn)的對(duì)象轉(zhuǎn)換為其相關(guān)聯(lián)的基于像素的表示。在一個(gè)實(shí)施例中,柵格化邏輯包括用于執(zhí)行固定功能三角形和線柵格化的窗口器/掩蔽器單元。相關(guān)聯(lián)的渲染和深度緩沖器高速緩存878、879在一個(gè)實(shí)施例中也是可用的。像素操作部件877對(duì)所述數(shù)據(jù)執(zhí)行基于像素的操作,盡管在一些實(shí)例中,與2d操作(例如,利用混合的位塊圖像轉(zhuǎn)移)相關(guān)聯(lián)的像素操作由所述2d引擎841來(lái)執(zhí)行、或者在顯示時(shí)間由所述顯示控制器843使用重疊顯示平面來(lái)代替。在一個(gè)實(shí)施例中,共享的l3高速緩存875可用于所有的圖形部件,從而允許在無(wú)需使用主系統(tǒng)存儲(chǔ)器的情況下共享數(shù)據(jù)。
圖形處理器媒體流水線830包括媒體引擎837和視頻前端834。在一個(gè)實(shí)施例中,視頻前端834從命令流送器803接收流水線命令。然而,在一個(gè)實(shí)施例中,媒體流水線830包括單獨(dú)的命令流送器。視頻前端834在將所述命令發(fā)送至所述媒體引擎837之前處理媒體命令。在一個(gè)實(shí)施例中,所述媒體引擎包括用于生成線程以用于經(jīng)由所述線程分派器831分派至所述線程執(zhí)行邏輯850的線程生成功能。
在一個(gè)實(shí)施例中,所述圖形引擎包括顯示引擎840。在一個(gè)實(shí)施例中,顯示引擎840在圖形處理器外部并經(jīng)由環(huán)形互連802、或某個(gè)其他互連總線或結(jié)果耦合至圖形處理器。顯示引擎840包括2d引擎841和顯示控制器843。顯示引擎840包含能夠獨(dú)立于3d流水線而運(yùn)行的專用邏輯。顯示控制器843與顯示設(shè)備(未示出)耦合,所述顯示設(shè)備可以是系統(tǒng)集成顯示設(shè)備(如在膝上型計(jì)算機(jī)中)、或者(經(jīng)由顯示設(shè)備連接器附接的)外部顯示設(shè)備。
圖形流水線820和媒體流水線830可配置成用于基于多個(gè)圖形和媒體編程接口執(zhí)行操作并且并非專用于任何一種應(yīng)用編程接口(api)。在一個(gè)實(shí)施例中,所述圖形處理器的驅(qū)動(dòng)器軟件將專用于特定圖形或媒體庫(kù)的api調(diào)度轉(zhuǎn)換成可由所述圖形處理器處理的命令。在各實(shí)施例中,為由科納斯(khronos)集團(tuán)所支持的開(kāi)放圖形庫(kù)(opengl)和開(kāi)放計(jì)算語(yǔ)言(opencl)、來(lái)自微軟公司的direct3d庫(kù)、或者在一個(gè)實(shí)施例中的opengl和d3d兩者提供支持。還可以為開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)(opencv)提供支持。如果可進(jìn)行從未來(lái)api的流水線到所述圖形處理器的流水線的映射,則具有兼容3d流水線的未來(lái)api也將受到支持。
圖11a是根據(jù)實(shí)施例的展示了圖形處理器命令格式的框圖,并且圖11b是根據(jù)實(shí)施例的展示了圖形處理器命令序列的框圖。圖11a中的實(shí)線框展示了通常包括在圖形命令中的部件,而虛線包括是可選的或者僅包括在所述圖形命令的子集中的部件。圖11a的示例性圖形處理器命令格式900包括用于標(biāo)識(shí)所述命令的目標(biāo)客戶端902的數(shù)據(jù)字段、命令操作碼(opcode)904、以及用于所述命令的相關(guān)數(shù)據(jù)906。子操作碼905和命令大小908也包括在一些命令中。
客戶端902限定了處理命令數(shù)據(jù)的圖形設(shè)備的客戶端單元。在一個(gè)實(shí)施例中,圖形處理器命令解析器檢查每個(gè)命令的客戶端字段以便調(diào)整對(duì)命令的進(jìn)一步處理并將命令數(shù)據(jù)路由至合適的客戶端單元。在一個(gè)實(shí)施例中,圖形處理器客戶端單元包括存儲(chǔ)器接口單元、渲染單元、2d單元、3d單元、和媒體單元。每個(gè)客戶端單元具有對(duì)命令進(jìn)行處理的相應(yīng)處理流水線。一旦命令被客戶端單元接收到,客戶端單元就讀取操作碼904以及子操作碼905(如果存在的話)從而確定要執(zhí)行的操作??蛻舳藛卧褂妹畹臄?shù)據(jù)字段906內(nèi)的信息來(lái)執(zhí)行所述命令。對(duì)于一些命令,期望明確的命令大小908來(lái)限定命令的大小。在一個(gè)實(shí)施例中,命令解析器基于命令操作碼自動(dòng)地確定命令中的至少一些命令的大小。在一個(gè)實(shí)施例中,命令經(jīng)由雙倍字長(zhǎng)的倍數(shù)被對(duì)齊。
圖11b中流程圖示出了樣本命令序列910。在一個(gè)實(shí)施例中,以圖形處理器的實(shí)施例為特征的數(shù)據(jù)處理系統(tǒng)的軟件或固件使用所示出的命令序列的版本來(lái)設(shè)置、執(zhí)行并終止圖形操作集合。出于示例性目的示出并描述了樣本命令序列,然而,實(shí)施例并不限于這些命令或者這個(gè)命令序列。而且,所述命令可以作為一批命令以命令序列被下發(fā),從而使得所述圖形處理器將以至少部分同時(shí)的方式處理所述命令序列。
樣本命令序列910可以以流水線轉(zhuǎn)儲(chǔ)清除(flush)命令912開(kāi)始以便使得任一活躍圖形流水線完成針對(duì)所述流水線的當(dāng)前未決命令。在一個(gè)實(shí)施例中,3d流水線922和媒體流水線924不同時(shí)運(yùn)行。所述流水線轉(zhuǎn)儲(chǔ)清除以使得所述活動(dòng)圖形流水線完成任何未決命令。響應(yīng)于流水線轉(zhuǎn)儲(chǔ)清除,用于圖形處理器的命令解析器將停止命令處理直到活躍繪畫(huà)引擎完成未決操作并且使得相關(guān)的讀高速緩存失效??蛇x地,渲染高速緩存中被標(biāo)記為‘臟’的任何數(shù)據(jù)可以被轉(zhuǎn)儲(chǔ)清除到存儲(chǔ)器中。流水線轉(zhuǎn)儲(chǔ)清除命令912可以用于流水線同步或者用在將圖形處理器置于低功率狀態(tài)之前。
當(dāng)命令序列需要圖形處理器在流水線之間明確地切換時(shí),使用流水線選則命令913。在下發(fā)流水線命令之前在執(zhí)行情境中僅需要一次流水線選定命令913,除非所述情境要下發(fā)針對(duì)兩條流水線的命令。在一個(gè)實(shí)施例中,在經(jīng)由所述流水線選擇命令913的流水線切換之前正好需要流水線轉(zhuǎn)儲(chǔ)清除命令912。
流水線控制命令914配置用于操作的圖形流水線并且用于對(duì)3d流水線922和媒體流水線924進(jìn)行編程。流水線控制命令914配置活躍流水線的流水線狀態(tài)。在一個(gè)實(shí)施例中,流水線控制命令914用于流水線同步并且用于在處理一批命令之前清除來(lái)自活躍流水線內(nèi)的一個(gè)或多個(gè)高速緩存存儲(chǔ)器中的數(shù)據(jù)。
返回緩沖器狀態(tài)命令916用于配置返回緩沖器的集合以供相應(yīng)的流水線寫(xiě)入數(shù)據(jù)。一些流水線操作需要分配、選擇、或配置一個(gè)或多個(gè)返回緩沖器,在處理過(guò)程中所述操作將中間數(shù)據(jù)寫(xiě)入所述一個(gè)或多個(gè)返回緩沖器中。圖形處理器還使用一個(gè)或多個(gè)返回緩沖器以便存儲(chǔ)輸出數(shù)據(jù)并且執(zhí)行跨線程通信。返回緩沖器狀態(tài)916包括選擇返回緩沖器的大小和數(shù)量以用于流水線操作集合。
命令序列中的剩余命令基于用于操作的活躍流水線而不同?;诹魉€判定920,所述命令序列被定制成用于以3d流水線狀態(tài)930開(kāi)始的所述3d流水線922、或者在媒體流水線狀態(tài)940處開(kāi)始的所述媒體流水線924。
針對(duì)所述3d流水線狀態(tài)930的命令包括針對(duì)頂點(diǎn)緩沖器狀態(tài)、頂點(diǎn)元素狀態(tài)、恒定色彩狀態(tài)、深度緩沖器狀態(tài)、以及在處理3d圖元命令之前待配置的其他狀態(tài)變量的3d狀態(tài)設(shè)置命令。至少部分地基于使用中的特定3dapi來(lái)確定這些命令的值。3d流水線狀態(tài)930命令還能夠選擇性地禁用或旁路掉特定流水線元件(如果將不使用那些元件的話)。
所述3d圖元932命令用于提交待由所述3d流水線處理的3d圖元。經(jīng)由3d圖元932命令被傳遞至圖形處理器的命令和相關(guān)聯(lián)的參數(shù)被轉(zhuǎn)發(fā)至所述圖形流水線中的頂點(diǎn)拾取函數(shù)中。所述頂點(diǎn)拾取函數(shù)使用3d圖元932命令數(shù)據(jù)來(lái)生成頂點(diǎn)數(shù)據(jù)結(jié)構(gòu)。所述頂點(diǎn)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在一個(gè)或多個(gè)返回緩沖器中。所述3d圖元932命令用于經(jīng)由頂點(diǎn)著色器對(duì)3d圖元執(zhí)行頂點(diǎn)操作。為了處理頂點(diǎn)著色器,所述3d流水線922將著色器執(zhí)行線程分派至圖形處理器執(zhí)行單元。
所述3d流水線922經(jīng)由執(zhí)行934命令或事件被觸發(fā)。在一個(gè)實(shí)施例中,寄存器寫(xiě)入觸發(fā)命令執(zhí)行。在一個(gè)實(shí)施例中,經(jīng)由所述命令序列中的‘go’或‘kick’命令來(lái)觸發(fā)執(zhí)行。在一個(gè)實(shí)施例中,使用流水線同步命令來(lái)觸發(fā)命令執(zhí)行以便通過(guò)所述圖形流水線轉(zhuǎn)儲(chǔ)清除所述命令序列。所述3d流水線將針對(duì)所述3d圖元來(lái)執(zhí)行幾何處理。一旦完成操作,則對(duì)所產(chǎn)生的幾何對(duì)象進(jìn)行柵格化并且所述像素引擎對(duì)所產(chǎn)生的像素進(jìn)行柵格化。針對(duì)那些操作,還可以包括用于控制像素著色和像素后端操作的附加命令。
當(dāng)執(zhí)行媒體操作時(shí),所述樣本命令序列910跟隨在媒體流水線924路徑之后。通常,針對(duì)媒體流水線924進(jìn)行編程的具體用途和方式取決于待執(zhí)行的媒體或計(jì)算操作。在媒體解碼過(guò)程中,具體的媒體解碼操作可以卸載至所述媒體流水線。所述媒體流水線還可以被旁路掉,并且可以使用由一個(gè)或多個(gè)通用處理核提供的資源來(lái)整體地或部分地執(zhí)行媒體解碼。在一個(gè)實(shí)施例中,所述媒體流水線還包括用于通用圖形處理器單元(gpgpu)操作的元件,其中,所述圖形處理器用于使用計(jì)算著色器程序來(lái)執(zhí)行simd向量運(yùn)算,所述計(jì)算著色器程序與渲染圖形圖元不是明確相關(guān)的。
以與所述3d流水線922相似的方式對(duì)媒體流水線924進(jìn)行配置。媒體流水線狀態(tài)命令940的集合在所述媒體對(duì)象命令942之前被分派或放置于命令隊(duì)列中。媒體流水線狀態(tài)命令940包括用于配置所述媒體流水線元件的數(shù)據(jù),所述媒體流水線元件將用于處理媒體對(duì)象。這包括用于在所述媒體流水線內(nèi)配置視頻解碼和視頻編碼邏輯的數(shù)據(jù),諸如編碼或解碼格式。媒體流水線狀態(tài)命令940還支持將一個(gè)或多個(gè)指針用于包含一批狀態(tài)設(shè)置的“間接”狀態(tài)元件。
媒體對(duì)象命令942將指針供應(yīng)至媒體對(duì)象以用于由所述媒體流水線進(jìn)行處理。所述媒體對(duì)象包括存儲(chǔ)器緩沖器,所述存儲(chǔ)器緩沖器包含待處理的視頻數(shù)據(jù)。在一個(gè)實(shí)施例中,在下發(fā)媒體對(duì)象命令942之前,所有的媒體流水線狀態(tài)必須是有效的。一旦流水線狀態(tài)被配置并且媒體對(duì)象命令942進(jìn)入排隊(duì),則經(jīng)由執(zhí)行934命令或等效的執(zhí)行事件(例如,寄存器寫(xiě)入)來(lái)觸發(fā)所述媒體流水線924。然后可以通過(guò)由所述3d流水線922或所述媒體流水線924提供的操作對(duì)來(lái)自所述媒體流水線924的輸出進(jìn)行后處理。在一個(gè)實(shí)施例中,以與媒體操作類似的方式來(lái)配置和執(zhí)行g(shù)pgpu操作。
圖12展示了根據(jù)實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件架構(gòu)。所述軟件架構(gòu)包括3d圖形應(yīng)用1010、操作系統(tǒng)1020、以及至少一個(gè)處理器1030。所述處理器1030包括圖形處理器1032以及一個(gè)或多個(gè)通用處理器核1034。所述圖形應(yīng)用1010和操作系統(tǒng)1020各自在所述數(shù)據(jù)處理系統(tǒng)的系統(tǒng)存儲(chǔ)器1050中執(zhí)行。
在一個(gè)實(shí)施例中,所述3d圖形應(yīng)用1010包含一個(gè)或多個(gè)著色器程序,所述一個(gè)或多個(gè)著色器程序包括著色器指令1012。著色器語(yǔ)言指令可以采用高級(jí)著色器語(yǔ)言,諸如高級(jí)著色器語(yǔ)言(hlsl)或opengl著色器語(yǔ)言(glsl)。所述應(yīng)用還包括可執(zhí)行指令1014,所述可執(zhí)行指令采用適合用于由所述通用處理器核1034執(zhí)行的機(jī)器語(yǔ)言。所述應(yīng)用還包括由頂點(diǎn)數(shù)據(jù)限定的圖形對(duì)象1016。
所述操作系統(tǒng)1020可以是來(lái)自微軟公司的
用戶模式圖形驅(qū)動(dòng)器1026可以包含用于將所述著色器指令1012變換成硬件專用的表示的后端著色器編譯器1027。當(dāng)在使用openglapi時(shí),將采用glsl高級(jí)語(yǔ)言的著色器指令1012傳遞至用戶模式圖形驅(qū)動(dòng)器1026以用于編譯。所述用戶模式圖形驅(qū)動(dòng)器使用操作系統(tǒng)內(nèi)核模式功能1028來(lái)與內(nèi)核模式圖形驅(qū)動(dòng)器1029進(jìn)行通信。所述內(nèi)核模式圖形驅(qū)動(dòng)器1029與所述圖形處理器1032進(jìn)行通信以便分派命令和指令。
在本文所描述的各操作或功能程度上,它們可以被描述或定義為硬件電路、軟件代碼、指令、配置和/或數(shù)據(jù)。所述內(nèi)容可以在硬件邏輯中被具體化、或者具體化為直接可執(zhí)行軟件(“對(duì)象”或“可執(zhí)行”形式)、源代碼、被設(shè)計(jì)成用于在圖形引擎上執(zhí)行的高級(jí)著色器代碼、或者針對(duì)具體處理器或圖形核的指令集中的低級(jí)組件語(yǔ)言代碼。本文中所描述的實(shí)施例的軟件內(nèi)容可以經(jīng)由一種其上存儲(chǔ)有內(nèi)容的制品或經(jīng)由一種操作通信接口經(jīng)由通信接口發(fā)送數(shù)據(jù)的方法被提供。
一種非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)可以使機(jī)器執(zhí)行所描述的功能或操作,并且包括存儲(chǔ)具有機(jī)器(例如,計(jì)算設(shè)備、電子系統(tǒng)等)可存取形式的信息的任何機(jī)制,如可記錄/不可記錄介質(zhì)(例如,只讀存儲(chǔ)器(rom)、隨機(jī)存取存儲(chǔ)器(ram)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存設(shè)備等)。一種通信接口包括與硬連線、無(wú)線、光等介質(zhì)中的任一者接口連接以彼此通信的任何機(jī)制,如,存儲(chǔ)器總線接口、處理器總線接口、互聯(lián)網(wǎng)連接、磁盤控制器等。通過(guò)提供配置參數(shù)或發(fā)送信號(hào)來(lái)對(duì)通信接口進(jìn)行配置以使通信接口準(zhǔn)備用于提供描述軟件內(nèi)容的數(shù)據(jù)信號(hào)。可以經(jīng)由發(fā)送到通信接口的一個(gè)或多個(gè)命令或信號(hào)來(lái)訪問(wèn)通信接口。
所描述的各部件可以是用于執(zhí)行所描述的操作或功能的裝置。本文所描述的每個(gè)部件包括軟件、硬件或它們的組合。部件可以被實(shí)現(xiàn)為軟件模塊、硬件模塊、專用硬件(例如,專用硬件、專用集成電路(asic)、數(shù)字信號(hào)處理器(dsp)等)、嵌入式控制器、硬連線電路等。除了本文所描述的內(nèi)容之外,在不脫離其范圍的情況下,可以對(duì)公開(kāi)的實(shí)施例和本發(fā)明的實(shí)現(xiàn)方式進(jìn)行各種修改。因此,本文的說(shuō)明和示例應(yīng)在說(shuō)明性的而非限制性意義上被解釋。本發(fā)明的范圍應(yīng)當(dāng)僅參照以下權(quán)利要求書(shū)來(lái)衡量。
下面的條款和/或示例涉及另外的實(shí)施例:
一個(gè)示例實(shí)施例可以是一種方法,所述方法包括:執(zhí)行僅位置著色;基于表示性坐標(biāo)將經(jīng)著色的圖元揀分為倉(cāng);以及基于倉(cāng)內(nèi)的圖元的深度對(duì)所述倉(cāng)內(nèi)的圖元進(jìn)行揀分。所述方法還可以包括:對(duì)所述經(jīng)著色的圖元進(jìn)行揀分包括對(duì)一組經(jīng)著色的圖元進(jìn)行揀分。所述方法還可以包括:形成由分塊內(nèi)的所有三角形組成的組。所述方法還可以包括:對(duì)所述經(jīng)著色的圖元進(jìn)行揀分包括將所述圖元裝入倉(cāng)內(nèi)。所述方法還可以包括:一次一個(gè)倉(cāng)地對(duì)經(jīng)揀分的圖元進(jìn)行柵格化。所述方法還可以包括:對(duì)按深度順序揀分的圖元進(jìn)行渲染。所述方法還可以包括:基于坐標(biāo)進(jìn)行揀分包括基于坐標(biāo)、深度、圖元尺寸和狀態(tài)進(jìn)行揀分。所述方法還可以包括:所述坐標(biāo)被計(jì)算為組中的三角形的平均頂點(diǎn)位置。所述方法還可以包括:計(jì)算所述坐標(biāo)包括:在三角形頂點(diǎn)上建立定界框以及使用所述框的中心的坐標(biāo)。所述方法還可以包括:通過(guò)對(duì)坐標(biāo)進(jìn)行量化以及隨后將坐標(biāo)轉(zhuǎn)換成沿空間填充曲線的整數(shù)位置,將所述坐標(biāo)映射至倉(cāng)。
另一示例實(shí)施例可以是至少一種或多種非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),存儲(chǔ)有指令,所述指令在被執(zhí)行時(shí)執(zhí)行包括以下各項(xiàng)的序列:執(zhí)行僅位置著色;基于表示性坐標(biāo)將經(jīng)著色的圖元揀分為倉(cāng);以及基于倉(cāng)內(nèi)的圖元的深度對(duì)所述倉(cāng)內(nèi)的圖元進(jìn)行揀分。所述介質(zhì)可以包括:對(duì)所述經(jīng)著色的圖元進(jìn)行揀分包括對(duì)一組經(jīng)著色的圖元進(jìn)行揀分。所述介質(zhì)可以包括:所述序列包括:形成由分塊內(nèi)的所有三角形組成的組。所述介質(zhì)可以包括:對(duì)所述經(jīng)著色的圖元進(jìn)行揀分包括將所述圖元裝入倉(cāng)內(nèi)。所述介質(zhì)可以包括:所述序列包括:一次一個(gè)倉(cāng)地對(duì)經(jīng)揀分的圖元進(jìn)行柵格化。所述介質(zhì)可以包括:所述序列包括:對(duì)按深度順序揀分的圖元進(jìn)行柵格化。所述介質(zhì)可以包括:基于坐標(biāo)進(jìn)行揀分包括基于坐標(biāo)、深度、圖元尺寸和狀態(tài)進(jìn)行揀分。所述介質(zhì)可以包括:所述坐標(biāo)被計(jì)算為組中的三角形的平均頂點(diǎn)位置。所述介質(zhì)可以包括:計(jì)算所述坐標(biāo)包括:在三角形頂點(diǎn)上建立定界框;以及使用所述框的中心的坐標(biāo)。所述介質(zhì)可以包括:所述序列包括:通過(guò)對(duì)坐標(biāo)進(jìn)行量化以及隨后將坐標(biāo)轉(zhuǎn)換成沿空間填充曲線的整數(shù)位置,將所述坐標(biāo)映射至倉(cāng)。
另一示例實(shí)施例中可以是一種裝置,包括:處理器,所述處理器用于執(zhí)行僅位置著色;基于表示性坐標(biāo)將經(jīng)著色的圖元揀分為倉(cāng);以及基于倉(cāng)內(nèi)的圖元的深度對(duì)所述倉(cāng)內(nèi)的圖元進(jìn)行揀分;以及存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備耦合至所述處理器。所述裝置可以包括:所述處理器用于揀分一組經(jīng)著色的圖元。所述裝置可以包括:所述處理器用于形成由分塊內(nèi)的所有三角形組成的組。所述裝置可以包括:所述處理器用于將所述圖元裝入倉(cāng)內(nèi)。所述裝置可以包括:所述處理器用于一次一個(gè)倉(cāng)地對(duì)經(jīng)揀分的圖元進(jìn)行柵格化。所述裝置可以包括:所述處理器用于對(duì)按深度順序揀分的圖元進(jìn)行柵格化。所述裝置可以包括:所述處理器用于基于坐標(biāo)、深度、圖元尺寸和狀態(tài)進(jìn)行揀分。所述裝置可以包括:所述處理器用于將所述坐標(biāo)計(jì)算為組中的三角形的平均頂點(diǎn)位置。所述裝置可以包括:所述處理器用于在三角形頂點(diǎn)上建立定界框以及使用所述框的中心的坐標(biāo)。所述裝置可以包括:所述處理器用于:通過(guò)對(duì)坐標(biāo)進(jìn)行量化以及隨后將坐標(biāo)轉(zhuǎn)換成沿空間填充曲線的整數(shù)位置,將所述坐標(biāo)映射至倉(cāng)。
本文描述的圖形處理技術(shù)可以采用各種硬件架構(gòu)來(lái)實(shí)現(xiàn)。例如,可以將圖形功能集成到芯片組內(nèi)。替代性地,可以使用分立的圖形處理器。作為又一實(shí)施例,圖形功能可以通過(guò)通用處理器(包括多核處理器)來(lái)實(shí)現(xiàn)。
本說(shuō)明書(shū)中通篇提到“一個(gè)實(shí)施例”或“實(shí)施例”表示結(jié)合所述實(shí)施例所述的具體特征、結(jié)構(gòu)或特性包含在本公開(kāi)所包含的至少一個(gè)實(shí)現(xiàn)中。因此,短語(yǔ)“一個(gè)實(shí)施例”或“在一實(shí)施例中”的出現(xiàn)不一定都表示同一個(gè)實(shí)施例。此外,除了所示的特定實(shí)施例以外,可以以其他適當(dāng)?shù)男问絹?lái)實(shí)現(xiàn)所述特定特征、結(jié)構(gòu)或特性,并且所有這樣的形式都可以涵蓋在本申請(qǐng)的權(quán)利要求內(nèi)。
盡管有限數(shù)量的實(shí)施例已經(jīng)被描述,但是本領(lǐng)域技術(shù)人員將理解大量的其修改和變型。所附權(quán)利要求旨在將所有這種修改和變型涵蓋為落入本公開(kāi)的真實(shí)的精神和范圍內(nèi)。