硬件字形緩存的制作方法
【專利說(shuō)明】
【背景技術(shù)】
[0001]傳統(tǒng)上,高質(zhì)量文本再現(xiàn)解決方案在中央處理單元(CPU)處理的軟件存儲(chǔ)器中緩存字形數(shù)據(jù)。在這樣的實(shí)現(xiàn)中,CPU執(zhí)行許多處理以再現(xiàn)每一個(gè)字形串。例如,CPU可以標(biāo)識(shí)字體緩存中的字形數(shù)據(jù),計(jì)算字形定位,清除地圖集中的用于字形串的空間,將每一個(gè)字形位圖合并到地圖集中,并且向圖形處理單元(GPU)傳送字形位圖。在合并步驟期間,字形可以以子像素偏移量定位以允許字形之間的精確間隔。在每次再現(xiàn)字形時(shí)招致這樣的過(guò)程,即使是重復(fù)地再現(xiàn)相同的字形。另外,向硬件存儲(chǔ)器傳送字形數(shù)據(jù)可以導(dǎo)致延遲,特別是在較高的每英寸點(diǎn)數(shù)(DPI)處,其中字形具有較多的像素。
【發(fā)明內(nèi)容】
[0002]提供本
【發(fā)明內(nèi)容】
來(lái)以簡(jiǎn)化的形式引入以下在【具體實(shí)施方式】中進(jìn)一步描述的概念的選擇。本
【發(fā)明內(nèi)容】
不意圖標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不意圖孤立地用于幫助確定所要求保護(hù)的主題的范圍。
[0003]本發(fā)明的實(shí)施例一般涉及促進(jìn)在硬件中緩存字形。在這方面,經(jīng)緩存的字形可以由圖形處理單元(GPU)處理從而使得能夠?qū)崿F(xiàn)更高效的字形再現(xiàn)。本發(fā)明的實(shí)施例生成和利用與字形關(guān)聯(lián)的覆蓋索引來(lái)單獨(dú)再現(xiàn)字形。覆蓋索引允許經(jīng)緩存的字形在以不同的子像素偏移量再現(xiàn)字形時(shí)被再用。
【附圖說(shuō)明】
[0004]以下參照附圖詳細(xì)描述本發(fā)明的實(shí)施例,其中:
圖1是適合用于實(shí)現(xiàn)本發(fā)明的實(shí)施例的示例性計(jì)算環(huán)境的框圖;
圖2是適合于在實(shí)現(xiàn)本發(fā)明的實(shí)施例中使用的示例性計(jì)算系統(tǒng)架構(gòu)的框圖;
圖3是示出依照本發(fā)明的實(shí)施例的促進(jìn)在硬件中緩存字形的方法的流程圖;
圖4是示出依照本發(fā)明的實(shí)施例的在硬件中緩存字形的第一方法的流程圖;
圖5是示出依照本發(fā)明的實(shí)施例的在硬件中緩存字形的第二方法的流程圖;以及圖6是示出依照本發(fā)明的實(shí)施例的使用字形硬件緩存獨(dú)立再現(xiàn)字形的方法的流程圖。
【具體實(shí)施方式】
[0005]在本文中用細(xì)節(jié)來(lái)描述本發(fā)明的實(shí)施例的主題以滿足法定要求。然而,該描述本身并不意圖限制本專利的范圍。相反,發(fā)明人設(shè)想所要求保護(hù)的主題還可能結(jié)合其他當(dāng)前或未來(lái)技術(shù)以其它方式體現(xiàn),以包括不同的步驟或類似于本文檔中所描述的那些的步驟組合。而且,盡管術(shù)語(yǔ)“步驟”和/或“±夬”可以在本文中用于指示所采用的方法的不同元素,但是除非而且除了在明確描述各個(gè)步驟的順序時(shí)之外,該術(shù)語(yǔ)不應(yīng)被解釋為意味著本文所公開的各個(gè)步驟之中或之間的任何特定順序。
[0006]本發(fā)明的實(shí)施例一般地涉及促進(jìn)在硬件中緩存字形。在這方面,字形可以緩存在硬件字形緩存中并且由計(jì)算機(jī)處理單元(CPU)和/或圖形處理單元(GPU)處理從而使得能夠?qū)崿F(xiàn)更高效的字形再現(xiàn)(例如減少每個(gè)像素的處理)。本發(fā)明的實(shí)施例生成和利用與字形相關(guān)聯(lián)的覆蓋索引以單獨(dú)再現(xiàn)字形。覆蓋索引允許經(jīng)緩存的字形在以不同的子像素偏移量再現(xiàn)字形時(shí)被再用。以此方式,當(dāng)再次再現(xiàn)經(jīng)緩存的字形時(shí),可以使用已經(jīng)在緩存中的字形數(shù)據(jù)而不是再次添加這樣的數(shù)據(jù),從而消除針對(duì)已經(jīng)存在于硬件緩存中的字形的每個(gè)像素CPU成本。盡管在本文中一般地描述為至少部分地使用GPU來(lái)再現(xiàn)硬件緩存中緩存的字形,但是其它實(shí)施例意圖包括在本文中,諸如例如,使用CHJ和/或GHJ所使用的系統(tǒng)存儲(chǔ)器在CPU上再現(xiàn)字形等。
[0007]在一方面中,一個(gè)或多個(gè)計(jì)算機(jī)存儲(chǔ)介質(zhì)具有體現(xiàn)在其上的計(jì)算機(jī)可執(zhí)行指令,其用于執(zhí)行促進(jìn)在硬件中緩存字形數(shù)據(jù)的方法,該方法包括:引用第一字形和第二字形;確定是否將第一字形和第二字形合并以用于一起作為經(jīng)合并的字形集再現(xiàn),其中當(dāng)確定合并第一字形和第二字形時(shí),包括第一字形和第二字形的經(jīng)合并的字形集被再現(xiàn),并且當(dāng)確定分離地再現(xiàn)第一字形和第二字形時(shí),使用處于硬件字形緩存中的與第一字形相關(guān)聯(lián)的字形數(shù)據(jù)和處于硬件字形緩存中的與第二字形相關(guān)聯(lián)的字形數(shù)據(jù)來(lái)分離地再現(xiàn)第一字形和第二字形。
[0008]在另一方面,提供了一種促進(jìn)緩存字形數(shù)據(jù)的方法。該方法包括依照與要再現(xiàn)的字形相關(guān)聯(lián)的字形數(shù)據(jù)不在字形緩存中的確定,獲取針對(duì)字形的每像素一位位圖。方法還包括確定針對(duì)與字形相關(guān)聯(lián)的每一個(gè)像素的覆蓋索引,其中每一個(gè)覆蓋索引包括用于標(biāo)識(shí)針對(duì)一系列子像素偏移量中的任何一個(gè)的對(duì)應(yīng)像素覆蓋的值。方法還包括在字形緩存中緩存與字形相關(guān)聯(lián)的覆蓋索引。
[0009]在另一方面中,提供一種實(shí)現(xiàn)在圖形處理單元(GPU)上的方法。該方法包括識(shí)別與硬件字形緩存中的字形相關(guān)聯(lián)的期望字形實(shí)例。方法還包括參照與期望字形實(shí)例相關(guān)聯(lián)的覆蓋索引集,覆蓋索引集緩存在硬件字形緩存中。方法還包括使用覆蓋索引集和為了再現(xiàn)字形所期望的子像素偏移量來(lái)經(jīng)由計(jì)算設(shè)備確定針對(duì)與字形相關(guān)聯(lián)的像素的覆蓋值。
[0010]已經(jīng)簡(jiǎn)要描述了本發(fā)明的實(shí)施例的概述,下面描述適合用于在實(shí)現(xiàn)本發(fā)明的實(shí)施例中使用的示例性操作環(huán)境。
[0011]一般地參照附圖,并且首先具體參照?qǐng)D1,示出了用于實(shí)現(xiàn)本發(fā)明的實(shí)施例的示例性操作環(huán)境,并且將其一般地指定為計(jì)算設(shè)備100。計(jì)算設(shè)備100只是合適的計(jì)算環(huán)境的一個(gè)示例,并且不意圖暗示關(guān)于本發(fā)明的使用范圍或功能性的任何限制。也不應(yīng)將計(jì)算設(shè)備100解釋為具有涉及所圖示的任何一個(gè)組件或其組合的任何依賴性或要求。
[0012]本發(fā)明可以在由計(jì)算機(jī)或諸如個(gè)人數(shù)據(jù)助理或其他手持式設(shè)備之類的其他機(jī)器執(zhí)行的計(jì)算機(jī)代碼或機(jī)器可使用指令(包括諸如程序組件之類的計(jì)算機(jī)可執(zhí)行指令)的一般上下文中描述。一般而言,包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等的程序組件指的是執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的代碼。本發(fā)明的實(shí)施例可以在各種系統(tǒng)配置中實(shí)踐,這些系統(tǒng)配置包括手持式設(shè)備、消費(fèi)電子產(chǎn)品、通用計(jì)算機(jī)、專用計(jì)算設(shè)備等等。本發(fā)明的實(shí)施例也可以在其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。
[0013]繼續(xù)參照?qǐng)D1,計(jì)算設(shè)備100包括直接或間接耦合以下設(shè)備的總線110:存儲(chǔ)器112、一個(gè)或多個(gè)處理器114、一個(gè)或多個(gè)呈現(xiàn)組件116、輸入/輸出(I/O)端口 118、1/0組件120、說(shuō)明性電源122和圖形處理單元(GPU)124??偩€110表示可以是一條或多條總線(諸如地址總線、數(shù)據(jù)總線或其組合)的事物。盡管為了清楚起見(jiàn)利用線條示出了圖1的各種塊,但是實(shí)際上,描繪各種組件并不是那樣清楚,并且比喻性地來(lái)說(shuō),線條更精確地將是灰色的和模糊的。例如,人們可以將諸如顯示設(shè)備之類的呈現(xiàn)組件認(rèn)為是I/O組件120。而且,CPU和GPU具有存儲(chǔ)器(例如獨(dú)立存儲(chǔ)器或共享存儲(chǔ)器)。圖1的圖僅僅說(shuō)明可以結(jié)合本發(fā)明的一個(gè)或多個(gè)實(shí)施例使用的示例性計(jì)算設(shè)備。諸如“工作站”、“服務(wù)器”、“膝上型計(jì)算機(jī)”、“手持式設(shè)備”等之類的分類之間沒(méi)有區(qū)別,因?yàn)樗鼈內(nèi)慷急徽J(rèn)為是在圖1的范圍之內(nèi)并且被稱為“計(jì)算機(jī)”或“計(jì)算設(shè)備”。
[0014]計(jì)算設(shè)備100典型地包括各種計(jì)算機(jī)存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是由計(jì)算設(shè)備100可訪問(wèn)并且包括易失性和非易失性介質(zhì)、可移除和不可移除介質(zhì)二者的任何可用介質(zhì)。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括在用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)之類的信息的任何方法或技術(shù)中實(shí)現(xiàn)的易失性和非易失性、可移除和不可移除介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、R0M、EEPR0M、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)裝置、磁帶盒、磁帶、磁盤存儲(chǔ)裝置或其它磁存儲(chǔ)設(shè)備,或可以用于存儲(chǔ)所期望的信息并且可以由計(jì)算設(shè)備100訪問(wèn)的任何其它介質(zhì)。另一方面,通信介質(zhì)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或諸如載波或其它輸運(yùn)機(jī)制之類的經(jīng)調(diào)制數(shù)據(jù)信號(hào)中的其它數(shù)據(jù)并且包括任何信息遞送介質(zhì)。術(shù)語(yǔ)“經(jīng)調(diào)制數(shù)據(jù)信號(hào)”意指使其特性中的一個(gè)或多個(gè)以這樣的方式設(shè)置或改變以便將信息編碼在信號(hào)中的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接連線連接之類的有線介質(zhì)和諸如超聲、RF、紅外和其它無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。如本文所限定的,計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。以上中的任一個(gè)的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
[0015]存儲(chǔ)器112包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。存儲(chǔ)器112可以是可移除的、不可移除的或其組合。示例性存儲(chǔ)器包括固態(tài)存儲(chǔ)器、硬盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器等。盡管將存儲(chǔ)器112圖示為單個(gè)組件,但是如可以領(lǐng)會(huì)到的,可以采用CPU所使用的系統(tǒng)存儲(chǔ)器和GPU所使用的分離視頻存儲(chǔ)器。在其它實(shí)現(xiàn)中,(多個(gè))存儲(chǔ)器單元可以由CPU和GPU 二者使用。
[0016]計(jì)算設(shè)備100包括從諸如總線110、存儲(chǔ)器112或I/O組件120之類的各種實(shí)體讀取數(shù)據(jù)的一個(gè)或多個(gè)處理器114。如可以領(lǐng)會(huì)的,一個(gè)或多個(gè)處理器114可以包括中央處理單元(CPU)。(多個(gè))呈現(xiàn)組件116向用戶或其他設(shè)備呈現(xiàn)數(shù)據(jù)指示。示例性呈現(xiàn)組件116包括顯示設(shè)備、揚(yáng)聲器、打印組件、振動(dòng)組件等。I/O端口 118允許計(jì)算設(shè)備100在邏輯上耦合至包括I/O組件120在內(nèi)的其他設(shè)備,其中的一些可以是內(nèi)置的。說(shuō)明性I/O組件120包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀、打印機(jī)、無(wú)線設(shè)備等等。
[0017]計(jì)算設(shè)備100的組件可以使用在字形再現(xiàn)中。例如,計(jì)算設(shè)備100可以用于實(shí)現(xiàn)處理和應(yīng)用對(duì)字形的各種效果和調(diào)節(jié)的字形再現(xiàn)過(guò)程。字形再現(xiàn)過(guò)程包括所執(zhí)行的一系列操作。這些過(guò)程一般被設(shè)計(jì)成允許字形的高效處理,同時(shí)利用可用硬件。
[0018]圖形處理單元(GPU)124是促進(jìn)圖形再現(xiàn)的處理單元。GPU 124可以用于再現(xiàn)圖像、字形、動(dòng)畫和視