專(zhuān)利名稱(chēng):腳本環(huán)境中內(nèi)容的并行化定義和顯示的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)總體上涉及圖形接口,并且更具體地,涉及圖形應(yīng)用編程接口(API)。
背景技術(shù):
傳統(tǒng)上,使用客戶(hù)端-服務(wù)器架構(gòu)來(lái)管理中央處理單元(CPU)與附接的圖形處理單元(GPU)之間的接口。在客戶(hù)端上執(zhí)行的動(dòng)作被轉(zhuǎn)換成在GPU服務(wù)器上的請(qǐng)求。因此, 服務(wù)器請(qǐng)求可能使得信息返回 客戶(hù)端。針對(duì)此類(lèi)請(qǐng)求,客戶(hù)端中的同步API必須阻止進(jìn)一步的請(qǐng)求,直到可從服務(wù)器獲得結(jié)果。反過(guò)來(lái),服務(wù)器也要花費(fèi)大量空閑時(shí)間來(lái)等待后續(xù)的客戶(hù)端動(dòng)作。
發(fā)明內(nèi)容
本公開(kāi)描述了便于腳本環(huán)境中內(nèi)容的并行化定義和顯示的技術(shù)和結(jié)構(gòu)。在一個(gè)實(shí)施方式中,可以設(shè)定圖形狀態(tài)??梢詫⑴c設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給GPU。在無(wú)需等待對(duì)由GPU成功完成任務(wù)的指示的情況下,可以設(shè)定另一圖形狀態(tài)。在一個(gè)實(shí)施方式中,腳本環(huán)境可以提供單線程編程模型。在提交任務(wù)之前,可以對(duì)設(shè)定的圖形狀態(tài)進(jìn)行驗(yàn)證。如果圖形狀態(tài)驗(yàn)證失敗,則可以跳過(guò)該任務(wù),并且可以讀取另一設(shè)定的圖形狀態(tài)。如果圖形狀態(tài)通過(guò)驗(yàn)證,則可以將該任務(wù)和圖形狀態(tài)提交給GPU,以執(zhí)行與圖形狀態(tài)對(duì)應(yīng)的繪制(draw) 任務(wù)。在一個(gè)實(shí)施方式中,可以不檢驗(yàn)或者報(bào)告錯(cuò)誤。類(lèi)似地,在一個(gè)實(shí)施方式中,可以不報(bào)告驗(yàn)證失??;作為替代,在此類(lèi)實(shí)施方式中,可以跳過(guò)與驗(yàn)證失敗的圖形狀態(tài)相關(guān)聯(lián)的繪制任務(wù)。在一個(gè)實(shí)施方式中,可以并行執(zhí)行設(shè)定圖形狀態(tài)、驗(yàn)證圖形狀態(tài)和/或執(zhí)行繪制任務(wù)。因此,可以在完成繪制任務(wù)之前設(shè)定后續(xù)的圖形狀態(tài)??梢栽诰彌_器中設(shè)定圖形狀態(tài),并且可以從相同緩沖器讀取圖形狀態(tài),例如用于驗(yàn)證并傳送給GPU。緩沖器可以允許同時(shí)進(jìn)行讀取和寫(xiě)入。在一個(gè)實(shí)施方式中,可以選擇調(diào)試模式,其中可以串行地設(shè)定圖形狀態(tài)、可以執(zhí)行對(duì)應(yīng)的繪制任務(wù)并且可以執(zhí)行錯(cuò)誤檢驗(yàn)和報(bào)告。因此,調(diào)試模式可以允許對(duì)內(nèi)容的串行和順序的定義及顯示。
圖I是根據(jù)某些實(shí)施方式的對(duì)內(nèi)容的并行化定義和顯示的流程圖。圖2是根據(jù)某些實(shí)施方式的調(diào)試模式的流程圖。圖3是根據(jù)某些實(shí)施方式的對(duì)內(nèi)容的并行化定義和顯示的框圖。圖4是根據(jù)某些實(shí)施方式的對(duì)內(nèi)容的并行化定義和顯示的框圖。圖5圖示了可以在實(shí)施方式中使用的示例計(jì)算機(jī)系統(tǒng)。盡管在此通過(guò)示例的方式針對(duì)若干實(shí)施方式和說(shuō)明性附圖描述了本公開(kāi),但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,本公開(kāi)并不限于所描述的實(shí)施方式或附圖。應(yīng)理解到,附圖及其詳細(xì)描述并不旨在于將本公開(kāi)限制為所公開(kāi)的特定形式,而相反,旨在于涵蓋落入本公開(kāi)的精神和范圍內(nèi)的所有修改、等同方案和備選方案。在此使用的標(biāo)題僅用于組織性目的,并不意味著用來(lái)限制本描述的范圍。如在整個(gè)本申請(qǐng)中所使用的,用語(yǔ)“可以”是在許可意義(即,具有可能的含義)上而不是強(qiáng)制性意義(即,必須的含義)上使用的。類(lèi)似地,用語(yǔ)“包括”、“包含”和“含”是指包括但不限于。
具體實(shí)施例方式在以下詳細(xì)描述中,闡述了大量特定細(xì)節(jié)以便提供對(duì)請(qǐng)求保護(hù)的主題的透徹理解。然而,本領(lǐng)域技術(shù)人員將理解的是,請(qǐng)求保護(hù)的主題可以在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)施。在其它情形中,沒(méi)有詳細(xì)描述普通技術(shù)人員所已知的方法、裝置或系統(tǒng),以免混淆請(qǐng)求保護(hù)的主題。以下詳細(xì)描述的某些部分是在對(duì)存儲(chǔ)于專(zhuān)業(yè)裝置或?qū)S糜?jì)算設(shè)備或平臺(tái)的存儲(chǔ)器內(nèi)的二進(jìn)制數(shù)字信號(hào)的操作的算法或符號(hào)表示的方面呈現(xiàn)的。在該具體說(shuō)明的上下文中,術(shù)語(yǔ)專(zhuān)業(yè)裝置等包括一旦被編程便根據(jù)來(lái)自程序軟件的指令執(zhí)行特定功能的通用計(jì)算 機(jī)。算法描述或符號(hào)表示是信號(hào)處理或相關(guān)領(lǐng)域的普通技術(shù)人員用來(lái)向本領(lǐng)域其他技術(shù)人員表達(dá)它們工作實(shí)質(zhì)的技術(shù)的示例。在此,一般而言,算法被認(rèn)為是帶來(lái)期望結(jié)果的自洽(self-consistent)序列的操作或類(lèi)似的信號(hào)處理。在本文上下文中,操作或處理涉及物理量的物理操控。通常,盡管不是必需的,但此類(lèi)量可以采取能夠被存儲(chǔ)、傳送、組合、比較或以其他方式操縱的電或磁信號(hào)的形式。已經(jīng)證明,有時(shí)原則上出于通用的原因,將此類(lèi)信號(hào)指代為比特、數(shù)據(jù)、值、元素、符號(hào)、字符、項(xiàng)、數(shù)目、數(shù)字等是方便的。然而,應(yīng)理解的是,所有這些或類(lèi)似項(xiàng)將與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián)并且僅僅是方便的標(biāo)記。除非另外特別陳述,否則如從以下討論中容易理解,在整個(gè)本說(shuō)明書(shū)中,利用諸如“處理”、“運(yùn)算”、“計(jì)算”、“確定”等的術(shù)語(yǔ)的討論指代諸如專(zhuān)用計(jì)算機(jī)或類(lèi)似的專(zhuān)用電子計(jì)算設(shè)備之類(lèi)的專(zhuān)業(yè)裝置的動(dòng)作或進(jìn)程。因此,在本說(shuō)明書(shū)的上下文中,專(zhuān)用計(jì)算機(jī)或類(lèi)似的專(zhuān)用電子計(jì)算設(shè)備能夠操控或傳輸專(zhuān)用計(jì)算機(jī)或類(lèi)似的專(zhuān)用電子計(jì)算設(shè)備的存儲(chǔ)器、寄存器或其它信息存儲(chǔ)設(shè)備、傳輸設(shè)備或顯示設(shè)備內(nèi)的通常表示為物理電或磁量的信號(hào)?!暗谝弧?、“第二”等。如在此使用的,這些術(shù)語(yǔ)用作對(duì)它們之后的名詞的標(biāo)記,并不暗示任何類(lèi)型的排序(例如,空間上、時(shí)間上、邏輯上等)。例如,在圖形API設(shè)定圖形狀態(tài)中,術(shù)語(yǔ)“第一”和“第二”圖形狀態(tài)可以用來(lái)指代任何兩個(gè)圖形狀態(tài)。換言之,“第一”和“第二”圖形狀態(tài)并不限于邏輯上的處理元素0和I?!盎凇?。如在此所使用的,該術(shù)語(yǔ)用來(lái)描述影響確定的一個(gè)或多個(gè)因素。該術(shù)語(yǔ)并不排除可以影響確定的附加因素。也就是說(shuō),確定可以單獨(dú)地基于那些因素或者至少部分地基于那些因素。考慮用語(yǔ)“基于B確定A”。盡管B可以是影響對(duì)A的確定的因素,但這種用語(yǔ)并不排除A還基于C來(lái)確定。在其它情形中,A可以單獨(dú)地基于B來(lái)確定。在計(jì)算設(shè)備上執(zhí)行的數(shù)字圖像編輯應(yīng)用可以用來(lái)操控、增強(qiáng)、傳輸、創(chuàng)建和渲染諸如向量圖形、3D圖形和視頻的圖像、圖形和視頻。根據(jù)在此描述的各種實(shí)施方式,數(shù)字圖像編輯應(yīng)用可以用來(lái)渲染、修改和編輯此類(lèi)對(duì)象,并且可以使用諸如OpenGL、DirectX或Direct3D 之類(lèi)的 API。描述用于在腳本環(huán)境中并行化定義和顯示諸如3D內(nèi)容之類(lèi)的內(nèi)容的方法和裝置的各種實(shí)施方式。某些實(shí)施方式可以包括用于并行化定義和顯示內(nèi)容的裝置。例如,狀態(tài)設(shè)定模塊可以接收用戶(hù)輸入并在狀態(tài)塊中設(shè)定圖形狀態(tài)。繪制模塊可以驗(yàn)證設(shè)定的圖形狀態(tài)并將圖形狀態(tài)提供給GPU。在某些實(shí)施方式中,狀態(tài)設(shè)定模塊和繪制模塊可以通過(guò)存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并可由計(jì)算裝置的一個(gè)或多個(gè)處理器(例如,一個(gè)或多個(gè)CPU或 GPU)執(zhí)行的程序指令來(lái)實(shí)現(xiàn)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以存儲(chǔ)可由一個(gè)或多個(gè)處理器執(zhí)行以使得計(jì)算裝置執(zhí)行如在此所描述的對(duì)內(nèi)容的并行化定義和顯示的程序指令。狀態(tài)設(shè)定模塊和繪制模塊的其它實(shí)施方式可以至少部分地通過(guò)存儲(chǔ)在例如非易失性存儲(chǔ)器中的固件和/ 或硬件電路來(lái)實(shí)現(xiàn)?,F(xiàn)在轉(zhuǎn)到圖1,其示出了用于并行化定義和顯示內(nèi)容的一個(gè)實(shí)施方式。盡管為易于理解按照特定順序示出了這些塊,但可以使用其它順序。在某些實(shí)施方式中,圖I的方法可以包括與所示出的相比附加(或更少)的塊。圖I被圖示為可以同時(shí)執(zhí)行的并行處理。圖 I中的左方框,塊102-106,可以對(duì)應(yīng)于腳本環(huán)境的腳本執(zhí)行部分(腳本線程)。圖I中的右方框,塊108-114,可以對(duì)應(yīng)于腳本環(huán)境的工作線程。為易于理解將這兩個(gè)路徑描述為并行路徑。這兩個(gè)路徑可以同時(shí)發(fā)生,順序發(fā)生,或者可以有時(shí)同時(shí)發(fā)生并且有時(shí)順序發(fā)生。兩個(gè)路徑展示了示例排序,在某些實(shí)施方式中,可以按照不同的排序進(jìn)行。在102處,可以設(shè)定圖形狀態(tài)。圖形狀態(tài)可以是對(duì)諸如3D內(nèi)容之類(lèi)的內(nèi)容的顯示的定義。例如,在3D圖形API中,可以將圖形狀態(tài)設(shè)定為SetRenderToTexture O。用于設(shè)定圖形狀態(tài)的命令可以來(lái)自腳本語(yǔ)言(例如,ActionScript 3, JavaScript, Microsoft. NET腳本語(yǔ)言等),該腳本語(yǔ)言可以提供單線程編程模型。其它示例圖形狀態(tài)可以包括 setProgramO、setProgramConstantsFromVector O、setProgramConstantsfromMatrix O、 setVertexBufferAt ()> setBlendFactorsO、setColorMaskO、setDepthTestO、 setTextureAt O、Set RenderToTexture ()、SetRenderToBackBuffer () > setCullingO、 setStencilActions ()、setStencilReferenceValue () > setScissorRectangle ()等。在一個(gè)實(shí)施方式中,調(diào)用設(shè)定狀態(tài)的功能可以執(zhí)行對(duì)圖形狀態(tài)塊的修改(諸如寫(xiě)入)并返回,從而使得可以設(shè)定另一圖形狀態(tài)(或者從而使得可以執(zhí)行其他腳本任務(wù))。圖形狀態(tài)塊可以利用諸如循環(huán)緩沖器或者環(huán)形緩沖器實(shí)現(xiàn)緩沖反轉(zhuǎn)。多個(gè)狀態(tài)塊的環(huán)形緩沖器可以允許用于設(shè)定狀態(tài)的只寫(xiě)模式和用于讀取狀態(tài)的只讀,由此防止同時(shí)訪問(wèn)。在一個(gè)實(shí)施方式中,圖形狀態(tài)塊可以被實(shí)施為64環(huán)形緩沖器。在各種實(shí)現(xiàn)中,緩沖器的尺寸可以基于設(shè)置新?tīng)顟B(tài)時(shí)腳本的速度比對(duì)在使用該狀態(tài)時(shí)GPU的速度。設(shè)定圖形狀態(tài)可以包括對(duì)圖形狀態(tài)塊緩沖器的塊/單元之一進(jìn)行寫(xiě)入。在各種實(shí)施方式中,圖形狀態(tài)塊可以駐留在中央處理單元 (CPU)系統(tǒng)存儲(chǔ)器中,從而使得可以在CPU系統(tǒng)存儲(chǔ)器中高速緩存狀態(tài)變化。通過(guò)這樣做, 設(shè)定圖形狀態(tài)可以不需要GPU訪問(wèn)。在一個(gè)實(shí)施方式中,圖形狀態(tài)可以在調(diào)試模式中設(shè)定。 在調(diào)試模式中,可以通過(guò)腳本線程直接在GPU中設(shè)定圖形狀態(tài)。在一個(gè)實(shí)施方式中,在設(shè)定圖形狀態(tài)之后,在104處可以確定是否將準(zhǔn)備設(shè)定另一圖形狀態(tài)。如果將準(zhǔn)備設(shè)定另一圖形狀態(tài),則在102處可以設(shè)定該圖形狀態(tài),無(wú)需等待來(lái)自GPU的任何結(jié)果(即,無(wú)需等待對(duì)成功完成與設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)的指示)。設(shè)定附加的圖形狀態(tài)可以包括修改圖形狀態(tài)塊。例如,在使用環(huán)形緩沖器的實(shí)施方式中,腳本線程可以修改環(huán)形緩沖器的為空或者已經(jīng)被讀取的單元,如在106中所描述的那樣。結(jié)果,在其中已經(jīng)將兩個(gè)圖形狀態(tài)寫(xiě)入到環(huán)形緩沖器并且任一個(gè)都沒(méi)有被讀取的簡(jiǎn)單示例中,兩個(gè)圖形狀態(tài)可以在環(huán)形緩沖器的不同單元中并存。在一個(gè)實(shí)施方式中,腳本可以繼續(xù),而無(wú)需等待GPU結(jié)果,并且允許設(shè)定另一圖形狀態(tài)。在狀態(tài)塊或環(huán)形緩沖器中設(shè)定圖形狀態(tài)對(duì)于腳本語(yǔ)言可以是透明的。如果沒(méi)有其他圖形狀態(tài)準(zhǔn)備被設(shè)定,則在106處,腳本線程可以執(zhí)行其他腳本任務(wù)。在106處,腳本線程可以執(zhí)行其他腳本。例如,可以發(fā)生針對(duì)API的其他任務(wù)或處理以及其它非圖形渲染任務(wù)。在一個(gè)實(shí)施方式中,當(dāng)在102處設(shè)定圖形狀態(tài)之后,腳本線程可以執(zhí)行其他腳本。如果沒(méi)有未決的圖形狀態(tài)準(zhǔn)備被設(shè)定,則腳本線程可以執(zhí)行其他腳本。在一個(gè)實(shí)施方式中,在對(duì)將設(shè)定的新圖形狀態(tài)進(jìn)行檢驗(yàn)之前,如果任務(wù)可用,則腳本線程可以執(zhí)行除了設(shè)定圖形狀態(tài)之外的任務(wù)。以這種方式,如果兩個(gè)圖形狀態(tài)設(shè)定任務(wù)和其它腳本任務(wù)可用于腳本線程執(zhí)行,則腳本線程可以在設(shè)定圖形狀態(tài)任務(wù)和執(zhí)行其他腳本任務(wù)之間進(jìn)行交替。在一個(gè)實(shí)施方式中,設(shè)定圖形狀態(tài)可以處于比其他腳本任務(wù)更高的優(yōu)先級(jí),并且可以在執(zhí)行其他腳本任務(wù)之前設(shè)定所有可用新圖形狀態(tài)。在執(zhí)行其他腳本之后,腳本線程可以再次檢驗(yàn)是否將準(zhǔn)備設(shè)定另一圖形狀態(tài)。如果將準(zhǔn)備設(shè)定另一圖形狀態(tài),則腳本線程可以完成它的其它任務(wù),繼而設(shè)定接下來(lái)的圖形狀態(tài)。在一個(gè)實(shí)施方式中,可以向腳本線程提供對(duì)將準(zhǔn)備在緩沖器中設(shè)定新圖形狀態(tài)的指示,從而使得可以不需要實(shí)際的檢驗(yàn)或輪循。腳本線程可以再次完成任何未完成的任務(wù),并且繼而在102處設(shè)定新的圖形狀態(tài)。在一個(gè)實(shí)施方式中,如果沒(méi)有圖形狀態(tài)準(zhǔn)備被設(shè)定,并且腳本線程沒(méi)有其它腳本任務(wù)要執(zhí)行,則在104處腳本線程可以等待空閑。與腳本語(yǔ)言執(zhí)行同時(shí),工作線程可以是執(zhí)行任務(wù)。在108處,可以確定是否已經(jīng)設(shè)定新的圖形狀態(tài)。在一個(gè)實(shí)施方式中,工作線程可以讀取緩沖器以觀察就之前還沒(méi)有被工作線程讀取的意義上哪些圖形狀態(tài)是新的??梢栽诰彌_器中設(shè)定多個(gè)新的圖形狀態(tài)。例如,工作線程可以不像腳本線程可以設(shè)定圖形狀態(tài)那么快地處理和提供設(shè)定的圖形狀態(tài)給GPU。在這些情況中,工作線程可以讀取優(yōu)先級(jí)數(shù)據(jù)(例如,時(shí)間戳或高優(yōu)先級(jí)指示)來(lái)確定在110處首先讀取哪個(gè)狀態(tài)。在一個(gè)實(shí)施方式中,在110處可以讀取設(shè)定的圖形狀態(tài)。該讀取可以是異步的,因?yàn)樵O(shè)定圖形狀態(tài)可以不必直接后接讀取該設(shè)定的圖形狀態(tài)。在隊(duì)列中其它讀取可以提前, 或者設(shè)定圖形狀態(tài)可以比讀取和處理狀態(tài)更快。如圖I中所示,讀取設(shè)定的圖形狀態(tài)可以與在塊102中的設(shè)定圖形狀態(tài)和在塊106中的執(zhí)行其他腳本同時(shí)發(fā)生。此外,塊108-114也可以與塊102-106同時(shí)發(fā)生。108-114共同表示可以發(fā)起與設(shè)定的圖形狀態(tài)對(duì)應(yīng)的繪制并且可以統(tǒng)稱(chēng)為繪制時(shí)間的一類(lèi)調(diào)用。在一個(gè)實(shí)施方式中,讀取設(shè)定的圖形狀態(tài)可以包括線程檢查狀態(tài)塊并確定自上一次線程檢查狀態(tài)塊起狀態(tài)為新。如果在狀態(tài)塊中存在多個(gè)新的圖形狀態(tài),則線程可以讀取狀態(tài)塊中的指針或其它優(yōu)先級(jí)數(shù)據(jù)(例如,時(shí)間戳或高優(yōu)先級(jí)指示)以確定應(yīng)當(dāng)首先讀取哪個(gè)設(shè)定的圖形狀態(tài)。兩個(gè)調(diào)用(clear ()、drawTrianglesO)可以通過(guò)將數(shù)據(jù)從設(shè)定和讀取的圖形狀態(tài)傳遞到圖形流水線(pipeline)中而發(fā)起繪制。繪制調(diào)用可以通過(guò)腳本線程發(fā)起,但腳本線程可以返回到幾何處理任務(wù),而工作線程拾取繪制任務(wù)。繪制任務(wù)可以將所有狀態(tài)信息或修改部分傳遞給圖形子系統(tǒng)(GPU)并發(fā)起繪制。在一個(gè)實(shí)施方式中,繪制任務(wù)可以在從圖形子系統(tǒng)恢復(fù)錯(cuò)誤狀態(tài)方面不付出努力。如在112處所圖示的,可以對(duì)讀取的圖形狀態(tài)進(jìn)行驗(yàn)證。例如,可能存在其中狀態(tài)塊處于無(wú)效狀態(tài)的情形。在一個(gè)實(shí)施方式中,驗(yàn)證讀取的圖形狀態(tài)可以是只讀操作。驗(yàn)證可以在內(nèi)部發(fā)生,可以由CPU上的線程執(zhí)行,并且腳本可以在驗(yàn)證期間繼續(xù)。作為示例,讀取的圖形狀態(tài)可以為SetProgram O ,其可以設(shè)定著色器,該著色器需要特定輸入來(lái)適當(dāng)作用。 在本示例中的著色器程序可以需要三個(gè)紋理輸入。如果狀態(tài)塊未完成,并且只具有設(shè)定的兩個(gè)紋理輸入而不是三個(gè),則與設(shè)定的狀態(tài)對(duì)應(yīng)的繪制功能可能無(wú)法適當(dāng)作用。在這樣的示例中,驗(yàn)證可能失敗。如果驗(yàn)證失敗,則可以不執(zhí)行繪制調(diào)用,并且可以跳過(guò)向GPU的任務(wù)提交。作為驗(yàn)證失敗的結(jié)果,可以確定是否在塊108處設(shè)定另一圖形狀態(tài)。驗(yàn)證可以是出于保密和安全的原因而執(zhí)行,并且可以不包括任何狀態(tài)報(bào)告。在一個(gè)實(shí)施方式中,不執(zhí)行驗(yàn)證失敗報(bào)告。此外,驗(yàn)證可以不包括錯(cuò)誤檢驗(yàn),并且驗(yàn)證失敗可以不觸發(fā)向腳本語(yǔ)言的錯(cuò)誤通知。如果對(duì)讀取的圖形狀態(tài)進(jìn)行了驗(yàn)證,則可以在塊114中進(jìn)行繪制調(diào)用。
在114處,可以將與驗(yàn)證有效的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給GPU。在一個(gè)實(shí)施方式中,工作線程可以調(diào)用圖形庫(kù)上的功能并在GPU中設(shè)定狀態(tài)。響應(yīng)于繪制調(diào)用,工作線程可以采用在繪制調(diào)用中提供的頂點(diǎn)并將這些頂點(diǎn)提供給GPU。在一個(gè)實(shí)施方式中,另一工作線程可以針對(duì)另一設(shè)定的圖形狀態(tài)同時(shí)執(zhí)行108-114,并將對(duì)應(yīng)的任務(wù)提交給同一 GPU或不同的GPU。如102-106中所述,可以對(duì)多個(gè)圖形狀態(tài)進(jìn)行排隊(duì),從而使得圖形子系統(tǒng)可以保持繁忙。因此,在將任務(wù)提交給GPU之后,在108-114處可以讀取并處理下一設(shè)定的圖形狀態(tài)。允許對(duì)圖形狀態(tài)的并行設(shè)定和處理設(shè)定的圖形狀態(tài)可以提供對(duì)于API語(yǔ)義的一組選擇和API語(yǔ)義的實(shí)施,API語(yǔ)義可以創(chuàng)建快速路徑操作模式,該快速路徑操作模式可以允許非阻塞發(fā)起GPU繪制。這樣的API在可以不具有對(duì)線程控制的直接支持的腳本環(huán)境中可能是有價(jià)值的。圖I的方法可以允許內(nèi)部工作線程繼續(xù)GPU狀態(tài)管理,而腳本執(zhí)行可以直接返回到用戶(hù)處理。腳本程序員可以享有交織處理的性能益處,而不必引入線程控制構(gòu)造或處理異步事件。此外,通過(guò)執(zhí)行狀態(tài)驗(yàn)證,代替錯(cuò)誤檢驗(yàn)和報(bào)告,仍可以保護(hù)安全性?,F(xiàn)在轉(zhuǎn)向圖2,其示出了用于調(diào)試模式的一個(gè)實(shí)施方式。盡管為了易于理解按照特定順序示出了這些塊,但可以使用其它順序。在某些實(shí)施方式中,圖2的方法可以包括相比示出的塊(諸如圖I的塊102-112)而言附加的(或更少的)塊。在202處,可以進(jìn)入調(diào)試模式,該調(diào)試模式可以允許同步繪制。在一個(gè)實(shí)施方式中,可以在腳本級(jí)別的繪制時(shí)間選擇調(diào)試模式。如204處所示,可以設(shè)定圖形狀態(tài)。在一個(gè)實(shí)施方式中,可以在進(jìn)入調(diào)試模式之后設(shè)定圖形模式,而在某些實(shí)施方式中,當(dāng)進(jìn)入調(diào)試模式時(shí)可以已經(jīng)設(shè)定了圖形模式。在任何情況下,當(dāng)選擇調(diào)試模式時(shí),不可以設(shè)定后續(xù)的圖形狀態(tài),直到GPU返回錯(cuò)誤狀態(tài)(其可以包括不存在錯(cuò)誤)。如此,可以阻止腳本進(jìn)一步操作。如在206處所示,可以對(duì)設(shè)定的圖形狀態(tài)進(jìn)行驗(yàn)證。在一個(gè)實(shí)施方式中,可以在將任務(wù)提交給GPU之前,對(duì)圖形狀態(tài)進(jìn)行驗(yàn)證(如在塊112中那樣)。在一個(gè)實(shí)施方式中,以腳本語(yǔ)言進(jìn)行驗(yàn)證,而在某些實(shí)施方式中,可以在GPU處執(zhí)行驗(yàn)證。驗(yàn)證狀態(tài)塊失敗可以導(dǎo)致錯(cuò)誤異常并且可以在塊208處觸發(fā)錯(cuò)誤通知。在208處,可以報(bào)告錯(cuò)誤狀態(tài)。如在206處所提到的,驗(yàn)證狀態(tài)塊失敗可以觸發(fā)錯(cuò)誤通知。此外,針對(duì)錯(cuò)誤可以監(jiān)測(cè)圖形流水線。在調(diào)試模式中,可以同步地執(zhí)行狀態(tài)設(shè)定和繪制,從容使得使用序列ID標(biāo)識(shí)異步任務(wù)或者標(biāo)識(shí)狀態(tài)可以不是必需的。因此,在同步調(diào)試模式中,可以在將結(jié)果傳遞回客戶(hù)端之前完成渲染。在其它實(shí)施方式中,可以引入用于管理消息序列ID的框架來(lái)異步地檢測(cè)和報(bào)告錯(cuò)誤。在這樣的實(shí)施方式中,可以針對(duì)通過(guò)客戶(hù)端/腳本語(yǔ)言做出的每個(gè)API調(diào)用而創(chuàng)建序列ID。每個(gè)序列ID可以與相應(yīng)的狀態(tài)塊相關(guān)聯(lián)。如果在檢驗(yàn)驗(yàn)證階段處確定錯(cuò)誤,則錯(cuò)誤可以包括id。在客戶(hù)端側(cè),序列ID的列表可以映射回引起錯(cuò)誤的操作。如在210處所示,可以將與設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給GPU。在一個(gè)實(shí)施方式中,腳本語(yǔ)言可以發(fā)起繪制調(diào)用。腳本語(yǔ)言可以調(diào)用圖形庫(kù)上的功能并且直接在GPU中設(shè)定狀態(tài)。響應(yīng)于繪制調(diào)用,腳本可以將繪制調(diào)用中的頂點(diǎn)提供給GPU。當(dāng)完成任務(wù)時(shí),腳本語(yǔ)言可以在204處設(shè)定下一圖形狀態(tài)。在一個(gè)實(shí)施方式中,GPU可以將任何圖形流水線錯(cuò)誤報(bào)告回腳本語(yǔ)言。選擇圖2的調(diào)試模式可以允許腳本程序員退出圖I的執(zhí)行模式并查看驗(yàn)證錯(cuò)誤和/或圖形流水線錯(cuò)誤。提供可以有助于高性能圖形的默認(rèn)模式,還允許選擇調(diào)試模式,由此可以為腳本程序員提供很大程度的靈活性。圖3圖示了對(duì)內(nèi)容的并行化定義和顯示的一個(gè)實(shí)施方式的示例。圖3示出了通過(guò)圖形應(yīng)用編程接口(API) 304進(jìn)入的腳本環(huán)境302。腳本環(huán)境302可以是ActionScript 3、JavaScript或Microsoft. NET腳本環(huán)境之類(lèi)的腳本環(huán)境。腳本環(huán)境可以提供單線程編程模型。圖形API 304可以是圖形上下文的進(jìn)入點(diǎn)。例如,圖形API 304可以在程序設(shè)置時(shí)創(chuàng)建或初始化。圖形API 304的實(shí)現(xiàn)可以稱(chēng)為Contex3D??蛻?hù)端側(cè)狀態(tài)可以通過(guò)Contex3D對(duì)象來(lái)匯聚和管理。在一個(gè)實(shí)施方式中,在初始化時(shí),可以定義程序并分配給圖形API 304以指示GPU318如何處理頂點(diǎn)。在一個(gè)實(shí)施方式中,圖形API 304可以設(shè)定圖形狀態(tài)。示例圖形狀態(tài)可以包括setProgramO、setProgramConstantsFromVector ()、setProgramConstantsfromMatrix ()、setVertexBufferAt()、setBlendFactors ()、setColorMask ()、setDepthTest ()、setTextureAt ()、s etRenderToTexture ()、s etRenderT oB ackBuf f er () > s etCullingO、setStenc i IAct ions ()、setStencilReferenceValue ()、setScissorRectangle ()等。如圖 3 中所不,可以在狀態(tài)緩沖器的狀態(tài)塊310-316中設(shè)定圖形狀態(tài)。在所示示例中,狀態(tài)緩沖器包括4個(gè)單元或塊。如上所述,緩沖器可以包括4個(gè)、8個(gè)、16個(gè)、32個(gè)、64個(gè)等的單元。在一個(gè)實(shí)施方式中,緩沖器可以駐留在CPU系統(tǒng)存儲(chǔ)器中。作為對(duì)圖形狀態(tài)進(jìn)行設(shè)定的示例,可以通過(guò)圖形API 304接收輸入以創(chuàng)建紋理對(duì)象,該紋理對(duì)象可以使用setTextureAt調(diào)用來(lái)分配(調(diào)用的“At”部分可以指代先前設(shè)定的程序部分)。setTextureAt狀態(tài)可以在狀態(tài)塊310-316之一中設(shè) 定。在一個(gè)實(shí)施方式中,腳本環(huán)境302可以對(duì)由圖形API 304接收到的輸入執(zhí)行瑣碎的驗(yàn)證。例如,腳本語(yǔ)言可以檢驗(yàn)無(wú)效的紋理尺寸、NULL所需參數(shù)等。圖形API 304繼而可以提供兩個(gè)繪制306調(diào)用clear ()和drawTriangles (),這兩個(gè)調(diào)用通過(guò)將日期傳遞給圖形流水線而發(fā)起繪制。對(duì)繪制306的調(diào)用可以對(duì)繪制任務(wù)進(jìn)行排隊(duì)并允許腳本環(huán)境302返回到其它任務(wù)。對(duì)繪制任務(wù)進(jìn)行排隊(duì)可以包括計(jì)算頂點(diǎn)的列表,在頂點(diǎn)緩沖器中存儲(chǔ)頂點(diǎn),以及調(diào)用 setVertexBufferAt。在上述 setTextureAt/setVertexBufferAt 不例中,此時(shí)狀態(tài)可以包括如何解譯頂點(diǎn)、應(yīng)用到頂點(diǎn)的紋理以及頂點(diǎn)本身。因此,腳本環(huán)境302可以自由返回到幾何處理任務(wù),而線程308拾取繪制任務(wù)。因此,線程308對(duì)于腳本環(huán)境302和圖形API 304可以是透明的。PAUSE線程308可以檢查狀態(tài)塊,狀態(tài)310-316,并確定自前一次檢查起哪個(gè)狀態(tài)對(duì)于GPU 318而言是新的。如果多個(gè)狀態(tài)(例如狀態(tài)314和316)是新的,則線程308可以查找指示用于處理的排序或優(yōu)先級(jí)的指針。線程308然后可以驗(yàn)證與排隊(duì)的繪制任務(wù)對(duì)應(yīng)的狀態(tài)310-316。這可以幫助確保VertexBuffer定義和訪問(wèn)它們的著色器程序之間的兼容性。此外,在遞送給圖形子系統(tǒng)之前對(duì)數(shù)據(jù)的驗(yàn)證可以通過(guò)使得更難以將任意用戶(hù)數(shù)據(jù)傳遞給圖形子系統(tǒng)而增強(qiáng)安全性。驗(yàn)證失敗可以不觸發(fā)向圖形API 304的錯(cuò)誤通知。在一個(gè)實(shí)施方式中,如果驗(yàn)證失敗,則可以跳過(guò)與驗(yàn)證失敗對(duì)應(yīng)的狀態(tài)310-316,并且從不提供給GPU 318。相反,可以檢驗(yàn)隊(duì)列中的下一狀態(tài)的有效性,并且如果有效則繼續(xù)進(jìn)行。線程 308可以調(diào)用圖形庫(kù)上的功能并向GPU 318提供新的狀態(tài)(圖3中的狀態(tài)316)。響應(yīng)于繪制調(diào)用,線程308可以采用在繪制調(diào)用中提供的頂點(diǎn)并將頂點(diǎn)提供給GPU 318。那時(shí),GPU 318可以執(zhí)行繪制任務(wù),例如繪制三角形。在驗(yàn)證狀態(tài)310-316期間,并且在線程308向GPU 318提供狀態(tài)時(shí), 腳本環(huán)境302和圖形API 304可以在狀態(tài)塊310-316中繼續(xù)設(shè)定新的圖形狀態(tài)。換言之,線程308可以讀取一個(gè)狀態(tài)塊310-316,并且并行地,圖形API 304可以設(shè)定不同的狀態(tài)塊310-316。一種機(jī)制可以防止同一狀態(tài)塊310-316被同時(shí)讀取/寫(xiě)入。允許腳本程序員簡(jiǎn)單更新圖形狀態(tài),而線程讀取該狀態(tài)并向GPU施加改變,可以允許單線程腳本環(huán)境中的線程行為,而無(wú)需使用或者要求腳本語(yǔ)言中的線程構(gòu)造。這可以帶來(lái)顯著的性能增益。例如,如果腳本語(yǔ)言快速完成其處理并回收以設(shè)定附加的圖形狀態(tài), 則可以按照繪制任務(wù)對(duì)狀態(tài)塊進(jìn)行排隊(duì)并順序處理。運(yùn)行隊(duì)列的存在可以確保圖形子系統(tǒng)不會(huì)空閑等待數(shù)據(jù)。而且由于腳本語(yǔ)言可以在等待錯(cuò)誤報(bào)告的情況下不阻塞繪制任務(wù),因此針對(duì)稍后的異步處理可以繼續(xù)設(shè)定圖形狀態(tài)。作為結(jié)果,可以在腳本級(jí)別上以及在GPU 級(jí)別上使空閑時(shí)間最小化。圖4圖示了內(nèi)容的并行化定義和顯示的一個(gè)實(shí)施方式的示例。如圖所示,圖4的底部可以為正常/默認(rèn)模式,該正常/默認(rèn)模式可以按照與圖3類(lèi)似的方式操作。通過(guò)圖形API 404,可以在腳本環(huán)境402級(jí)別上選擇調(diào)試模式。為易于圖示,圖4示出了在圖4的上部(調(diào)試模式)和下部(正常/默認(rèn)模式)兩者中的圖形API 404,當(dāng)在一個(gè)實(shí)施方式中,其可以為同一圖形API 404。通常,在圖形API 404下游的行為在調(diào)試模式和正常模式之間可以不同。正常模式在上文圖3中進(jìn)行了描述。在腳本環(huán)境402/圖形API 404處可以選擇調(diào)試模式。與正常模式中的圖形API 404相比,調(diào)試模式中的圖形API 404可以包括不同的布局(類(lèi)似外觀)并且包含不同的選項(xiàng)。如在正常模式中,可以在狀態(tài)塊406中設(shè)定圖形狀態(tài)。在圖4的調(diào)試部分中僅示出了一個(gè)狀態(tài)塊406,然而,正常模式的相同狀態(tài)塊416-422在調(diào)試模式中可用。設(shè)定和讀取狀態(tài)塊可以順序和串行進(jìn)行,與正常模式的并行能力相反。因此,在一個(gè)實(shí)施方式中,即使當(dāng)多個(gè)狀態(tài)塊416-422可用于讀取和寫(xiě)入時(shí),圖形API 404 一次也只能寫(xiě)入和讀取狀態(tài)塊 416-422中的一個(gè)。在調(diào)試模式中,在GPU 408中可以在繪制時(shí)間進(jìn)行驗(yàn)證。驗(yàn)證狀態(tài)塊408失敗可以導(dǎo)致錯(cuò)誤異常。該錯(cuò)誤異??梢韵蚧靥峁┙o腳本環(huán)境402和圖形API 404。在GPU 408處驗(yàn)證期間,腳本環(huán)境402和圖形API 404可以被阻止設(shè)定后續(xù)的圖形狀態(tài)406,直到GPU408 完成執(zhí)行繪制任務(wù)或報(bào)告錯(cuò)誤。因此,在一個(gè)實(shí)施方式中,在腳本環(huán)境402可以繼續(xù)進(jìn)行進(jìn)一步操作之前,GPU 408可以檢驗(yàn)任何錯(cuò)誤并報(bào)告給腳本環(huán)境402。在備選的所公開(kāi)的實(shí)施方式中,可以引入用于管理消息序列ID的框架以檢測(cè)和報(bào)告錯(cuò)誤。這樣的框架可以實(shí)現(xiàn)異步繪制方法,如在正常/默認(rèn)模式中,而且還包括檢驗(yàn)和報(bào)告錯(cuò)誤的能力。前述調(diào)試模式可以允許繪制方法同步,這可以便于錯(cuò)誤的報(bào)告。另外,調(diào)試模式可選擇為使得默認(rèn)模式可以允許高性能和并行化GPU繪制,仍允許低開(kāi)銷(xiāo)方式的程序員調(diào)試能力。示例件系統(tǒng)如這里所述的狀態(tài)設(shè)定模塊、繪制模塊和/或各種并行定義和顯示內(nèi)容的技術(shù)的實(shí)施方式可以在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上執(zhí)行,該一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以與各種其他設(shè)備進(jìn)行交互。一種這樣的計(jì)算機(jī)系統(tǒng)通過(guò)圖5示出。在不同的實(shí)施方式中,計(jì)算機(jī)系統(tǒng)500可以為各種類(lèi)型的設(shè)備中的任一個(gè),包括但不限于個(gè)人計(jì)算機(jī)系統(tǒng)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)或上網(wǎng)本計(jì)算機(jī)、大型計(jì)算機(jī)系統(tǒng)、手持計(jì)算機(jī)、工作站、網(wǎng)絡(luò)計(jì)算 機(jī)、相機(jī)、機(jī)頂盒、移動(dòng)設(shè)備、消費(fèi)類(lèi)設(shè)備、視頻游戲機(jī)、手持視頻游戲設(shè)備、應(yīng)用服務(wù)器、存儲(chǔ)設(shè)備、諸如開(kāi)關(guān)、調(diào)制解調(diào)器、路由器之類(lèi)的外圍設(shè)備,或者一般而言為任何類(lèi)型的計(jì)算或電子設(shè)備。在所圖不的實(shí)施方式中,計(jì)算機(jī)系統(tǒng)500包括一個(gè)或多個(gè)處理器510,該一個(gè)或多個(gè)處理器510經(jīng)由輸入/輸出(I/O)接口 530與系統(tǒng)存儲(chǔ)器520耦合。計(jì)算機(jī)系統(tǒng)500進(jìn)一步包括與I/O接口 530耦合的網(wǎng)絡(luò)接口 540和諸如光標(biāo)控制設(shè)備560、鍵盤(pán)570和顯示器580之類(lèi)的一個(gè)或多個(gè)輸入/輸出設(shè)備550。在某些實(shí)施方式中,預(yù)期可以使用計(jì)算機(jī)系統(tǒng)500的單個(gè)實(shí)例實(shí)現(xiàn)實(shí)施方式,而在其它實(shí)施方式中,可以將多個(gè)這樣的系統(tǒng)或者多個(gè)構(gòu)成計(jì)算機(jī)系統(tǒng)500的節(jié)點(diǎn)配置為主控實(shí)施方式的不同部分或?qū)嵗?。例如,在一個(gè)實(shí)施方式中,某些元件可以經(jīng)由計(jì)算機(jī)系統(tǒng)500的一個(gè)或多個(gè)節(jié)點(diǎn)來(lái)實(shí)現(xiàn),所述計(jì)算機(jī)系統(tǒng)500的一個(gè)或多個(gè)節(jié)點(diǎn)與那些實(shí)現(xiàn)其他元件的節(jié)點(diǎn)不同。在各種實(shí)施方式中,計(jì)算機(jī)系統(tǒng)500可以為包括一個(gè)處理器510的單處理器系統(tǒng)或者包括若干處理器510 (例如兩個(gè)、四個(gè)、八個(gè)或其它合適數(shù)目)的多處理器系統(tǒng)。處理器510可以為能夠執(zhí)行指令的任何合適的處理器。例如,在各種實(shí)施方式中,處理器510可以為通用或嵌入的處理器,實(shí)現(xiàn)各種指令集架構(gòu)(ISA)中的任一個(gè),指令集架構(gòu)諸如x86、PowerPC、SPARC或MIPS ISA或者任何其它合適ISA。在多處理器系統(tǒng)中,每個(gè)處理器510可以共同地但不是必需地實(shí)現(xiàn)同一 ISA。在某些實(shí)施方式中,至少一個(gè)處理器510可以為GPU。GPU可以被看作用于個(gè)人計(jì)算機(jī)、工作站、游戲機(jī)或其它計(jì)算或電子設(shè)備的專(zhuān)用圖形渲染設(shè)備?,F(xiàn)代GPU在操控和顯示計(jì)算機(jī)圖形上可以是非常有效的,并且對(duì)于大量復(fù)雜圖形算法而言,它們的高度并行結(jié)構(gòu)可以使它們比通常的CPU更有效。例如,圖形處理器可以按照如下方式實(shí)現(xiàn)大量圖形基本操作,該方式使得執(zhí)行這些圖形基本操作比利用主機(jī)中央處理單元(CPU)直接繪制到屏幕快得多。在各種實(shí)施方式中,這里公開(kāi)的圖像處理方法可以至少部分地通過(guò)程序指令實(shí)現(xiàn),該程序指令被配置用于在這種GPU之一上執(zhí)行或者在這種GPU的兩個(gè)或多個(gè)上并行執(zhí)行。處理器和/或GPU可以實(shí)現(xiàn)允許編程者調(diào)用GPU功能的一個(gè)或多個(gè)API。合適的GPU可以從諸如 NVIDIA Corporation、ATI Technologies (AMD)等的供應(yīng)商購(gòu)買(mǎi)。諸如一個(gè)或多個(gè)處理器510的GPU可以按照大量不同的物理形式實(shí)現(xiàn)。例如,GPU可以采用專(zhuān)用圖形卡、集成圖形方案和/或混合方案的形式。專(zhuān)用圖形卡可以為3D圖形卡。GPU 510可以借助于諸如PCI Express圖形或加速圖形端口(AGP)之類(lèi)的擴(kuò)展槽與母板對(duì)接,并且因而可以相對(duì)容易地更換或更新(假設(shè)母板能夠支持該更新)。然而,專(zhuān)用GPU 不是必須可移除的,也不是必須按照標(biāo)準(zhǔn)方式與母板對(duì)接。術(shù)語(yǔ)“專(zhuān)用”指代硬件圖形方案可以具有專(zhuān)用于圖形使用的RAM的事實(shí),而不是指代圖形方案是否可移除或可更換。用于便攜式計(jì)算機(jī)的專(zhuān)用GPU可能由于尺寸和重量約束而通過(guò)非標(biāo)準(zhǔn)的且通常專(zhuān)有的插槽對(duì)接。即使這種端口與它們的對(duì)等體在物理上不可互換,但它們?nèi)匀豢梢员豢醋鰽GP或PCI express。集成圖形方案或共享圖形方案是利用計(jì)算機(jī)的系統(tǒng)RAM的一部分而不是專(zhuān)用圖形存儲(chǔ)器的圖形處理器。例如,現(xiàn)代臺(tái)式母板通常包括集成圖形方案并且具有可用于稍后添加專(zhuān)用圖形卡的擴(kuò)展槽。由于GPU可以是極端存儲(chǔ)器集中式的,集成方案發(fā)現(xiàn)自身與CPU 關(guān)于已經(jīng)變慢的系統(tǒng)RAM競(jìng)爭(zhēng),因?yàn)榧煞桨覆痪哂袑?zhuān)用視頻存儲(chǔ)器。例如,系統(tǒng)RAM可以體驗(yàn)在2GB/s和8GB/s之間的帶寬,而大多數(shù)專(zhuān)用GPU享有從15GB/s到30GB/s的帶寬?;旌戏桨敢部梢耘c系統(tǒng)存儲(chǔ)器共享存儲(chǔ)器,但可以具有比分立或?qū)S脠D形卡更少量的板上存儲(chǔ)器,從而構(gòu)成系統(tǒng)RAM的高時(shí)延。圖形處理單元510與計(jì)算機(jī)系統(tǒng)500的其余部分之間傳送的數(shù)據(jù)可以通過(guò)圖形卡槽或諸如圖5的I/O接口 530之類(lèi)的其它接口行進(jìn)。注意,在各種實(shí)施方式中,程序指令525可以被配置為將圖形應(yīng)用實(shí)現(xiàn)為單機(jī)應(yīng)用或者實(shí)現(xiàn)為另一圖形應(yīng)用或圖形庫(kù)的模塊。例如,在一個(gè)實(shí)施方式中,程序指令525可以被配置為實(shí)現(xiàn)諸如涂繪、編輯、公布、照相、游戲、動(dòng)畫(huà)和/或其它應(yīng)用的圖形應(yīng)用,并且可以被配 置為提供這里描述的功能性。在另一實(shí)施方式中,程序指令525可以被配置為在由 GPU 510和/或處理器510上執(zhí)行的另一圖形應(yīng)用調(diào)用的一個(gè)或多個(gè)功能或模塊(例如狀態(tài)設(shè)定模塊或繪制模塊)中實(shí)現(xiàn)這里描述的技術(shù)。這些模塊可以是可在CPU 510和/或 GPU510上執(zhí)行用于使計(jì)算機(jī)系統(tǒng)500提供這里描述的功能性。圖形應(yīng)用可以在各種實(shí)施方式中使用任何期望的編程語(yǔ)言、腳本語(yǔ)言或編程語(yǔ)言和/或腳本語(yǔ)言的組合(例如C,C++, C#, ActiveScript, Java , Perl等)來(lái)實(shí)現(xiàn)。例如,在一個(gè)實(shí)施方式中,圖形應(yīng)用可以是基于JAVA的,而在另一實(shí)施方式中,它可以是使用ActiveScript 3實(shí)現(xiàn)的。在其它實(shí)施方式中,圖形應(yīng)用可以是使用特別用于開(kāi)發(fā)由專(zhuān)用圖形硬件(諸如GPU)執(zhí)行的程序的專(zhuān)用圖形語(yǔ)言實(shí)現(xiàn)的。此外,圖形應(yīng)用可以具體實(shí)施于專(zhuān)門(mén)分派為供圖形處理器使用的存儲(chǔ)器(諸如在包括圖形處理器的圖形板上的存儲(chǔ)器)上。在各種實(shí)施方式中,程序指令525還可以被配置為渲染圖像并將圖像作為操作的輸出呈現(xiàn)在一個(gè)或多個(gè)顯示器上,和/或被配置為將圖像數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器520和/或外部存儲(chǔ)設(shè)備中。系統(tǒng)存儲(chǔ)器520可以被配置為存儲(chǔ)由處理器510可訪問(wèn)的程序指令和/或數(shù)據(jù)。 在各種實(shí)施方式中,系統(tǒng)存儲(chǔ)器520可以使用任何合適的存儲(chǔ)器技術(shù)實(shí)現(xiàn),諸如靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、同步動(dòng)態(tài)RAM(SDRAM)、非易失性/快閃型存儲(chǔ)器或任何其它類(lèi)型的存儲(chǔ)器。在所圖示的實(shí)施方式中,實(shí)現(xiàn)期望功能的程序指令和數(shù)據(jù)(諸如上述針對(duì)狀態(tài)設(shè)定模塊和繪制模塊的實(shí)施方式的那些程序指令和數(shù)據(jù))被示出為存儲(chǔ)在系統(tǒng)存儲(chǔ)器520中分別作為程序指令525和數(shù)據(jù)存儲(chǔ)535。在其它實(shí)施方式中,可以在不同類(lèi)型的計(jì)算機(jī)可訪問(wèn)的介質(zhì)或與系統(tǒng)存儲(chǔ)器520或計(jì)算機(jī)系統(tǒng)500分離的類(lèi)似介質(zhì)上接收、發(fā)送或存儲(chǔ)程序指令和/或數(shù)據(jù)。一般來(lái)講,計(jì)算機(jī)可訪問(wèn)的介質(zhì)可以包括經(jīng)由I/O接口 530耦合到計(jì)算機(jī)系統(tǒng)500的存儲(chǔ)介質(zhì)或存儲(chǔ)器介質(zhì),諸如磁或光學(xué)介質(zhì),例如磁盤(pán)或CD/DVD-ROM。經(jīng)由計(jì)算機(jī)可訪問(wèn)的介質(zhì)存儲(chǔ)的程序指令和數(shù)據(jù)可以通過(guò)傳輸介質(zhì)或諸如電信號(hào)、電磁信號(hào)或數(shù)字信號(hào)之類(lèi)的信號(hào) 來(lái)傳輸,所述信號(hào)可以經(jīng)由諸如網(wǎng)絡(luò)和/或無(wú)線鏈路之類(lèi)的通信介質(zhì)傳送,諸如可以經(jīng)由網(wǎng)絡(luò)接口 540實(shí)現(xiàn)。在一個(gè)實(shí)施方式中,I/O接口 530可以被配置為協(xié)調(diào)設(shè)備中的處理器510、系統(tǒng)存儲(chǔ)器520和任何外圍設(shè)備之間的I/O業(yè)務(wù)量,外圍設(shè)備包括網(wǎng)絡(luò)接口 540或其它外圍接口,諸如輸入/輸出設(shè)備550。在某些實(shí)施方式中,I/O接口 530可以執(zhí)行任何必要的協(xié)議、定時(shí)或其它數(shù)據(jù)轉(zhuǎn)換,以將來(lái)自一個(gè)組件(例如系統(tǒng)存儲(chǔ)器520)的數(shù)據(jù)信號(hào)轉(zhuǎn)換成適于由另一組件(例如處理器510)使用的格式。在某些實(shí)施方式中,I/O接口 530可以包括對(duì)通過(guò)各種類(lèi)型的外圍總線附接的設(shè)備的支持,諸如外圍組件互連(PCI)總線標(biāo)準(zhǔn)或通用串行總線(USB)標(biāo)準(zhǔn)的變體。在某些實(shí)施方式中,I/O接口 530的功能可以分裂為兩個(gè)或多個(gè)分離組件,諸如北橋和南橋。此外,在某些實(shí)施方式中,I/O接口 530的某些或者所有功能性,諸如與系統(tǒng)存儲(chǔ)器520的對(duì)接,可以直接并入處理器510中。網(wǎng)絡(luò)接口 540可以被配置為允許數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)500與附接到網(wǎng)絡(luò)的其它設(shè)備(諸如其它計(jì)算機(jī)系統(tǒng))之間或者在計(jì)算機(jī)系統(tǒng)500的節(jié)點(diǎn)之間進(jìn)行交換。在各種實(shí)施方式中,網(wǎng)絡(luò)接口 540可以經(jīng)由如下方式支持通信有線或無(wú)線通用數(shù)據(jù)網(wǎng)絡(luò),諸如任何合適類(lèi)型的例如以太網(wǎng)網(wǎng)絡(luò);電信/電話網(wǎng)絡(luò),諸如模擬語(yǔ)音網(wǎng)絡(luò)或數(shù)字光纖通信網(wǎng)絡(luò);存儲(chǔ)區(qū)域網(wǎng)絡(luò),諸如光纖通道SAN ;或者任何其它合適類(lèi)型的網(wǎng)絡(luò)和/或協(xié)議。在某些實(shí)施方式中,輸入/輸出設(shè)備550可以包括一個(gè)或多個(gè)顯不器終端、鍵盤(pán)、小鍵盤(pán)、觸摸板、掃描設(shè)備、語(yǔ)音或光學(xué)標(biāo)識(shí)設(shè)備或適合于通過(guò)一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)500輸入或獲取數(shù)據(jù)的任何其它設(shè)備。多個(gè)輸入/輸出設(shè)備550可以存在于計(jì)算機(jī)系統(tǒng)500中或者可以分布在計(jì)算機(jī)系統(tǒng)500的各種節(jié)點(diǎn)上。在某些實(shí)施方式中,類(lèi)似的輸入/輸出設(shè)備可以與計(jì)算機(jī)系統(tǒng)500分離,并且可以通過(guò)有線或無(wú)線連接(諸如在網(wǎng)絡(luò)接口 540上)與計(jì)算機(jī)系統(tǒng)500的一個(gè)或多個(gè)節(jié)點(diǎn)交互。如圖5所示,存儲(chǔ)器520可以包括程序指令525和數(shù)據(jù)存儲(chǔ)535,該程序指令525被配置為實(shí)現(xiàn)這里描述的狀態(tài)設(shè)定模塊和繪制模塊的實(shí)施方式,該數(shù)據(jù)存儲(chǔ)535包括由程序指令525可訪問(wèn)的各種數(shù)據(jù)。在一個(gè)實(shí)施方式中,程序指令525可以包括如上述圖中所示的狀態(tài)設(shè)定模塊和繪制模塊的實(shí)施方式的軟件單元。數(shù)據(jù)存儲(chǔ)535可以包括可在實(shí)施方式中使用的數(shù)據(jù)。在其它實(shí)施方式中,可以包括其它或者不同的軟件單元和數(shù)據(jù)。本領(lǐng)域技術(shù)人員將明白,計(jì)算機(jī)系統(tǒng)500僅是說(shuō)明性的,并不旨在于限制這里描述的狀態(tài)設(shè)定模塊和繪制模塊的范圍。具體地,計(jì)算機(jī)系統(tǒng)和設(shè)備可以包括能夠執(zhí)行所指出功能的軟件或硬件的任意組合,包括計(jì)算機(jī)、個(gè)人計(jì)算機(jī)系統(tǒng)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)或上網(wǎng)本計(jì)算機(jī)、大型計(jì)算機(jī)系統(tǒng)、手持計(jì)算機(jī)、工作站、網(wǎng)絡(luò)計(jì)算機(jī)、相機(jī)、機(jī)頂盒、移動(dòng)設(shè)備、網(wǎng)絡(luò)設(shè)備、因特網(wǎng)工具、PDA、無(wú)線電話、尋呼機(jī)、消費(fèi)類(lèi)設(shè)備、視頻游戲機(jī)、手持視頻游戲設(shè)備、應(yīng)用服務(wù)器、存儲(chǔ)設(shè)備、諸如開(kāi)關(guān)、調(diào)制解調(diào)器、路由器之類(lèi)的外圍設(shè)備、或者一般而言的任何類(lèi)型的計(jì)算或電子設(shè)備。計(jì)算機(jī)系統(tǒng)500還可以連接到未示出的其它設(shè)備,或者取而代之,可以作為單機(jī)系統(tǒng)操作。此外,在某些實(shí)施方式中,由所示出的組件提供的功能性可以組合在更少的組件中或者分布在附加的組件中。類(lèi)似地,在某些實(shí)施方式中,可以不提供所示出的組件中的某些組件的功能性,并且/或者其他附加的功能性可以為可用的。本領(lǐng)域技術(shù)人員還將明白,盡管將各種項(xiàng)例示為存儲(chǔ)在存儲(chǔ)器中或者在使用時(shí)進(jìn)行存儲(chǔ),但這些項(xiàng)或者它們的一部分可以在存儲(chǔ)器和其它存儲(chǔ)設(shè)備之間傳送用于存儲(chǔ)器管理和數(shù)據(jù)完整性的目的。備選地,在其它實(shí)施方式中,某些或者全部軟件組件可以在另一設(shè)備上的存儲(chǔ)器中執(zhí)行,并且經(jīng)由計(jì)算機(jī)間通信與所圖示的計(jì)算機(jī)系統(tǒng)通信。某些或者全部系統(tǒng)組件或者數(shù)據(jù)結(jié)構(gòu)也可以存儲(chǔ)(例如作為指令或構(gòu)造數(shù)據(jù))在將通過(guò)適當(dāng)驅(qū)動(dòng)來(lái)讀取的計(jì)算機(jī)可訪問(wèn)介質(zhì)或者便攜式設(shè)備上(上面描述了其各種示例)。在某些實(shí)施方式中,存儲(chǔ)在與計(jì)算機(jī)系統(tǒng)500分離的計(jì)算機(jī)可訪問(wèn)介質(zhì)上的指令經(jīng)由傳輸介質(zhì)或諸如經(jīng)由諸如網(wǎng)絡(luò)和/或無(wú)線鏈路之類(lèi)的通信介質(zhì)傳送的電信號(hào)、電磁信號(hào)或數(shù)字信號(hào)之類(lèi)的信號(hào)可以傳輸?shù)接?jì)算機(jī)系統(tǒng)500。各種實(shí)施方式可以進(jìn)一步包括接收、發(fā)送或存儲(chǔ)根據(jù)前面的描述在計(jì)算機(jī)可訪問(wèn)介質(zhì)上實(shí)現(xiàn)的指令和/或數(shù)據(jù)。因此,本公開(kāi)可以在其它計(jì)算機(jī)系統(tǒng)配置的情況下實(shí)施。益論各種實(shí)施方式可以進(jìn)一步包括接收、發(fā)送或存儲(chǔ)根據(jù)前面的描述在計(jì)算機(jī)可訪問(wèn)介質(zhì)上實(shí)現(xiàn)的指令 和/或數(shù)據(jù)。一般來(lái)講,計(jì)算機(jī)可訪問(wèn)介質(zhì)可以包括存儲(chǔ)介質(zhì)或存儲(chǔ)器介質(zhì),諸如磁或光學(xué)介質(zhì),例如磁盤(pán)或DVD/CD-R0M、諸如RAM (例如SDRAM、DDR、RDRAM、SRAM 等)、R0M等的易失性或非易失性介質(zhì)以及傳輸介質(zhì)或諸如經(jīng)由諸如網(wǎng)絡(luò)和/或無(wú)線鏈路之類(lèi)的通信介質(zhì)傳送的諸如電信號(hào)、電磁信號(hào)或數(shù)字信號(hào)之類(lèi)的信號(hào)。圖中所圖示的以及這里描述的各種方法代表方法的示例性實(shí)施方式。這些方法可以在軟件、硬件或其組合中實(shí)現(xiàn)。方法的順序可以改變,并且可以對(duì)各種元素進(jìn)行添加、重新排序、組合、省略、修改等。如受益于本公開(kāi)的本領(lǐng)域技術(shù)人員將顯而易見(jiàn)的,可以進(jìn)行各種修改和變化。本公開(kāi)旨在于涵蓋所有這樣的修改和變化,并因此上述描述應(yīng)視為說(shuō)明性的而非限制性意義。
權(quán)利要求
1.一種方法,包括 在腳本環(huán)境中 設(shè)定圖形狀態(tài); 將與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給圖形處理單元(GPU);以及 在無(wú)需等待對(duì)由所述GPU成功完成所述任務(wù)的指示的情況下,設(shè)定另一圖形狀態(tài)。
2.根據(jù)權(quán)利要求I所述的方法,其中所述提交所述任務(wù)通過(guò)所述腳本環(huán)境的工作線程執(zhí)行。
3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括,在所述提交所述任務(wù)之前,所述工作線程確定所述設(shè)定的圖形狀態(tài)的有效性,其中所述確定包括將所述設(shè)定的圖形狀態(tài)的數(shù)據(jù)與所述設(shè)定的圖形狀態(tài)的預(yù)期數(shù)據(jù)相比較。
4.根據(jù)權(quán)利要求3所述的方法,其中設(shè)定所述圖形狀態(tài)包括將所述圖形狀態(tài)存儲(chǔ)在緩沖器中,并且其中確定所述設(shè)定的圖形狀態(tài)的有效性包括從所述緩沖器中讀取,其中所述緩沖器被配置為同時(shí)在所述緩沖器的不同塊中進(jìn)行讀取和存儲(chǔ)。
5.根據(jù)權(quán)利要求4所述的方法,其中所述緩沖器駐留在執(zhí)行所述腳本環(huán)境的中央處理單元(CPU)中,并且其中設(shè)定所述圖形狀態(tài)包括以下腳本線程 將所述圖形狀態(tài)存儲(chǔ)在所述緩沖器的一個(gè)塊中;以及 將所述另一圖形狀態(tài)存儲(chǔ)在所述緩沖器的另一個(gè)塊中;以及 其中所述工作線程從所述緩沖器的所述一個(gè)塊中執(zhí)行對(duì)所述設(shè)定的圖形狀態(tài)的所述讀取,與此同時(shí),所述腳本線程在所述緩沖器的所述另一個(gè)塊中執(zhí)行對(duì)所述另一圖形狀態(tài)的所述存儲(chǔ)。
6.根據(jù)權(quán)利要求3所述的方法,其中確定所述設(shè)定的圖形狀態(tài)的有效性包括 讀取所述設(shè)定的圖形狀態(tài)的數(shù)據(jù); 確定所述設(shè)定的圖形狀態(tài)的所述數(shù)據(jù)不同于導(dǎo)致有效性檢驗(yàn)失敗的所述設(shè)定的圖形狀態(tài)的預(yù)期數(shù)據(jù);以及 跳過(guò)將與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的所述任務(wù)提交給所述GPU。
7.根據(jù)權(quán)利要求6所述的方法,其中跳過(guò)提交所述任務(wù)包括在無(wú)需報(bào)告有效性檢驗(yàn)失敗的情況下,所述工作線程讀取另一設(shè)定的圖形狀態(tài)。
8.根據(jù)權(quán)利要求I所述的方法,其中所述腳本環(huán)境提供單線程編程模型。
9.根據(jù)權(quán)利要求I所述的方法,其中所述圖形狀態(tài)是對(duì)3D內(nèi)容顯示的定義。
10.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括,在所述腳本環(huán)境中 接收用于進(jìn)入調(diào)試模式的輸入,其中進(jìn)入所述調(diào)試模式阻止設(shè)定后續(xù)圖形狀態(tài),直到接收到錯(cuò)誤或完成與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的所述任務(wù); 確定所述設(shè)定的圖形狀態(tài)是無(wú)效的; 報(bào)告錯(cuò)誤,其中所述錯(cuò)誤對(duì)應(yīng)于所述設(shè)定的圖形狀態(tài)的驗(yàn)證失?。灰约? 設(shè)定下一圖形狀態(tài)。
11.根據(jù)權(quán)利要求10所述的方法,進(jìn)一步包括在所述腳本環(huán)境中 確定所述下一圖形狀態(tài)是有效的; 將與所述設(shè)定的下一圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給所述GPU ; 等待對(duì)由所述GPU成功完成與所述設(shè)定的下一圖形狀態(tài)對(duì)應(yīng)的所述任務(wù)的指示;以及設(shè)定另一下一圖形狀態(tài)。
12.—種非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)程序指令,其中所述程序指令可由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn)以下操作 在腳本環(huán)境中 設(shè)定圖形狀態(tài); 將與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給圖形處理單元(GPU);以及 在無(wú)需等待對(duì)由所述GPU成功完成所述任務(wù)的指示的情況下,設(shè)定另一圖形狀態(tài)。
13.根據(jù)權(quán)利要求12所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述提交所述任務(wù)通過(guò)所述腳本環(huán)境的工作線程執(zhí)行。
14.根據(jù)權(quán)利要求13所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述程序指令可進(jìn)一步由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn)在所述提交所述任務(wù)之前,所述工作線程確定所述設(shè)定的圖形狀態(tài)的有效性,其中所述確定包括將所述設(shè)定的圖形狀態(tài)的數(shù)據(jù)與所述設(shè)定的圖形狀態(tài)的預(yù)期數(shù)據(jù)相比較。
15.根據(jù)權(quán)利要求14所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中設(shè)定所述圖形狀態(tài)包括將所述圖形狀態(tài)存儲(chǔ)在緩沖器中,并且其中確定所述設(shè)定的圖形狀態(tài)的有效性包括從所述緩沖器中讀取,其中所述緩沖器被配置為同時(shí)在所述緩沖器的不同塊中進(jìn)行讀取和存儲(chǔ)。
16.根據(jù)權(quán)利要求14所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中為實(shí)現(xiàn)所述確定所述設(shè)定的圖形狀態(tài)的有效性,所述程序指令可進(jìn)一步由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn) 讀取所述設(shè)定的圖形狀態(tài)的數(shù)據(jù); 確定所述設(shè)定的圖形狀態(tài)的所述數(shù)據(jù)不同于導(dǎo)致有效性檢驗(yàn)失敗的所述設(shè)定的圖形狀態(tài)的預(yù)期數(shù)據(jù);以及 跳過(guò)將與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給所述GPU。
17.根據(jù)權(quán)利要求16所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中為實(shí)現(xiàn)所述跳過(guò)提交所述任務(wù),所述程序指令可進(jìn)一步由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn) 在無(wú)需報(bào)告有效性檢驗(yàn)失敗的情況下,所述工作線程讀取另一設(shè)定的圖形狀態(tài)。
18.根據(jù)權(quán)利要求12所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述程序指令可進(jìn)一步由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn) 接收用于進(jìn)入調(diào)試模式的輸入,其中進(jìn)入所述調(diào)試模式阻止設(shè)定后續(xù)圖形狀態(tài),直到接收到錯(cuò)誤或完成與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的所述任務(wù); 確定所述設(shè)定的圖形狀態(tài)是無(wú)效的; 報(bào)告錯(cuò)誤,其中所述錯(cuò)誤對(duì)應(yīng)于所述設(shè)定的圖形狀態(tài)的驗(yàn)證失敗;以及 設(shè)定下一圖形狀態(tài)。
19.根據(jù)權(quán)利要求12所述的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述程序指令可進(jìn)一步由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn) 確定所述下一圖形狀態(tài)是有效的; 將與所述設(shè)定的下一圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給所述GPU ; 等待對(duì)由所述GPU成功完成與所述設(shè)定的下一圖形狀態(tài)對(duì)應(yīng)的所述任務(wù)的指示;以及 設(shè)定另一下一圖形狀態(tài)。
20.—種系統(tǒng),包括至少一個(gè)處理器;以及 存儲(chǔ)器,包括程序指令,其中所述程序指令可由所述至少一個(gè)處理器執(zhí)行用于 在腳本環(huán)境中 設(shè)定圖形狀態(tài); 通過(guò)所述腳本環(huán)境的工作線程確定所述設(shè)定的圖形狀態(tài)的有效性,其中為了確定,所述程序指令可進(jìn)一步由所述至少一個(gè)處理器執(zhí)行用于將所述設(shè)定的圖形狀態(tài)的數(shù)據(jù)與所述設(shè)定的圖形狀態(tài)的預(yù)期數(shù)據(jù)相比較; 將與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的任務(wù)提交給圖形處理單元(GPU);以及 在無(wú)需等待對(duì)由所述GPU成功完成所述任務(wù)的指示的情況下,設(shè)定另一圖形狀態(tài)。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其中為了設(shè)定所述圖形狀態(tài)以及為了確定所述設(shè)定的圖形狀態(tài)的有效性,所述程序指令可由所述至少一個(gè)處理器進(jìn)一步計(jì)算機(jī)執(zhí)行用于將所述圖形狀態(tài)存儲(chǔ)在所述至少一個(gè)處理器的緩沖器中,并從所述緩沖器中讀取所述設(shè)定的圖形狀態(tài),其中所述緩沖器被配置為同時(shí)在所述緩沖器的不同單元中進(jìn)行讀取和存儲(chǔ)。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中為了確定所述設(shè)定的圖形狀態(tài)的有效性,所述程序指令可由所述至少一個(gè)處理器進(jìn)一步計(jì)算機(jī)執(zhí)行用于 從所述緩沖器讀取所述設(shè)定的圖形狀態(tài)的數(shù)據(jù); 確定所述設(shè)定的圖形狀態(tài)的所述數(shù)據(jù)不同于導(dǎo)致有效性檢驗(yàn)失敗的所述設(shè)定的圖形狀態(tài)的預(yù)期數(shù)據(jù);以及 跳過(guò)將與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的所述任務(wù)提交給所述GPU。
23.根據(jù)權(quán)利要求20所述的系統(tǒng),其中所述程序指令可由所述至少一個(gè)處理器進(jìn)一步計(jì)算機(jī)執(zhí)行用于 接收用于進(jìn)入調(diào)試模式的輸入,其中為了進(jìn)入所述調(diào)試模式,所述程序指令可由所述至少一個(gè)處理器進(jìn)一步執(zhí)行用于阻止設(shè)定后續(xù)圖形狀態(tài),直到接收到錯(cuò)誤或完成與所述設(shè)定的圖形狀態(tài)對(duì)應(yīng)的所述任務(wù); 確定所述設(shè)定的圖形狀態(tài)是無(wú)效的; 報(bào)告錯(cuò)誤,其中所述錯(cuò)誤對(duì)應(yīng)于所述設(shè)定的圖形狀態(tài)的驗(yàn)證失??;以及 設(shè)定下一圖形狀態(tài)。
全文摘要
本發(fā)明涉及腳本環(huán)境中內(nèi)容的并行化定義和顯示。具體地,可以在腳本環(huán)境中并行定義和顯示各種內(nèi)容。腳本語(yǔ)言在繼續(xù)進(jìn)行對(duì)內(nèi)容定義的更新之前可以不用等待錯(cuò)誤檢驗(yàn)或報(bào)告。在一個(gè)實(shí)施方式中,可以不執(zhí)行錯(cuò)誤檢驗(yàn)或報(bào)告。通過(guò)設(shè)定圖形狀態(tài)可以定義內(nèi)容,而通過(guò)驗(yàn)證圖形狀態(tài)和將驗(yàn)證有效的狀態(tài)提交給GPU可以顯示內(nèi)容。對(duì)內(nèi)容的定義和顯示可以異步執(zhí)行。
文檔編號(hào)G06F9/38GK102707928SQ20121004869
公開(kāi)日2012年10月3日 申請(qǐng)日期2012年2月27日 優(yōu)先權(quán)日2011年2月25日
發(fā)明者S·馬克特慕伊勒 申請(qǐng)人:奧多比公司