專利名稱:使用具有圖形上下文管理器的圖形渲染引擎的裝置、方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及渲染多個圖像。更具體地說,本發(fā)明涉及在一個或多個顯示設(shè)備上渲染多個圖像。
背景技術(shù):
圖像渲染是將基于對象的高級描述轉(zhuǎn)換成在某種顯示設(shè)備上顯示的圖形圖像。例如,在將三維物體或場景的數(shù)學(xué)模型轉(zhuǎn)換成位像的過程中,將發(fā)生圖像渲染的操作。圖像渲染的另一個實例是將HTML文件轉(zhuǎn)換成在計算機(jī)監(jiān)視器上顯示的圖像。一般地,被稱為圖形渲染引擎的硬件設(shè)備會加快這些圖形處理任務(wù)。
當(dāng)在因特網(wǎng)上沖浪時,常??梢栽谟嬎銠C(jī)監(jiān)視器上看到多個圖像。例如,當(dāng)在因特網(wǎng)上沖浪時,一個網(wǎng)頁和疊加在該網(wǎng)頁上的兩個網(wǎng)幅廣告可以被顯示在一個計算機(jī)監(jiān)視器上。圖形渲染引擎一般渲染與諸如網(wǎng)頁的第一圖像相關(guān)的全部指令。在處理完用于第一圖像的指令后,圖形渲染引擎開始處理與諸如兩個網(wǎng)幅廣告之一的第二圖像相關(guān)的指令。但是一般來說,在開始處理與第二圖像相關(guān)的指令之前,圖形渲染引擎必須完成對與第一圖像相關(guān)的指令的渲染。因此,如果圖形渲染引擎處理指令比圖形應(yīng)用程序生成指令快,則在此期間圖形渲染引擎保持空閑。此外,如果圖像指令要求一個現(xiàn)實世界事件在執(zhí)行下一個指令之前發(fā)生,則在此期間圖形渲染引擎也保持空閑。一般地,圖形渲染引擎順序地服務(wù)指令流。因此,在圖形渲染引擎開始處理與第二指令流相關(guān)的指令之前,將處理與第一指令流相關(guān)的指令。
另一個實例可以是在三維環(huán)境中對兩個獨立圖像的渲染。一個顯示屏顯示第一窗口,其包含3D圖像;和第二窗口,其包含控制2D圖形用戶接口的顯示圖像。眾所周知,在現(xiàn)有技術(shù)中,在圖形渲染引擎開始處理第二窗口中的圖像的指令之前,處理第一窗口中的圖像的指令。
現(xiàn)有技術(shù)已經(jīng)將多個圖像顯示在多個設(shè)備上。一般地,存在兩個或更多個圖形渲染引擎來處理與多個圖像相關(guān)的指令。每個圖形渲染引擎服務(wù)于一個顯示設(shè)備。但是實際上,與一個圖形渲染引擎相比,多個圖形渲染引擎占據(jù)更多的物理空間,耗用更大的功率并且生產(chǎn)的成本更高。因此,減少圖形渲染引擎的數(shù)量是有利的。此外,在現(xiàn)有技術(shù)中嘗試用兩個或更多個圖形渲染引擎在同一個顯示屏上渲染不同的圖像,這種嘗試遇到了嚴(yán)重的仲裁沖突。
通過一組渲染狀態(tài)變量來控制每一個圖形渲染引擎。這些狀態(tài)變量被統(tǒng)稱為渲染上下文。渲染狀態(tài)變量控制圖形渲染過程的特定方面,如對象顏色、材質(zhì)(texture)、材質(zhì)應(yīng)用模式等。
當(dāng)渲染圖像時,對于每個所述圖像都存在特定的渲染上下文?,F(xiàn)有技術(shù)使用低效率的方法來設(shè)置與圖像相關(guān)的渲染上下文。圖形驅(qū)動程序接收來自應(yīng)用程序的指令,并將包含指令的指令流發(fā)送至圖形渲染引擎,其中所述的指令包括當(dāng)前與圖像相關(guān)的狀態(tài)變量設(shè)置。圖形渲染引擎在執(zhí)行其它渲染指令之前,處理這些渲染上下文指令。當(dāng)圖形渲染引擎在處理與第一圖像相關(guān)的指令和處理與第二圖像相關(guān)的指令之間切換時,圖形應(yīng)用程序需要發(fā)送渲染上下文指令,并且圖形渲染引擎需要處理這些渲染上下文指令。
以前,僅僅通過軟件生成的指令流來修改與圖形渲染引擎相關(guān)的渲染上下文,而不能從主CPU直接訪問渲染上下文。因此從諸如當(dāng)前渲染上下文的第一渲染上下文變換到諸如新渲染上下文的第二渲染上下文,需要應(yīng)用軟件生成指令來指定第二渲染上下文的狀態(tài)變量設(shè)置。假設(shè)不能讀取第一渲染上下文,則需要應(yīng)用程序保持第一渲染上下文的鏡像拷貝,以便在稍后的某個時刻恢復(fù)第一渲染上下文。
本發(fā)明參考下列附圖,其中圖1圖示了圖形設(shè)備的一個實施例的方框圖,其中該圖形設(shè)備使用單個圖形渲染引擎渲染一個或多個圖像,以將此一個或多個圖像顯示在多個顯示設(shè)備上;圖2圖示了計算機(jī)系統(tǒng)的一個實施例的方框圖,其中該計算機(jī)系統(tǒng)包含中央處理單元、高速緩存、存儲器、顯示設(shè)備和圖形設(shè)備,該圖形設(shè)備具有指令傳輸器的一個實施例和圖形上下文管理器的一個實施例;圖3圖示了環(huán)形緩存區(qū)的一個實施例的方框圖;圖4圖示了時間分配器的一個實施例的方框圖,該時間分配器在每個正被渲染的獨立圖像之間分配對圖形渲染引擎的使用;圖5和圖6圖示了使用單個圖形渲染引擎渲染在多個顯示設(shè)備上的多個圖像的過程的一個實施例的流程圖。
雖然在附圖中通過示例的方式并在下面的詳細(xì)描述中示出了本發(fā)明的具體實施例,但是本發(fā)明可以具有各種修改和替代形式。應(yīng)當(dāng)理解本發(fā)明不限于所公開的具體形式,相反地,本發(fā)明覆蓋落入本發(fā)明的精神和范圍內(nèi)的所有修改、等同和替換。
具體實施例方式
在下面的描述中闡述了很多諸如具體指令、指定部件、連接等的實例的具體細(xì)節(jié),以便于充分理解本發(fā)明。但是,沒有這些具體細(xì)節(jié)也可以實施本發(fā)明,這對于本領(lǐng)域的技術(shù)人員來說是很明顯的。在另外一些例子里,沒有對公知的部件或方法進(jìn)行詳細(xì)描述而是示出在方框圖中,以避免不必要地使本發(fā)明不清楚。因此,所闡述的具體細(xì)節(jié)僅僅是示例性的。具體細(xì)節(jié)可以變化,并仍被認(rèn)為落入本發(fā)明的精神和范圍。術(shù)語“耦合的”被定義為表示直接連接的或間接連接的。
通常,圖形渲染引擎同時渲染在多個顯示設(shè)備上顯示的多個獨立的圖像。指令傳輸器將用于兩個或更多個獨立圖像的指令傳送到圖形渲染引擎。時間分配器在每個正在被渲染的獨立圖像之間仲裁對圖形渲染引擎的同時使用。圖形上下文管理器將與第一獨立圖像相關(guān)的渲染上下文從既定存儲單元恢復(fù)至圖形渲染引擎。
圖1圖示了圖形設(shè)備的一個實施例的方框圖,其中該圖形設(shè)備使用圖形渲染引擎渲染一個或多個圖像,以將此一個或多個圖像顯示在多個顯示設(shè)備上。參考圖1,圖形設(shè)備100包含圖形渲染引擎102、一個或多個指令傳輸器104、上下文管理器106、時間分配器108以及諸如第一顯示設(shè)備110和第二顯示設(shè)備112的一個或多個顯示設(shè)備。在一個實施例中,圖形設(shè)備100包含單個圖形渲染引擎102。
圖形渲染引擎102生成將被顯示在單個顯示設(shè)備或多個顯示設(shè)備上的獨立圖像。因此,舉例來說,兩個獨立圖像可以被顯示在同一個顯示設(shè)備上,或者兩個獨立的圖像可以被分別顯示在單獨的顯示設(shè)備上。用于每個獨立圖像的指令,可以來自各自的指令流114,或來自包含來自多個圖形應(yīng)用程序的指令的一個指令流114。
通過瀏覽應(yīng)用程序來顯示帶有網(wǎng)幅廣告的網(wǎng)頁,或順序地渲染與二維圖像相關(guān)的第一指令流然后渲染與三維圖像相關(guān)的第二指令流,這是現(xiàn)有技術(shù)。與該現(xiàn)有技術(shù)相比,每一個獨立的圖像可以被同時渲染。通常,現(xiàn)有技術(shù)完整地渲染與第一窗口中包含的諸如網(wǎng)幅廣告的第一圖像相關(guān)的圖像指令之后,再完整地渲染用于第二窗口中包含的諸如網(wǎng)頁的第二圖像的指令。一般來說,在現(xiàn)有技術(shù)中,圖形渲染引擎不同時對用于各個獨立圖像的指令進(jìn)行操作。
時間分配器108在正被渲染的各個獨立圖像之間仲裁圖形渲染引擎102的使用。圖形上下文管理器106將與每個正被渲染的獨立圖像有關(guān)的上下文存儲在存儲設(shè)備中(沒有示出)。在處理器上運行的或在運行在處理器上的瀏覽器上運行的各種圖形應(yīng)用程序,將圖像渲染指令插入指令流114。指令傳輸器104將指令從指令流114傳送至圖形渲染引擎102以進(jìn)行處理。
圖形渲染引擎102與圖形上下文管理器106、時間分配器108以及一個或多個指令傳輸器104一起工作,以便高效使用圖形渲染引擎102。將指令提供給指令流114的每個圖形應(yīng)用程序,可以以不同的速率生成圖像和運行。舉例來說,與字處理應(yīng)用程序相比,流直播視頻應(yīng)用程序常常以快得多的圖像生成速率運行。圖形渲染引擎102可以同時渲染與兩個或更多個圖像相關(guān)的指令,以最小化圖形渲染引擎102保持空閑的時間。此外在現(xiàn)有技術(shù)中,如果用于第一圖像的指令要求現(xiàn)實世界事件在執(zhí)行下一個指令之前發(fā)生,則圖形渲染引擎102在此期間保持空閑。但是,圖形渲染引擎102可以同時渲染來自多個圖像的指令,以減少圖形渲染引擎102的空閑時間。
圖形渲染引擎102可以保存與第一圖像相關(guān)的當(dāng)前渲染上下文,并從既定的存儲單元(沒有示出)加載與第二圖像相關(guān)的新渲染上下文。在一個實施例中,用于存儲渲染上下文的既定存儲單元可以被稱為邏輯上下文(沒有示出)。當(dāng)被要求切換渲染上下文時,圖形渲染設(shè)備100可以(1)將來自渲染狀態(tài)變量的當(dāng)前渲染上下文寫入存儲器中的第一既定存儲單元;(2)從存儲器中的第二既定存儲單元讀取新渲染上下文;以及(3)使用來自新渲染上下文的信息加載渲染狀態(tài)變量。在一個實施例中,上下文管理器106中的既定存儲單元與正在生成獨立圖像的每一個圖形應(yīng)用程序相關(guān)。在一個實施例中,單獨的指令傳輸器104與每個顯示設(shè)備110、112相關(guān)聯(lián),以存儲將為特定顯示設(shè)備110、112處理的一組獨立的圖像渲染指令。
圖2圖示了計算機(jī)系統(tǒng)的一個實施例的方框圖,其中該計算機(jī)系統(tǒng)包含中央處理單元(CPU)、高速緩存、存儲器、顯示設(shè)備和圖形設(shè)備,該圖形設(shè)備具有指令傳輸器的一個實施例和圖形上下文管理器的一個實施例。圖形設(shè)備200包含多個環(huán)形緩沖寄存器204、206,環(huán)形緩沖直接存儲器訪問引擎(RB DMA ENG)212,圖形渲染引擎214以及上下文標(biāo)識寄存器(CID)222、224。多個環(huán)形緩存區(qū)208、210,多個既定存儲單元216、218、220和多個顯示設(shè)備228、230與圖形設(shè)備200相關(guān)聯(lián)。在一個實施例中,指令傳輸器包括多個環(huán)形緩沖寄存器204、206,多個環(huán)形緩存區(qū)208、210以及直接存儲器訪問引擎212。在一個實施例中,上下文管理器包括上下文標(biāo)識寄存器(CID)222、224,現(xiàn)用上下文標(biāo)識寄存器(現(xiàn)用CID)226,以及多個既定存儲單元216、218、220。
圖3圖示了環(huán)形緩存區(qū)的一個實施例的方框圖。如上面所說明的,指令傳輸器的一個實施例包括一個或多個環(huán)形緩沖寄存器310和一個或多個環(huán)形緩存區(qū)300,通過該指令傳輸器可以將軟件生成的指令傳至圖形渲染引擎(沒有示出)。環(huán)形緩存區(qū)300保存來自圖形應(yīng)用程序的實際的圖像渲染指令(沒有示出)。環(huán)形緩沖寄存器310限定環(huán)形緩存區(qū)300的起始和長度,并將一個頭304和一個尾302這兩個“偏移”包含在環(huán)形緩存區(qū)300中。尾偏移302通知圖形渲染引擎必須執(zhí)行的有效指令的存在。隨著這些指令被分析和執(zhí)行,圖形渲染引擎使頭偏移304增量。指令可以從環(huán)形緩存區(qū)300的底部繞回到環(huán)形緩存區(qū)300的頂部。在一個實施例中,環(huán)形緩存區(qū)300存儲指向批緩沖(batch buffer)(沒有示出)的單元的指令。批緩沖包含圖像渲染指令的單獨列表,所述圖像渲染指令可以被存儲在分立的存儲區(qū)中以提供額外的指令存儲容量。在一個實施例中,批緩沖存儲可以從指令流調(diào)用的獨立的指令序列。
往回參考圖2,每一個環(huán)形緩沖寄存器204、206可以在該寄存器中具有多個字段。包含在諸如第一環(huán)形緩沖寄存器204的環(huán)形緩沖寄存器的一個實施例中的字段可以是環(huán)形緩沖有效字段(V)232、起始地址字段(S)234、緩沖長度字段(L)235、頭偏移字段(H)236、頭環(huán)繞計數(shù)字段(W)233、尾偏移字段(T)237、自動報告頭(report head)使能字段(R)238、時間片字段(TS)239和其他類似的字段。
環(huán)形緩沖有效字段232控制此特定的環(huán)形緩沖寄存器是否被包括在對共用圖形渲染引擎214的仲裁進(jìn)程中。起始地址字段234指向包含環(huán)形緩存區(qū)208、210的連續(xù)存儲區(qū)的起始。環(huán)形緩存區(qū)208、210位于系統(tǒng)存儲器232或?qū)S么鎯ζ髦?。緩沖長度字段235指定所分配的環(huán)形緩存區(qū)208、210的字節(jié)大小。在一個實施例中,環(huán)形緩沖長度字段235限定任何一次可以發(fā)送至環(huán)形緩存區(qū)208、210中的最大數(shù)據(jù)量。在一個實施例中,環(huán)形緩存區(qū)208、210可以包含圖像渲染指令和指向一個或多個批緩沖240的指針,從而獲得幾乎無限的存儲區(qū)來容納指令。
頭偏移字段236指向圖形渲染引擎214將分析的下一個指令的起始地址234的存儲器偏移量。例如,頭偏移236可以指向上一個被分析的指令之后的一個存儲器單元。隨著指令的分析,圖形渲染引擎214更新頭偏移字段236。一旦頭偏移236達(dá)到尾偏移237的值,就是說偏移量相等,則只要還保持此條件,圖形渲染引擎214就認(rèn)為環(huán)形緩存區(qū)208、210是空的并將相應(yīng)的環(huán)形緩沖寄存器204、206從對共用圖形渲染引擎214的仲裁進(jìn)程中去除。因此,存在一個指示,即用于此特定顯示設(shè)備的指令流應(yīng)該從中央處理器中去除。此外,在環(huán)形緩沖寄存器204、206中還包含自動報告頭使能字段,該字段使得頭指針值和頭環(huán)繞計數(shù)字段233被寫至可高速緩存的存儲器中以獲得更高效的流控制算法。例如,在輪詢頭偏移236以確定進(jìn)度期間的流控制算法。
環(huán)形緩存區(qū)208、210可以將指令從存儲區(qū)的終點折返回存儲區(qū)的起點。每次頭偏移236折返回到環(huán)形緩存區(qū)208、210的起始地址234,圖形渲染引擎214對頭環(huán)繞計數(shù)字段233進(jìn)行增量。在一個實施例中,頭環(huán)繞計數(shù)字段233被包含于“報告頭”進(jìn)程中所寫的雙字中。圖形設(shè)備200可以使用頭環(huán)繞計數(shù)字段233來跟蹤指令分析進(jìn)度,好像環(huán)形緩存區(qū)208、210具有比實際物理緩沖的大小大得多的“虛擬”長度。
尾偏移字段237指向環(huán)形緩存區(qū)208、210中從起始地址234偏移特定距離的單元。尾偏移字段237可以指向指令數(shù)據(jù)的下一個存儲器單元,圖形應(yīng)用軟件可以用該存儲器單元存儲稍后將執(zhí)行的另外的圖像渲染指令。例如,尾偏移字段237指向被發(fā)送至圖形渲染引擎214執(zhí)行的上一個指令之后的一個存儲器單元232。所發(fā)送的指令可以從環(huán)形緩存區(qū)208、210的終點折返回頂部,在此情況下所寫的尾偏移237將小于先前的值。環(huán)形緩存區(qū)208、210的“空”條件可以被定義為“頭偏移字段236等于尾偏移字段237”。
自動報告頭使能字段238允許圖形應(yīng)用軟件或操作軟件請求將頭偏移字段236和頭環(huán)繞計數(shù)字段233的內(nèi)容周期性地寫入CPU被監(jiān)聽的特定系統(tǒng)存儲單元中。自動報告可以被編程為每次當(dāng)頭偏移字段236前進(jìn)所編程的量時發(fā)生。此自動報告機(jī)制允許軟件使用頭偏移字段236和頭環(huán)繞計數(shù)字段233來確定環(huán)形緩沖中自由空間的大小。因此,頭偏移字段236可以被周期性地報告給系統(tǒng)存儲器以自動提供最新的頭偏移字段236的值,而不必通過指令來明確地獲取頭指針的值。
每一個顯示設(shè)備228、230可以具有與此單個顯示設(shè)備相關(guān)的單獨的指令傳輸器。如圖2所示,第一環(huán)形緩沖寄存器204和第一環(huán)形緩存區(qū)208與第一顯示設(shè)備228相關(guān)聯(lián)。第二環(huán)形緩沖寄存器206和第二環(huán)形緩存區(qū)210與第二顯示設(shè)備230相關(guān)聯(lián)。因此,在此實施例中,第一環(huán)形緩沖寄存器204和第一環(huán)形緩存區(qū)208提供用于渲染將在第一顯示設(shè)備228上顯示的獨立圖像的指令。在一個實施例中,第一環(huán)形緩沖寄存器204和第一環(huán)形緩存區(qū)208可以與第二顯示設(shè)備230相關(guān)聯(lián)。
多個指令傳輸器允許給每個指令傳輸器指定不同的優(yōu)先級。例如,低優(yōu)先級指令傳輸器可以用于可中斷的背景渲染任務(wù)。同樣地,更高優(yōu)先級的指令傳輸器可以被用于服務(wù)諸如視頻幀捕獲的異步事件。另外,通過分配第一指令傳輸器用于服務(wù)諸如第一顯示設(shè)備228的一個顯示設(shè)備,以及分配第二指令傳輸器用于服務(wù)諸如第二顯示設(shè)備230的另一個顯示設(shè)備,圖形設(shè)備200可以支持每個顯示設(shè)備的單獨的指令流。而且,圖形設(shè)備200可以支持每個顯示設(shè)備的單獨控制的指令流。
如上面說明的,每個指令傳輸器可以包括直接存儲器訪問引擎212。直接存儲器訪問引擎212從特定的指令傳輸器中提取指令,并將這些指令傳送到圖形渲染引擎214。
圖形渲染引擎214通過直接存儲器訪問引擎212從指令傳輸器中讀取圖像指令,并執(zhí)行這些圖像指令。圖形渲染引擎214通過環(huán)形緩沖寄存器204、206中頭偏移字段236和尾偏移字段237之間的差異來檢測環(huán)形緩存區(qū)208、210內(nèi)指令的存在。圖形渲染引擎214解釋和解碼指令的共同的“報頭”(header)字段,以確定指令包含什么信息并因此如何進(jìn)一步執(zhí)行指令。指令的這種解釋和解碼通常被稱為分析。
在一個實施例中,圖形渲染引擎214解碼來自指令流242的特定指令,以找出指令包含什么信息(例如,應(yīng)用的狀態(tài)變量改變246或待渲染的原語248)。接著圖形渲染引擎214相應(yīng)地執(zhí)行指令。狀態(tài)變量改變指令246的執(zhí)行導(dǎo)致當(dāng)前渲染上下文的特定改變。原語指令248的執(zhí)行導(dǎo)致存儲器256、258中適當(dāng)圖像信息的修改(就是說,圖像被渲染)。接著圖形渲染引擎214將諸如第一顯示圖像256和第二顯示圖像258的圖像信息存儲在對應(yīng)于每一個顯示設(shè)備228、230的存儲單元中。在一個實施例中,用于第一顯示圖像256的信息和用于第二顯示圖像258的信息被存儲在專用于第一顯示設(shè)備228和第二顯示設(shè)備230的本地存儲器中。在一個實施例中,用于第一顯示圖像256的指令和用于第二顯示圖像258的指令被存儲在系統(tǒng)存儲器232中。圖形渲染引擎214周期性地從存儲器讀已被渲染的圖像信息,并將已被渲染的圖像信息提供給相關(guān)的顯示設(shè)備。接著諸如第一顯示設(shè)備228的顯示設(shè)備基于此信息將實際的圖像顯現(xiàn)在顯示器上。
在一個實施例中,圖形應(yīng)用程序?qū)⒅噶钐峁┑街噶盍?42中。如上面說明的,這些指令可以被存儲在常常與特定的顯示設(shè)備228、230相關(guān)聯(lián)的環(huán)形緩存區(qū)208、210中。在一個實施例中,在指令流342沖找到的一些類型的指令可以是狀態(tài)變量改變246、原語248和設(shè)置上下文命令250、252。原語指令248將要繪制的形狀和這些形狀的位置和尺寸屬性指示給圖形渲染引擎214。狀態(tài)變量改變指令246指示圖形渲染引擎214在渲染圖像時修改存儲在硬件圖形上下文電路244中的一組渲染狀態(tài)變量的當(dāng)前值。在一個實施例中,設(shè)置上下文命令(Set CXT#)250、252可以使圖形渲染引擎214將當(dāng)前的渲染上下文保存到諸如第一既定存儲單元216的既定存儲單元中,并且從諸如第二既定存儲單元218的新的既定存儲單元中恢復(fù)新的渲染上下文。
諸如第一既定存儲單元216的每一個既定存儲單元存儲正在由圖形渲染引擎214渲染的圖像的渲染上下文。同樣地,每一個既定存儲單元216、218、220都可以存儲在渲染相關(guān)的獨立圖像時將使用的渲染狀態(tài)變量的設(shè)置。在一個實施例中,多個既定存儲單元216、218、220的存在允許圖形渲染引擎214跟蹤與每一個正被渲染的圖像相關(guān)的渲染上下文。上下文管理器的一個實施例包含多個既定存儲單元216、218、220和上下文標(biāo)識寄存器222、224、226,以管理對多個圖像的同時渲染。上下文管理器的一個實施例與圖形顯示控制器電路(GDC)270配合,來支持在多個顯示設(shè)備228、230上顯示圖像,以及支持在諸如第一顯示設(shè)備228的同一個顯示設(shè)備上顯示多個圖像。
硬件圖形上下文電路244中多個硬件狀態(tài)變量的設(shè)置,控制圖形設(shè)備200中諸如渲染的圖形操作。所述狀態(tài)變量可以包括全局狀態(tài)變量和上下文狀態(tài)變量。全局狀態(tài)變量(例如,邏輯地址映射資源等)對于所有上下文都是通用的,并因此被認(rèn)為處在任何特定的渲染上下文的范圍之外。但是,每一個與特定的圖形應(yīng)用程序相關(guān)的渲染上下文包含一組單獨的上下文狀態(tài)變量。在一個實施例中,這些與特定的圖形應(yīng)用程序相關(guān)的渲染上下文可以被存儲在現(xiàn)用片上(on-chip)存儲器的既定存儲單元中,或存儲在系統(tǒng)存儲器232中的多個既定存儲單元216、218、220中。
如上面所說明的,多個既定存儲單元216、218、220,通過將與正由圖形渲染引擎渲染的獨立圖像相關(guān)的渲染上下文存儲在存儲器232中并從存儲器232恢復(fù)該上下文,來支持圖形渲染引擎214。在一個實施例中,諸如設(shè)置上下文-A0 250的來自指令流242的第二設(shè)置上下文指令,命令圖形渲染引擎214將用于正被渲染圖像的當(dāng)前渲染上下文發(fā)送到諸如第一既定存儲單元216的一個既定存儲單元中以進(jìn)行存儲。與此同時,與生成第二圖像的圖形應(yīng)用程序相關(guān)的第二既定存儲單元218,從圖形渲染引擎214接收信號,以恢復(fù)與正由圖形渲染引擎214同時渲染的第二圖像相關(guān)的渲染上下文。在一個實施例中,在所述設(shè)備上添加上下文高速緩存260減小了交換上下文所需的時間和存儲器帶寬。
上下文管理器還包含上下文標(biāo)識寄存器(CID)222、224,以及現(xiàn)用上下文標(biāo)識寄存器226。上下文標(biāo)識寄存器222、224與特定的環(huán)形緩沖寄存器204、206相關(guān)聯(lián),并因此與特定的顯示圖像存儲單元256、258相關(guān)聯(lián)。
在一個實施例中,現(xiàn)用上下文標(biāo)識寄存器226跟蹤當(dāng)前現(xiàn)用的環(huán)形緩沖寄存器204、206內(nèi)上下文標(biāo)識寄存器222、224的值。諸如第一上下文標(biāo)識寄存器222的被跟蹤的上下文標(biāo)識寄存器,確立哪一個特定的既定存儲單元216、218、220與當(dāng)前正由圖形渲染引擎214渲染的圖像相關(guān)聯(lián)。
在一個實施例中,上下文標(biāo)識寄存器222、224中的每一個都包含既定存儲單元地址和一組上下文限定位。該上下文限定位控制當(dāng)上下文切換時,渲染上下文中的某些部分是否必須或不必被保存/恢復(fù)。在一個實施例中,上下文標(biāo)識寄存器222、224中的每一個實現(xiàn)諸如“禁止保存材質(zhì)調(diào)色板”上下文限定位和“禁止恢復(fù)材質(zhì)調(diào)色板”上下文限定位的上下文限定位。在一個實施例中,這些上下文限定位幫助在二維和三維圖像之間的上下文交換,其中三維圖像可能要求維持(就是說,作為渲染上下文的一部分保存和恢復(fù))當(dāng)前的材質(zhì)調(diào)色板,而二維圖像則可能沒有這種要求。
通過對應(yīng)的上下文標(biāo)識寄存器222、224的既定存儲單元的地址,來引用既定存儲單元216、218、220。既定存儲單元216、218、220的實際大小為在上下文切換期間被存儲/恢復(fù)的數(shù)據(jù)的量,并且該大小取決于該渲染上下文是否包含材質(zhì)調(diào)色板。在一個實施例中,上下文標(biāo)識寄存器222、224可以包含兩個額外的寄存器,以指定存儲器232中既定存儲單元216、218、220各自的大小。在一個實施例中,在處理來自相應(yīng)環(huán)形緩存區(qū)208、210中存儲的指令流242中的“設(shè)置上下文”指令250、252期間,使特定的上下文標(biāo)識寄存器222、224成為現(xiàn)用寄存器。在一個實施例中,所述設(shè)置上下文指令250、252提供將被加載到上下文標(biāo)識寄存器222、224中的新的上下文標(biāo)識值(本地上下文地址+調(diào)色板保存禁止位)。設(shè)置上下文指令250、252還包含恢復(fù)防止位,用于選擇性地防止所述新上下文的恢復(fù)。在一個實施例中,在上下文初始化期間可以使用恢復(fù)防止位,以避免從存儲器232加載未被初始化的上下文。
現(xiàn)用上下文標(biāo)識寄存器226包含諸如第一環(huán)形緩沖寄存器204的現(xiàn)用環(huán)形緩沖寄存器的上下文標(biāo)識的值。作為執(zhí)行設(shè)置上下文指令250、252的一部分,將比較來自現(xiàn)用上下文標(biāo)識寄存器226和設(shè)置上下文指令的既定存儲單元地址字段。如果它們不同或現(xiàn)用上下文標(biāo)識寄存器226沒有被初始化,則發(fā)生上下文切換操作。
在一個實施例中,在上下文切換操作期間,如果沒有設(shè)置恢復(fù)防止指令字段,則可以進(jìn)行上下文恢復(fù)操作。在此,諸如第一既定存儲單元216的既定存儲單元的地址值被用來加載現(xiàn)用上下文標(biāo)識寄存器226。注意,所述指令的上下文限定字段可以進(jìn)一步制約渲染上下文某些部分的恢復(fù)。例如,材質(zhì)調(diào)色板可以被恢復(fù)或不可以被恢復(fù)。
HW GFX CXT 244導(dǎo)致從適當(dāng)?shù)募榷ù鎯卧虞d新的上下文,以及用來自設(shè)置上下文指令250、252的值加載現(xiàn)用的上下文標(biāo)識寄存器。此時,相應(yīng)的環(huán)形緩沖寄存器204、206和環(huán)形緩存區(qū)208、210已將所述現(xiàn)用的上下文切換至新的既定存儲單元216、218、220。
如前面所說明的,每一個圖形應(yīng)用程序可以以不同的速率生成圖像指令。同樣的是,每一個顯示設(shè)備228、230可以以不同的速率刷新顯示和與其相關(guān)的圖像。在一個實施例中,上下文管理器和指令傳輸器支持不同指令流之間的無縫切換,不同顯示設(shè)備228、252之間的無縫切換,以及同一指令流242中與不同的圖形應(yīng)用程序相關(guān)的渲染上下文之間的無縫切換。
圖4圖示了時間分配器的一個實施例的方框圖,該時間分配器用于在每一個正被渲染的獨立圖像之間分配對圖形渲染引擎的使用。在一個實施例中,時間分配器400包括仲裁與切換模塊410、計時寄存器412、單位寄存器414、單位時間計數(shù)器416以及時間片計數(shù)器418。在一個實施例中,時間分配器400提供耗用時間標(biāo)準(zhǔn)和公平使用標(biāo)準(zhǔn),以分配對所述單個圖形渲染引擎411的使用。在一個實施例中,時間分配器400可以在多個顯示設(shè)備(沒有示出),每一個都具有自己的指令流413的多個圖形應(yīng)用程序以及單個指令流413中的多個圖形應(yīng)用程序之間分配對圖形渲染引擎411的使用以渲染若干獨立的圖像。
每一個環(huán)形緩沖寄存器可以是時間分片的,諸如第一環(huán)形緩沖寄存器402和第二環(huán)形緩沖寄存器404;或所述環(huán)形緩沖寄存器可以是非時間分片的,諸如第三環(huán)形緩沖寄存器406。如在后面將說明的,每一個非時間分片的寄存器可以用于諸如實時視頻的高優(yōu)先級圖形圖像,以暫時獨占對圖形渲染引擎411的使用。
每一個時間分片的環(huán)形緩沖寄存器402、404具有與其相關(guān)的時間片(TIME_SLICE)寄存器420、422,所述時間片寄存器420、422指定在指示應(yīng)當(dāng)對另一個時間分片的環(huán)形緩沖的切換進(jìn)行檢查之前,將被進(jìn)行的指令執(zhí)行的期望持續(xù)時間。在一個實施例中,環(huán)形緩沖寄存器402、404中的時間片字段420、422指定應(yīng)該給予此特定環(huán)形緩沖寄存器402、404的對圖形渲染引擎411的使用百分比。時間片字段420、422還可以指定應(yīng)該給予環(huán)形緩沖寄存器402、404的對圖形渲染引擎411的最短絕對使用時間。在一個實施例中,指令執(zhí)行的期望持續(xù)時間可以被編程成若干時間單位。在一個實施例中,驅(qū)動軟件424可以將這些時間單位的值寫入每一個時間片字段420、422。因此,驅(qū)動軟件424能夠控制專用于每一個時間分片的環(huán)形緩沖寄存器420、422的絕對時間和相對時間。CPU440從諸如存儲器442的存儲器訪問驅(qū)動軟件424。
單位寄存器414提供由驅(qū)動軟件424使用的向上兼容的單位時間的時間量。在設(shè)備的實際時間參照在配置和/或?qū)崿F(xiàn)上不同時,確立單位時間量是很重要的。在一個實施例中,單位寄存器414使用圖形設(shè)備400的核心時鐘周期作為實際時間參照。通過BIOS固件426可以為圖形設(shè)備400編程單位寄存器414。可以相對于由單位寄存器414限定的所述單位時間量來限定其它的時間片參數(shù)。舉例來說,每一個由單位寄存器414限定的單位時間量,可以是一個單位時間等于50微秒或一個單位時間等于40個時鐘周期。
單位寄存器414還包含時間分片使能位(T)428,用于開始或結(jié)束環(huán)形緩沖時間分片。在一個實施例中,當(dāng)單位寄存器414的時間分片使能位428清零時,固定的環(huán)形緩沖優(yōu)先級生效。在一個實施例中,當(dāng)時間分片使能位428被設(shè)置時,通過時間片字段420、422控制時間分片的環(huán)形緩沖寄存器401、404之間的仲裁。
計時寄存器412實現(xiàn)時間片計時控制。當(dāng)時間分片使能位428被設(shè)置時,計時寄存器412讀出被寫入每一個環(huán)形緩沖寄存器402、404中時間片字段420、422部分之中的單位的值。在此模式中,指令流413將指令提供給諸如第一環(huán)形緩存區(qū)430的特定環(huán)形緩存區(qū),指令流413的激活或恢復(fù)使得倒計時字段(TC)434被諸如第一環(huán)形緩沖寄存器402的所述特定環(huán)形緩沖的時間片寄存器420、422部分中的內(nèi)容值初始化。當(dāng)來自環(huán)形緩存區(qū)的指令的執(zhí)行繼續(xù)進(jìn)行時,倒計時字段434每個時間單位進(jìn)行減量。
時間片計數(shù)器418每個時間單位對倒計時字段434進(jìn)行減量。單位時間計數(shù)器416每個核心時鐘周期進(jìn)行監(jiān)測并計數(shù)。單位時間計數(shù)器416將信號發(fā)送到時間片計數(shù)器418,以基于由單位寄存器414限定的所述既定的單位時間量對倒計時字段434進(jìn)行減量。
在一個實施例中,如果下列兩個條件存在,則圖形渲染引擎411接收來自仲裁與切換模塊410的指令,以停止渲染來自一個環(huán)形緩存區(qū)的指令并開始渲染來自另一個環(huán)形緩存區(qū)的指令。所述兩個條件是倒計時字段434是否變成零;以及在另一個環(huán)形緩存區(qū)中是否存在待處理指令。然后圖形渲染引擎411切換到執(zhí)行諸如第二環(huán)形緩存區(qū)432的另一個環(huán)形緩存區(qū),這使得倒計時字段434被第二環(huán)形緩沖寄存器404中時間片字段422中的內(nèi)容重新初始化。所述切換在下一個指令仲裁時刻發(fā)生。
但是,如果當(dāng)?shù)褂嫊r字段434變成零時在諸如第一環(huán)形緩存區(qū)430的另一個環(huán)形緩存區(qū)中沒有待處理指令,則繼續(xù)執(zhí)行當(dāng)前環(huán)形緩存區(qū)中的指令。在一個實施例中,無限地繼續(xù)當(dāng)前環(huán)形緩存區(qū)中指令的執(zhí)行,直至另一個環(huán)形緩沖寄存器傳達(dá)指令的存在為止。在一個實施例中,當(dāng)頭偏移字段415中的值與尾偏移字段417中的值不同時,諸如第一環(huán)形緩沖寄存器402的環(huán)形緩沖寄存器指示待執(zhí)行指令的存在。在一個實施例中,新指令的存在被傳達(dá)給仲裁與切換模塊410。仲裁與切換模塊按時間片字段402、422中指定的值繼續(xù)執(zhí)行當(dāng)前環(huán)形緩存區(qū)中的指令,然后切換至執(zhí)行新的指令。
現(xiàn)用上下文標(biāo)識寄存器通過仲裁與切換模塊410,將現(xiàn)用環(huán)形緩沖寄存器(沒有示出)的上下文標(biāo)識寄存器值傳達(dá)給圖形渲染引擎411。
數(shù)個機(jī)制可以中斷在兩個環(huán)形緩沖寄存器之間的對圖形渲染引擎411的使用的仲裁進(jìn)程,其中所述兩個環(huán)形緩沖寄存器使待處理指令存儲在它們各自的環(huán)形緩存區(qū)中。如上面所說明的,諸如第三環(huán)形緩沖寄存器406的非時間分片的高優(yōu)先級環(huán)形緩沖,可以通知仲裁與切換模塊410中止對當(dāng)前現(xiàn)用時間分片環(huán)形緩沖寄存器的指令的渲染以及倒計時字段434。這種中止僅僅是暫時的,它將持續(xù)到圖形渲染引擎411完成了對與所述非時間分片的環(huán)形緩沖相關(guān)的當(dāng)前指令的渲染為止。
來自圖形應(yīng)用軟件的指令流413可以包含用于暫時中斷對圖形渲染引擎411的已仲裁使用的指令。例如,“加載寄存器”指令423可以中斷兩個時間分片的環(huán)形緩沖寄存器402、422之間對圖形渲染引擎411的仲裁使用,其中所述兩個時間分片的環(huán)形緩沖寄存器402、422使待處理指令存儲在各自的環(huán)形緩存區(qū)430、432中。所述軟件可以使用“加載寄存器”指令423來清零倒計時字段434,這樣,如果在另一個環(huán)形緩存區(qū)中存在待處理指令,則有效地使現(xiàn)用環(huán)形緩沖寄存器放棄其剩余的時間片時段。例如,當(dāng)不期望正被執(zhí)行指令的時間超過給予環(huán)形緩沖寄存器402、422的絕對最短時間或指定的使用百分比時,可以使用“加載寄存器”指令423。在一個實施例中,如果與第一流相關(guān)的指令沒有占據(jù)整個時間片時段,則仲裁與切換模塊410自動地切換到包含待處理指令的另一個環(huán)形緩存區(qū)。此外,舉例來說,可以在非常耗時的指令或不可中斷的指令序列之前使用“加載寄存器”指令423,以使圖形渲染引擎411在運行此特定指令序列之前處理第二應(yīng)用的待處理指令。
如上面所說明的,如果其他環(huán)形緩存區(qū)430、432沒有待執(zhí)行的指令,則在“加載寄存器”指令423之后所述指令的執(zhí)行繼續(xù)。如果在執(zhí)行其它環(huán)形緩沖的指令后另一個環(huán)形緩存區(qū)430、432具有要執(zhí)行的指令,則圖形渲染引擎411立即切回到原來的環(huán)形緩沖的指令而不用通過倒計時434等待。
指令流413還可以包含“等待事件”指令425。“等待事件”指令425可以被用來暫停執(zhí)行來自此特定指令流413的指令,直至某個條件出現(xiàn)或某個事件發(fā)生。如果“等待事件”指令425的執(zhí)行導(dǎo)致暫停,則允許其他的時間分片環(huán)形緩沖寄存器402、404使圖形渲染引擎處理它們的相關(guān)指令,甚至在被暫停的環(huán)形緩沖的剩余時間片時段終止之前就開始所述處理。例如,“等待事件”指令425可以被用來等待視頻捕獲事件。顯示設(shè)備必須使用這些指令來從顯示屏的頂部垂直位置到顯示屏的下部垂直位置顯示圖像。因此,圖形渲染引擎411已經(jīng)渲染了用于所述顯示屏上完整圖像的所有指令,并且直到從頂部垂直位置到底部垂直位置的轉(zhuǎn)換時段終止后,才能再渲染其他指令。在圖形設(shè)備400等待這樣的事件發(fā)生的這段時間內(nèi),在等待當(dāng)前的顯示設(shè)備發(fā)生此異步事件的同時,“等待事件”指令425允許圖形渲染引擎411重新使能對于與不同的顯示設(shè)備相關(guān)的另一個時間分片環(huán)形緩存區(qū)的處理。異步事件是諸如視頻捕捉事件的不是以固定時間間隔發(fā)生的或在時間上是不協(xié)同的事件。在一個實施例中,異步事件隨機(jī)地或以與指令流執(zhí)行不相關(guān)的時間間隔發(fā)生。例如,顯示設(shè)備的垂直空白事件是一個異步事件,該事件實際以真實世界的時間中固定的時間間隔(即,60Hz)發(fā)生,但是其對于與指令流413執(zhí)行相關(guān)的不規(guī)則服務(wù)時間是異步的。
圖5和圖6示出了用于使用單個圖形渲染引擎在多個顯示設(shè)備上渲染多個圖像的進(jìn)程的實施例的流程圖。當(dāng)指令流將指令從一個或多個圖形應(yīng)用程序輸送到指令傳輸器時,所述指令流啟動所述進(jìn)程。
在方框505中,由環(huán)形緩沖寄存器限定的第一環(huán)形緩存區(qū)從多個圖形應(yīng)用程序或通過單個圖形應(yīng)用程序接收指令。第一環(huán)形緩存區(qū)的位置和大小可以由包含在第一環(huán)形緩沖寄存器中的可編程內(nèi)容限定。指令傳輸器可以包含一個或多個環(huán)形緩存區(qū)或類似的存儲區(qū)。指令傳輸器可以包含一個或多個環(huán)形緩沖寄存器或類似的設(shè)備。
在方框510中,所述驅(qū)動器將代表圖像的指令存儲在第一環(huán)形緩存區(qū)中。在一個實施例中,相應(yīng)的環(huán)形緩沖寄存器中的尾偏移字段由驅(qū)動器更改,以表明在第一環(huán)形緩存區(qū)中所包含的這些待處理指令的存在。第一環(huán)形緩沖寄存器將待執(zhí)行指令的存在通知給圖形渲染引擎以及仲裁與切換模塊。
在方框515中,指令傳輸器使用DMA引擎從第一環(huán)形緩存取指令提并供給圖形渲染引擎。仲裁與切換模塊將第一環(huán)形緩存設(shè)置成這樣的存儲器,即圖形渲染引擎一直處理來自該存儲器的指令。
在方框520中,圖形上下文管理器設(shè)置與第一環(huán)形緩沖寄存器相關(guān)的當(dāng)前渲染上下文。
在方框525中,在一個實施例中,如果正在由圖形渲染引擎處理的第一(當(dāng)前)圖像具有的渲染上下文不同于接下來要處理的第二(下一個)圖像的渲染上下文,則發(fā)生下面的過程。圖形上下文管理器存儲與第一圖像相關(guān)的渲染上下文,并將與第二圖像相關(guān)的上下文恢復(fù)到圖形渲染引擎。圖形上下文管理器將代表與一個圖像相關(guān)的渲染上下文的狀態(tài)變量的值存儲在諸如既定存儲單元的第二存儲區(qū)中,并從該存儲區(qū)中恢復(fù)這些狀態(tài)變量的值,所述圖像來自特定圖形應(yīng)用程序。第二存儲區(qū)可以由包含在諸如上下文標(biāo)識寄存器的第二寄存器中的可編程內(nèi)容限定。
在方框530中,圖形渲染引擎執(zhí)行來自與第一顯示設(shè)備相關(guān)的環(huán)形緩存區(qū)諸如第一環(huán)形緩存區(qū)的指令,并且對第一圖像顯示存儲區(qū)進(jìn)行適當(dāng)?shù)男薷??;跁r間分配器,圖形渲染引擎可以隨后開始執(zhí)行來自與第二顯示設(shè)備相關(guān)的第二環(huán)形緩存區(qū)的指令。在一個實施例中,圖形渲染引擎可以開始執(zhí)行指令,其中所述指令來自包含在提供給第一環(huán)形緩存區(qū)的同一指令流中的第二圖形應(yīng)用程序。因此,圖形渲染引擎可以通過切換在處理與第一獨立圖像相關(guān)的指令和與第二獨立圖像相關(guān)的指令之間交替。圖像渲染引擎可以在處理來自不同環(huán)形緩存區(qū)的指令之間切換,或通過處理來自同一指令流中的兩個不同圖形應(yīng)用程序的指令來進(jìn)行切換。注意,圖形渲染引擎不必等到處理完與第一獨立圖像相關(guān)的所有指令,就可以開始處理與第二獨立圖像相關(guān)的指令。
在方框535中,時間分配器可以在與第一獨立圖像和第二獨立圖像相關(guān)的指令之間加載對圖形渲染引擎的平衡使用。在一個實施例中,時間分配器可以在與兩個或更多個獨立圖像相關(guān)的指令之間加載圖形渲染引擎的平衡使用。在一個實施例中,時間分配器基于為每一個圖像確定的對圖形渲染引擎的絕對最短使用時間和為每一個圖像確定的百分比,來平衡圖形渲染引擎的使用。時間分配器還可以在下列兩種圖像之間平衡對圖形渲染引擎的使用即,要求立即使用圖形渲染引擎的高優(yōu)先級別圖像,和享用對圖形渲染引擎的所述絕對最短使用時間和所述使用百分比的圖像。
在方框540中,時間分配器可以確立與在不同核心頻率下工作的設(shè)備兼容的計時電路中的單位時間量。注意,這些方框不表示任何設(shè)定的執(zhí)行順序。例如,方框540可以在方框505之前發(fā)生。
在方框545中,通過來自圖形設(shè)備驅(qū)動器的軟件指令,時間分配器可以將指定給與第一圖像相關(guān)的指令的使用圖形渲染引擎的時間讓給與第二圖像相關(guān)的指令。
在方框550中,通過來自圖形應(yīng)用程序的軟件指令,在等待第一圖像發(fā)生圖像渲染事件的同時,時間分配器可以允許圖形渲染引擎處理與第二圖像相關(guān)的指令。
在方框555中,圖形設(shè)備同時在一個或多個顯示設(shè)備上顯示圖像。
在方框570中,圖形設(shè)備繼續(xù)此開始于方框505中的進(jìn)程。
權(quán)利要求
1.一種裝置,包括圖形渲染引擎,用于同時渲染用于顯示在多個顯示設(shè)備上的兩個或更多個獨立圖像,所述兩個或更多個獨立圖像包括第一獨立圖像和第二獨立圖像;和圖形上下文管理器,所述圖形上下文管理器將描述與所述第一獨立圖像相關(guān)的第一渲染上下文的信息存儲到第一存儲區(qū)中并從所述第一存儲區(qū)恢復(fù)所述信息,所述圖形上下文管理器將描述與所述第二獨立圖像相關(guān)的第二渲染上下文的信息存儲到第二存儲區(qū)中并從所述第二存儲區(qū)恢復(fù)所述信息。
2.如權(quán)利要求1所述的裝置,其中所述圖形上下文管理器還包括多個存儲區(qū),每一個存儲區(qū)存儲與來自特定圖形應(yīng)用程序的指令相關(guān)的渲染上下文,所述多個存儲區(qū)包括所述第一存儲區(qū)和所述第二存儲區(qū);以及多個上下文標(biāo)識寄存器,包括第一上下文標(biāo)識寄存器和第二上下文標(biāo)識寄存器,所述第一上下文標(biāo)識寄存器包含指向所述第一存儲區(qū)的地址的信息,所述第二上下文標(biāo)識寄存器包含指向所述第二存儲區(qū)的地址的信息。
3.如權(quán)利要求2所述的裝置,其中所述圖形上下文管理器還包括第三寄存器,用于跟蹤所述多個存儲區(qū)中的哪一個存儲區(qū)包含將要提供給所述圖形渲染引擎的渲染上下文信息。
4.如權(quán)利要求1所述的裝置,其中所述第一存儲區(qū)位于包含所述圖形渲染引擎的同一芯片上。
5.如權(quán)利要求2所述的裝置,其中所述第一上下文標(biāo)識寄存器包含一個字段,用于幫助將與二維圖像相關(guān)的所述第一渲染上下文切換到與三維圖像相關(guān)的所述第二渲染上下文。
6.如權(quán)利要求2所述的裝置,其中所述第一上下文標(biāo)識寄存器包含一個字段,用于幫助將與材質(zhì)貼像相關(guān)的所述第一渲染上下文切換到與非材質(zhì)貼像相關(guān)的所述第二渲染上下文。
7.如權(quán)利要求2所述的裝置,還包括所述第一存儲區(qū),用于包含第一指令流中用于所述兩個或更多個獨立圖像的指令。
8.如權(quán)利要求2所述的裝置,還包括所述第一存儲區(qū),用于包含第一指令流中用于一個或多個獨立圖像的指令,并且所述第一存儲區(qū)包含第二指令流中用于一個或多個獨立圖像的指令。
9.如權(quán)利要求1所述的裝置,還包括一個或多個指令傳輸器,用于將用于所述兩個或更多個獨立圖像的指令傳送到所述圖形渲染引擎,所述一個或多個指令傳輸器包括第一指令傳輸器。
10.如權(quán)利要求9所述的裝置,其中每一個指令傳輸器與一個特定的顯示設(shè)備相關(guān)聯(lián)。
11.如權(quán)利要求9所述的裝置,其中所述第一指令傳輸器包括指令存儲區(qū);第一寄存器,用于限定所述指令存儲區(qū)的起始和終點;以及存儲器訪問引擎,用于從所述指令存儲區(qū)提取指令并傳送所述指令至所述圖形渲染引擎。
12.如權(quán)利要求9所述的裝置,其中所述的指令傳輸器還包括第三存儲區(qū),用于存儲可以從指令流調(diào)用的獨立指令序列。
13.如權(quán)利要求1所述的裝置,還包括時間分配器,用于在所述兩個或更多個獨立圖像之間仲裁對所述圖形渲染引擎的使用。
14.如權(quán)利要求13所述的裝置,其中所述的時間分配器包括包含第一寄存器的多個寄存器,所述第一寄存器具有多個字段,第一字段用于確定所述第一寄存器是否參與對所述圖形渲染引擎的使用的仲裁進(jìn)程,第二字段用于指向包含來自第一指令流的指令的存儲單元。
15.如權(quán)利要求13所述的裝置,其中所述時間分配器還包括第一模塊,用于確立使用所述圖形渲染引擎的可編程耗用時間段,所述時間段由數(shù)量可編程的單位時間段限定,其中每一個單位時間段由數(shù)量可編程的真實時間量限定。
16.如權(quán)利要求14所述的裝置,其中所述時間分配器還包括第一模塊,用于命令所述圖形渲染引擎處理與第一獨立圖像相關(guān)的指令,所述指令存儲在第一存儲區(qū)中,所述第一存儲區(qū)具有由所述多個字段之中包含的信息所限定的地址。
17.一種方法,包括同時渲染第一指令流中的與多個獨立圖像相關(guān)的指令;將代表與第一獨立圖像相關(guān)的第一渲染上下文的信息存儲在第一存儲區(qū)中;從第二存儲區(qū)恢復(fù)代表與第二獨立圖像相關(guān)的第二渲染上下文的指令;以及將圖形渲染引擎從所述第一渲染上下文切換到所述第二渲染上下文。
18.如權(quán)利要求17所述的方法,還包括使用計時電路在與所述第一圖形應(yīng)用程序相關(guān)的指令和與所述第二圖形應(yīng)用程序相關(guān)的指令之間分配對圖形渲染引擎的使用。
19.如權(quán)利要求17所述的方法,還包括在多個存儲區(qū)中包含第一存儲區(qū)和第二存儲區(qū);以及使用易失存儲器設(shè)備跟蹤在所述多個存儲區(qū)中哪一個存儲區(qū)包含將要提供給所述圖形渲染引擎的所述渲染上下文信息。
20.如權(quán)利要求17所述的方法,還包括在單個顯示設(shè)備上顯示所述多個獨立圖像。
21.一種系統(tǒng),包括中央處理單元;以及圖形設(shè)備,所述中央處理單元被耦合到所述圖形設(shè)備,所述圖形設(shè)備包含圖形渲染引擎,用于同時渲染用于顯示在多個顯示設(shè)備上的兩個或更多個獨立圖像;以及圖形上下文管理器,用于將描述與所述第一獨立圖像相關(guān)的第一渲染上下文的信息存儲到第一存儲區(qū)中,并從所述第一存儲區(qū)恢復(fù)所述信息,所述圖形上下文管理器將描述與所述第二獨立圖像相關(guān)的第二渲染上下文的信息存儲到第二存儲區(qū)中,并從所述第二存儲區(qū)恢復(fù)所述信息。
22.如權(quán)利要求21所述的系統(tǒng),其中所述圖形設(shè)備還包括時間分配器,用于在所述兩個或更多個獨立圖像之間仲裁對所述圖形渲染引擎的使用。
23.如權(quán)利要求21所述的系統(tǒng),其中所述圖形設(shè)備還包括指令傳輸器,用于通過所述時間分配器的控制將用于所述獨立圖像的指令傳送到所述圖形渲染引擎。
全文摘要
本發(fā)明公開了用于同時渲染獨立圖像以顯示在一個或多個顯示設(shè)備上的方法、裝置和系統(tǒng)。在一個實施例中,圖形渲染引擎同時渲染獨立圖像用于顯示在多個顯示設(shè)備上。圖形上下文管理器將描述與所述第一獨立圖像相關(guān)的第一渲染上下文的信息存儲到第一存儲區(qū)中,并從所述第一存儲區(qū)恢復(fù)所述信息。所述圖形上下文管理器將描述與所述第二獨立圖像相關(guān)的第二渲染上下文的信息存儲到第二存儲區(qū)中,并從所述第二存儲區(qū)恢復(fù)所述信息。
文檔編號G06T11/00GK1639686SQ02813207
公開日2005年7月13日 申請日期2002年6月28日 優(yōu)先權(quán)日2001年6月29日
發(fā)明者彼得·多伊爾, 阿迪蒂亞·斯里尼瓦斯 申請人:英特爾公司