本發(fā)明涉及計(jì)算機(jī),尤其涉及一種幀緩沖存儲(chǔ)方法及裝置。
背景技術(shù):
1、隨著顯示技術(shù)的發(fā)展,高分辨率顯示屏在各個(gè)領(lǐng)域均得到了廣泛應(yīng)用,高分辨率顯示屏通過(guò)刷新,讀取存儲(chǔ)在幀緩沖區(qū)中的屏幕數(shù)據(jù),從而完成畫(huà)面顯示。然而,顯示端刷新讀取屏幕數(shù)據(jù)的過(guò)程中,若幀緩沖區(qū)讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)配合不一致,很容易造成畫(huà)面撕裂,即在整幀畫(huà)面切換過(guò)程中,寫(xiě)的殘留會(huì)影響讀的數(shù)據(jù),導(dǎo)致前后兩個(gè)以上相鄰畫(huà)面在同一個(gè)屏幕出現(xiàn)的問(wèn)題。
2、現(xiàn)有技術(shù)中,幀緩沖區(qū)處理通常是一個(gè)緩沖區(qū)a負(fù)責(zé)接收?qǐng)D形庫(kù)數(shù)據(jù),另一個(gè)緩沖區(qū)b負(fù)責(zé)發(fā)送,當(dāng)緩沖區(qū)a中有數(shù)據(jù)更新時(shí),將緩沖區(qū)a中最新數(shù)據(jù)更新到緩沖區(qū)b,這樣處理在偽靜態(tài)隨機(jī)存儲(chǔ)器(pseudo?static?random?access?memory,psram)這種相對(duì)同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(synchronous?dynamic?random-access?memory,sdram)或者雙倍數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(double?data?rate?synchronous?dynamic?random?access?memory,ddr?sdram)速度較低的存儲(chǔ)介質(zhì)時(shí),對(duì)psram的讀寫(xiě)比較多,導(dǎo)致幀切換的時(shí)間變長(zhǎng),降低刷新幀率,不能為顯示端提供高刷新率,導(dǎo)致顯示端畫(huà)面不流暢。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明旨在至少解決相關(guān)技術(shù)中存在的技術(shù)問(wèn)題之一。為此,本發(fā)明提出一種幀緩沖存儲(chǔ)方法,能夠通過(guò)合理分配幀緩沖區(qū)的存儲(chǔ)空間,根據(jù)當(dāng)前幀和上一幀的關(guān)系,準(zhǔn)確鎖定當(dāng)前幀所需要的目標(biāo)刷新數(shù)據(jù),并指示目標(biāo)幀緩沖區(qū)存儲(chǔ)當(dāng)前幀的目標(biāo)刷新數(shù)據(jù),以保證幀緩沖區(qū)的讀寫(xiě)速率,提升顯示端的畫(huà)面流暢度。
2、本發(fā)明還提出一種幀緩沖存儲(chǔ)裝置。
3、本發(fā)明還提出一種電子設(shè)備。
4、本發(fā)明還提出一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
5、本發(fā)明還提出一種計(jì)算機(jī)程序產(chǎn)品。
6、根據(jù)本發(fā)明第一方面實(shí)施例的一種幀緩沖存儲(chǔ)方法,包括:
7、獲取當(dāng)前幀的目標(biāo)刷新區(qū)域和所述目標(biāo)刷新區(qū)域的目標(biāo)刷新區(qū)域的刷新數(shù)據(jù);
8、基于所述當(dāng)前幀的上一幀的歷史刷新區(qū)域、所述目標(biāo)刷新區(qū)域以及所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù);
9、指示目標(biāo)幀緩沖區(qū)存儲(chǔ)所述目標(biāo)刷新數(shù)據(jù)。
10、根據(jù)本發(fā)明實(shí)施例的幀緩沖存儲(chǔ)方法,首先為當(dāng)前幀需要刷新的數(shù)據(jù)選擇了目標(biāo)幀緩沖區(qū),其次通過(guò)確定當(dāng)前幀的目標(biāo)刷新區(qū)域和上一幀歷史刷新區(qū)域的關(guān)系,來(lái)進(jìn)一步結(jié)合目標(biāo)刷新區(qū)域的刷新數(shù)據(jù)確定目標(biāo)幀緩沖區(qū)所存儲(chǔ)的當(dāng)前幀需要刷新的數(shù)據(jù)。本發(fā)明的方法能夠在存儲(chǔ)數(shù)據(jù)即寫(xiě)數(shù)據(jù)且滿足讀寫(xiě)同步的前提下,最大程度節(jié)省時(shí)間,保證每個(gè)讀數(shù)據(jù)指令到來(lái)時(shí),緩沖區(qū)中均有可讀的刷新數(shù)據(jù)。在滿足讀寫(xiě)同步的前提下,有效提升了讀寫(xiě)效率,可以做到對(duì)屏幕每幀畫(huà)面切換順滑無(wú)卡頓,不會(huì)出現(xiàn)撕裂的情況。
11、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述基于所述當(dāng)前幀的前一幀的歷史刷新區(qū)域、所述目標(biāo)刷新區(qū)域以及所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù),包括:
12、對(duì)所述歷史刷新區(qū)域和所述目標(biāo)刷新區(qū)域進(jìn)行區(qū)域大小比對(duì);
13、基于比對(duì)結(jié)果和所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù)。
14、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述基于比對(duì)結(jié)果和所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù),包括:
15、基于所述目標(biāo)刷新區(qū)域覆蓋所述歷史刷新區(qū)域的比對(duì)結(jié)果,確定所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù)為所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù)。
16、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述基于比對(duì)結(jié)果和所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù),包括:
17、基于所述目標(biāo)刷新區(qū)域未覆蓋所述歷史刷新區(qū)域的比對(duì)結(jié)果,將所述歷史刷新區(qū)域中的未覆蓋區(qū)域?qū)?yīng)上一幀的刷新數(shù)據(jù)和所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定為所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù)。
18、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述目標(biāo)刷新區(qū)域覆蓋所述歷史刷新區(qū)域的比對(duì)結(jié)果,包括所述目標(biāo)刷新區(qū)域和所述歷史刷新區(qū)域大小一致且均為整個(gè)屏幕大小的比對(duì)結(jié)果、所述目標(biāo)刷新區(qū)域和所述歷史刷新區(qū)域大小一致且為屏幕中同一部分區(qū)域的比對(duì)結(jié)果,以及所述目標(biāo)刷新區(qū)域大于所述歷史刷新區(qū)域且所述目標(biāo)刷新區(qū)域覆蓋所述歷史刷新區(qū)域的比對(duì)結(jié)果中其中一個(gè)。
19、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述目標(biāo)緩沖區(qū)包括第一幀緩沖區(qū)和第二幀緩沖區(qū);
20、在所述第一幀緩沖區(qū)和所述第二幀緩沖區(qū)中,查找所述上一幀的刷新數(shù)據(jù);
21、確定查找到所述上一幀的刷新數(shù)據(jù)的緩沖區(qū)為所述目標(biāo)緩沖區(qū)。
22、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述目標(biāo)緩沖區(qū)用于存儲(chǔ)所述目標(biāo)刷新數(shù)據(jù),以及基于發(fā)送線程將所述目標(biāo)刷新數(shù)據(jù)發(fā)送至顯示端。
23、根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述獲取當(dāng)前幀的目標(biāo)刷新區(qū)域和所述目標(biāo)刷新區(qū)域的目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),包括:
24、基于所述上一幀的刷新數(shù)據(jù)的傳輸完成標(biāo)識(shí),從圖形庫(kù)中獲取所述當(dāng)前幀的目標(biāo)刷新區(qū)域和所述目標(biāo)刷新區(qū)域的目標(biāo)刷新區(qū)域的刷新數(shù)據(jù)。
25、根據(jù)本發(fā)明第二方面實(shí)施例的一種幀緩沖存儲(chǔ)裝置,包括:
26、輸入模塊,用于獲取當(dāng)前幀的目標(biāo)刷新區(qū)域和所述目標(biāo)刷新區(qū)域的目標(biāo)刷新區(qū)域的刷新數(shù)據(jù);
27、刷新比對(duì)模塊,用于基于所述當(dāng)前幀的上一幀的歷史刷新區(qū)域、所述目標(biāo)刷新區(qū)域以及所述目標(biāo)刷新區(qū)域的刷新數(shù)據(jù),確定所述當(dāng)前幀的目標(biāo)刷新數(shù)據(jù);
28、輸出模塊,用于指示目標(biāo)幀緩沖區(qū)存儲(chǔ)所述目標(biāo)刷新數(shù)據(jù)。
29、根據(jù)本發(fā)明實(shí)施例的幀緩沖存儲(chǔ)裝置,輸出模塊為當(dāng)前幀需要刷新的數(shù)據(jù)選擇了目標(biāo)幀緩沖區(qū),輸入模塊和刷新比對(duì)模塊通過(guò)確定當(dāng)前幀的目標(biāo)刷新區(qū)域和上一幀歷史刷新區(qū)域的關(guān)系,來(lái)進(jìn)一步結(jié)合目標(biāo)刷新區(qū)域的刷新數(shù)據(jù)確定目標(biāo)幀緩沖區(qū)所存儲(chǔ)的當(dāng)前幀需要刷新的數(shù)據(jù)。本發(fā)明的裝置能夠在存儲(chǔ)數(shù)據(jù)時(shí),最大程度節(jié)省時(shí)間,保證每個(gè)讀數(shù)據(jù)指令到來(lái)時(shí),緩沖區(qū)中均有可讀的刷新數(shù)據(jù)。在滿足讀寫(xiě)同步的前提下,有效提升了讀寫(xiě)效率,可以做到對(duì)屏幕每幀畫(huà)面切換順滑無(wú)卡頓,不會(huì)出現(xiàn)撕裂的情況。
30、根據(jù)本發(fā)明第三方面實(shí)施例的電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如上述幀緩沖存儲(chǔ)方法的步驟。
31、根據(jù)本發(fā)明第四方面實(shí)施例的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述幀緩沖存儲(chǔ)方法的步驟。
32、根據(jù)本發(fā)明第五方面實(shí)施例的計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述幀緩沖存儲(chǔ)方法的步驟。
33、本發(fā)明實(shí)施例中的上述一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果之一:通過(guò)第一幀緩沖區(qū)和第二幀緩沖區(qū)的交替工作,使得前后幀讀數(shù)據(jù)時(shí),可以交替讀取不同的幀緩沖區(qū),避免了鎖幀導(dǎo)致的時(shí)間浪費(fèi)。
34、進(jìn)一步的,相比于傳統(tǒng)的幀緩沖區(qū)處理方案在確定緩沖區(qū)有數(shù)據(jù)更新時(shí),將最新數(shù)據(jù)全部更新到另一緩沖區(qū),本發(fā)明需要判斷當(dāng)前幀和上一幀的關(guān)系,無(wú)需在所有情況下都進(jìn)行整幀拷貝。
35、更進(jìn)一步的,目標(biāo)緩沖區(qū)域的存在可以在幀嚴(yán)格同步的情況下,使得顯示端做到切換順滑無(wú)卡頓,不會(huì)出現(xiàn)畫(huà)面撕裂的情況。
36、本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。