新四季網

資源管理方法、電子設備及計算機可讀存儲介質與流程

2024-04-15 00:52:05 1



1.本發明涉及遊戲領域,具體而言,涉及一種資源管理方法、電子設備及計算機可讀存儲介質。


背景技術:

2.microsoft directx是一套圖形api(application programming interface,應用程式編程接口),可以用來創建遊戲和高性能的圖形應用,directx支持2d和3d圖形。direct3d是directx中關於3d圖形部分的api,在之前的direct3d 11這一版本中,重度依賴該api的底層圖形驅動系統在後臺完成資源管理工作。
3.但是在當前direct3d 12這一版本中,資源管理工作不再由api的底層圖形驅動系統完成,而由用戶自行設計資源管理方案。所以,對於採用direct3d 12的情況下,如何保證渲染時資源的有效性是需要考慮的問題。


技術實現要素:

4.本發明的目的在於提供一種資源管理方法、電子設備及計算機可讀存儲介質,以改善現有技術存在的問題。
5.本發明的實施例可以這樣實現:
6.第一方面,本發明提供一種資源管理方法,應用於電子設備,所述電子設備運行有採用direct3d 12的遊戲引擎,所述電子設備包括通信連接的中央處理器cpu和圖形處理器gpu;
7.所述gpu維護有命令隊列,所述命令隊列用於存放命令列表,一個所述命令列表對應一幀遊戲畫面;所述cpu維護有環形延遲釋放隊列,所述環形延遲釋放隊列包括所述命令隊列中每個所述命令列表所對應待釋放資源的存儲地址;所述方法包括:
8.所述gpu從所述命令隊列讀取目標命令列表;所述目標命令列表對應目標遊戲畫面;
9.所述gpu根據所述目標命令列表渲染所述目標遊戲畫面,並在所述目標遊戲畫面渲染完成時向所述cpu發送渲染結束指令;
10.所述cpu響應所述渲染結束指令,從所述環形延遲釋放隊列讀取所述目標命令列表所對應目標待釋放資源的目標存儲地址;
11.所述cpu基於所述目標存儲地址,釋放所述目標待釋放資源。
12.在可選的實施方式中,所述電子設備還包括所述cpu對應的內存空間和所述direct3d 12維護的資源緩衝區;
13.在所述gpu從所述命令隊列讀取目標命令列表的步驟之前,所述方法還包括:
14.所述cpu將所述目標遊戲畫面的渲染資源從所述內存空間加載至所述資源緩衝區;
15.所述cpu獲得所述目標遊戲畫面對應的所述目標命令列表,並將所述目標命令列
表存儲至所述命令隊列。
16.在可選的實施方式中,所述電子設備還包括所述gpu對應的顯存空間和所述direct3d 12創建維護的資源緩衝區,所述資源緩衝區包括所述目標遊戲畫面的渲染資源;所述目標命令列表包括第一狀態轉換指令、資源拷貝指令、第二狀態轉換指令、資源綁定指令和渲染指令;
17.所述gpu根據所述目標命令列表渲染所述目標遊戲畫面的步驟,包括:
18.響應所述第一狀態轉換指令,將所述資源緩衝區中所述目標遊戲畫面的渲染資源的資源狀態標記為拷貝目標狀態;
19.響應所述資源拷貝指令,將所述渲染資源從所述資源緩衝區讀取至所述顯存空間;
20.響應所述第二狀態轉換指令,將所述顯存空間中所述渲染資源的資源狀態從所述拷貝目標狀態切換為默認資源狀態;
21.響應所述資源綁定指令,對所述渲染資源進行資源綁定;
22.響應所述渲染指令,基於所述渲染資源對所述目標遊戲畫面進行渲染。
23.在可選的實施方式中,所述目標遊戲畫面包括至少一個待渲染對象;
24.所述響應所述資源綁定指令,對所述渲染資源進行資源綁定的步驟,包括:
25.分別創建每個待渲染對象的描述符,所述描述符指向所述待渲染對象進行渲染時所需的渲染資源;
26.分別將每個所述描述符綁定至預先創建的圖形管線。
27.在可選的實施方式中,所述環形延遲釋放隊列包括所述命令隊列中每個所述命令列表對應的資源列表數組,所述待釋放資源包括待釋放緩衝區資源、待釋放紋理資源、待釋放圖形管線狀態、待釋放根籤和待釋放描述符堆,所述資源列表數組包括所述釋放緩衝區資源、所述待釋放紋理資源、所述待釋放圖形管線狀態、所述待釋放根籤和所述待釋放描述符堆各自的存儲地址。
28.第二方面,本發明提供一種電子設備,所述電子設備運行有採用direct3d 12的遊戲引擎,所述電子設備包括通信連接的cpu和gpu;
29.所述gpu維護有命令隊列,所述命令隊列用於存放命令列表,一個所述命令列表對應一幀遊戲畫面;所述cpu維護有環形延遲釋放隊列,所述環形延遲釋放隊列包括所述命令隊列中每個所述命令列表所對應待釋放資源的存儲地址;
30.所述gpu用於從所述命令隊列讀取目標命令列表;所述目標命令列表對應目標遊戲畫面;
31.所述gpu用於根據所述目標命令列表渲染所述目標遊戲畫面,並在所述目標遊戲畫面渲染完成時向所述cpu發送渲染結束指令;
32.所述cpu用於響應所述渲染結束指令,從所述環形延遲釋放隊列讀取所述目標命令列表所對應目標待釋放資源的目標存儲地址;
33.所述cpu用於基於所述目標存儲地址,釋放所述目標待釋放資源。
34.在可選的實施方式中,還包括所述cpu對應的內存空間和所述direct3d 12維護的資源緩衝區;
35.所述gpu在用於從所述命令隊列讀取目標命令列表之前,還用於:
36.將所述目標遊戲畫面的渲染資源從所述內存空間加載至所述資源緩衝區;
37.獲得所述目標遊戲畫面對應的所述目標命令列表,並將所述目標命令列表存儲至所述命令隊列。
38.在可選的實施方式中,還包括所述gpu對應的顯存空間和所述direct3d 12創建維護的資源緩衝區,所述資源緩衝區包括所述目標遊戲畫面的渲染資源;所述目標命令列表包括第一狀態轉換指令、資源拷貝指令、第二狀態轉換指令、資源綁定指令和渲染指令;
39.所述gpu用於根據所述目標命令列表渲染所述目標遊戲畫面時,具體用於:
40.響應所述第一狀態轉換指令,將所述資源緩衝區中所述目標遊戲畫面的渲染資源的資源狀態標記為拷貝目標狀態;
41.響應所述資源拷貝指令,將所述渲染資源從所述資源緩衝區讀取至所述顯存空間;
42.響應所述第二狀態轉換指令,將所述顯存空間中所述渲染資源的資源狀態從所述拷貝目標狀態切換為默認資源狀態;
43.響應所述資源綁定指令,對所述渲染資源進行資源綁定;
44.響應所述渲染指令,基於所述渲染資源對所述目標遊戲畫面進行渲染。
45.在可選的實施方式中,所述環形延遲釋放隊列包括所述命令隊列中每個所述命令列表對應的資源列表數組,所述待釋放資源包括待釋放緩衝區資源、待釋放紋理資源、待釋放圖形管線狀態、待釋放根籤和待釋放描述符堆;
46.所述資源列表數組包括所述釋放緩衝區資源、所述待釋放紋理資源、所述待釋放圖形管線狀態、所述待釋放根籤和所述待釋放描述符堆各自的存儲地址。
47.第三方面,本發明提供一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有電腦程式,所述電腦程式被處理器執行時實現前述實施方式中任一項所述的資源管理方法。
48.與現有技術相比,本發明實施例提供了一種資源管理方法、電子設備及計算機可讀存儲介質,在運行有採用direct3d 12的遊戲引擎的電子設備中,由gpu維護用於存放命令列表的命令隊列,一個命令列表對應一幀遊戲畫面;由cpu維護包括命令隊列中每個命令列表所對應待釋放資源的存儲地址的環形延遲釋放隊列。gpu基於從命令隊列讀取的目標命令列表渲染目標遊戲畫面,並在目標遊戲畫面渲染完成時向cpu發送渲染結束指令。然後cpu響應渲染結束指令,從環形延遲釋放隊列讀取目標命令列表所對應目標待釋放資源的目標存儲地址,並基於目標存儲地址釋放目標待釋放資源。如此,在接收到渲染結束指令時,cpu才釋放資源,保證了渲染目標遊戲畫面所需資源的有效性。
附圖說明
49.為了更清楚地說明本發明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發明的某些實施例,因此不應被看作是對範圍的限定,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他相關的附圖。
50.圖1為本發明實施例提供的一種電子設備的結構示意圖。
51.圖2為本發明實施例提供的一種資源管理方法的流程示意圖之一。
52.圖3為本發明實施例提供的cpu與gpu之間的信令交互示意圖。
53.圖4為本發明實施例提供的渲染資源的加載示意圖。
具體實施方式
54.為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發明實施例的組件可以以各種不同的配置來布置和設計。
55.因此,以下對在附圖中提供的本發明的實施例的詳細描述並非旨在限制要求保護的本發明的範圍,而是僅僅表示本發明的選定實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
56.應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨後的附圖中不需要對其進行進一步定義和解釋。
57.此外,若出現術語「第一」、「第二」等僅用於區分描述,而不能理解為指示或暗示相對重要性。
58.需要說明的是,在不衝突的情況下,本發明的實施例中的特徵可以相互結合。
59.本發明涉及的關鍵詞或者關鍵術語如下:
60.1、microsoft direct3d 12:微軟公司在windows作業系統推出的新一代圖形編程接口,以下簡稱direct3d 12;
61.2、cpu(control process unit):即計算機中作為運算和控制核心的中央處理器;
62.3、gpu(graphics process unit):即計算機中負責圖形處理的圖形處理器;
63.4、api(aplication programming interface):應用程式編程接口;
64.5、描述符:direct3d 12中單個資源的主要綁定單元,分為以下類型:cbv(constant buffer view,常量緩衝區描述符)|srv(shader resource views,著色器資源描述符)|uav(unordered resource views,無序訪問資源描述符)、sampler(採樣器描述符)、dsv(depth stencil view,深度模板描述符)、rtv(render target view,渲染目標描述符);描述符是一個相對較小的數據塊,數據大小和格式由圖形驅動程序制定,且不透明;
65.6、描述符表:在邏輯上,描述符表可看做描述符數組,每個描述符表中可以存儲一種或多種類型的描述符。描述符表不是內存分配;它只是描述符堆中的偏移量和長度;
66.7、描述符堆:一個內存中連續分布的描述符集合;
67.8、圖形管線:gpu完成繪製命令所需的抽象的狀態集合;
68.9、根籤名:用於定義綁定到圖形管線上的資源類型
69.在此,先對電子設備1000進行介紹,請參見圖1,圖1為本發明實施例提供的一種電子設備的結構示意圖。該電子設備1000可以包括通過總線700進行通信的cpu100和gpu200,該電子設備1000上安裝有採用direct3d 12的遊戲引擎。
70.電子設備1000的存儲空間包括系統存儲空間300、內存空間400、顯存空間500以及由direct3d 12維護的資源緩衝區600。
71.其中,cpu100可以通過總線700去訪問系統存儲空間300、內存空間400以及資源緩
衝區600;gpu200可以通過總線700去訪問顯存空間500以及資源緩衝區600。其中,內存空間400僅能被cpu100訪問,顯存空間500僅能被gpu200訪問。
72.該電子設備1000可以是但不限於個人筆記本、桌上型電腦、伺服器等。
73.系統存儲空間300中存儲有渲染所需的資源文件,當遊戲引擎開始運行需要進行遊戲渲染時,cpu100會從系統存儲空間300加載資源文件至內存空間400。
74.在渲染過程中,內存空間400中資源文件中的渲染資源會逐步經歷從內存空間400到資源緩衝區600再到顯存空間500最後渲染完成後被釋放的過程,在這整個過程中,對資源的管理即為本方案的重點。
75.需要說明的是,圖1所示的結構僅為示意,電子設備還可以包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。圖1中所示的各組件可以採用硬體、軟體或其組合實現。
76.請參考圖2,圖2為本發明實施例提供的一種資源管理方法的流程示意圖,該方法的執行主體為上述電子設備,該電子設備上運行有採用direct3d12的遊戲引擎,電子設備包括通信連接的cpu和gpu。
77.gpu維護有命令隊列,命令隊列用於存放命令列表,一個命令列表對應一幀待渲染的遊戲畫面。cpu維護有環形延遲釋放隊列,環形延遲釋放隊列包括命令隊列中每個命令列表所對應待釋放資源的存儲地址。該資源管理方法包括以下步驟:
78.s210、gpu從命令隊列讀取目標命令列表。
79.在本實施例中,命令隊列可以包括至多三個命令列表。基於隊列先進先出的基本原則,目標命令列表為至多三個命令列表中位於隊頭的命令列表,目標命令列表對應目標遊戲畫面。
80.可以理解,命令列表中包括的是cpu中渲染線程(render thread)收集的渲染一幀遊戲畫面的一系列指令的集合。
81.s220、gpu根據目標命令列表渲染目標遊戲畫面,並在目標遊戲畫面渲染完成時向cpu發送渲染結束指令。
82.可以理解,每次gpu從命令隊列讀取一個命令列表,在該命令列表執行完畢時(即該命令列表對應的一幀遊戲畫面渲染完成),都會向cpu發送渲染結束指令。
83.s230、cpu響應渲染結束指令,從環形延遲釋放隊列讀取目標命令列表所對應目標待釋放資源的目標存儲地址。
84.可以理解,環形延遲釋放隊列中可以包括至多三個資源列表數組,每個資源列表數組可以包括一幀遊戲畫面的待釋放資源的存儲地址。
85.在本實施例中,環形延遲釋放隊列中處於隊頭的資源列表數組中即為目標待釋放資源的目標存儲地址。
86.s240、cpu基於目標存儲地址,釋放目標待釋放資源。
87.可以理解,目標待釋放資源中包括不止一種資源,不同資源的存儲映射地址可能不同,對應地,此處目標存儲地址可以包括目標待釋放資源中每種資源的存儲映射地址。
88.本實施例提供的資源管理方法,在運行有採用direct3d 12的遊戲引擎的電子設備中,由gpu維護用於存放命令列表的命令隊列,一個命令列表對應一幀遊戲畫面;由cpu維護包括命令隊列中每個命令列表所對應待釋放資源的存儲地址的環形延遲釋放隊列。gpu
基於從命令隊列讀取的目標命令列表渲染目標遊戲畫面,並在目標遊戲畫面渲染完成時向cpu發送渲染結束指令。然後cpu響應渲染結束指令,從環形延遲釋放隊列讀取目標命令列表所對應目標待釋放資源的目標存儲地址,並基於目標存儲地址釋放目標待釋放資源。如此,在接收到渲染結束指令時,cpu才釋放資源,保證了渲染目標遊戲畫面所需資源的有效性。
89.在可選的實施方式中,環形延遲釋放隊列可以包括命令隊列中每個命令列表對應的資源列表數組,待釋放資源包括待釋放緩衝區資源、待釋放紋理資源、待釋放圖形管線狀態、待釋放根籤和待釋放描述符堆。
90.對應地,資源列表數組可以包括釋放緩衝區資源列表數組、待釋放紋理資源列表數組、待釋放圖形管線狀態列表數組、待釋放根籤列表數組和待釋放描述符堆列表數組這5個數組,這5個數組分別包括釋放緩衝區資源、待釋放紋理資源、待釋放圖形管線狀態、待釋放根籤和待釋放描述符堆各自的存儲地址。
91.在可選的實施方式中,電子設備還可以包括cpu對應的內存空間和direct3d 12維護的資源緩衝區。以目標命令列表為例,cpu在將目標命令列表提交到命令隊列之前,需要做好相關數據準備,對應的,在上述步驟s210之前,資源管理方法還可以包括步驟s110~s120:
92.s110、cpu將目標遊戲畫面的渲染資源從內存空間加載至資源緩衝區。
93.s120、cpu獲得目標遊戲畫面對應的目標命令列表,並將目標命令列表存儲至命令隊列。
94.可以理解,內存空間可以包括從系統存儲空間加載而來的資源文件,為了渲染目標遊戲畫面,cpu需要先將目標遊戲畫面的渲染資源從內存空間加載至資源緩衝區,然後再收集渲染目標遊戲畫面的各自指令得到目標命令列表,並把目標命令列表提交到gpu維護的命令隊列。
95.可以理解,對於每幀遊戲畫面,都需要經過上述步驟s110~s120、s210~s240的步驟即算完成一幀遊戲畫面的渲染。並且,cpu每提交一個命令列表到命令隊列,同時可將該命令列表對應遊戲畫面的待釋放資源的存儲地址存儲在環形延遲釋放隊列中。
96.在可選的實施方式中,cpu在將連續三幀遊戲畫面的渲染資源加載到資源緩衝區的前提下,cpu的渲染線程render thread最多同時收集並提交該連續三幀遊戲畫面對應的3個命令列表。結合圖3,以render thread直接先後提交命令列表1、命令列表2、命令列表3到gpu維護的命令隊列為例,cpu與gpu之間異步工作的流程如下:
97.1、render thread提交第一幀遊戲畫面到第三幀遊戲畫面對應的命令列表1~3至命令隊列,然後等待gpu完成命令列表1以進行後續工作;
98.2、gpu從命令隊列讀取到命令列表1時,開始執行命令列表1;
99.3、當命令列表1執行結束時,gpu向render thread發送渲染結束指令;
100.4、render thread響應渲染結束指令,釋放命令列表1對應的待釋放資源。
101.上述1~4即為render thread提交命令列表1到命令列表1對應待釋放資源被釋放這個過程中,cpu的render thread與gpu之間異步工作的流程。可以理解,命令列表2和命令列表3從被提交至命令隊列到對應資源被釋放的過程與上同理,在此不做贅述。
102.遊戲的渲染是依次渲染一幀幀遊戲畫面,在此過程中,在電子設備的顯示界面中,
用戶可能對遊戲渲染窗口的窗口尺寸調整操作,即重置窗口交換鏈,在此情況下的特殊處理為:
103.在遊戲渲染窗口大小重置(用戶產生窗口尺寸調整操作)時,必須等待gpu完成當前一幀遊戲畫面所對應命令列表中的所有指令後,不再對舊後備緩衝有任何寫入操作,窗口交換鏈重置後備緩衝渲染目標尺寸。重置窗口交換鏈前,由於gpu已執行完當前一幀遊戲畫面之前遊戲畫面對應的命令列表,cpu可以清理除當前一幀遊戲畫面之外的其他遊戲畫面對應的待釋放資源,而不清理當前一幀遊戲畫面的待釋放資源,是由於上層可能存在創建資源後又立即銷毀資源的情況。
104.在可選的實施方式中,電子設備還可以包括gpu對應的顯存空間;目標命令列表包括但不限於第一狀態轉換指令、資源拷貝指令、第二狀態轉換指令、資源綁定指令和渲染指令等。
105.對應地,在上述步驟s220中gpu根據目標命令列表渲染目標遊戲畫面的過程可以包括以下子步驟:
106.s221、響應第一狀態轉換指令,將資源緩衝區中目標遊戲畫面的渲染資源的資源狀態標記為拷貝目標狀態。
107.為了保證direct3d 12數據有效性需要關心的資源主要分為兩種類型:緩衝區資源、紋理資源,即渲染資源包括緩衝區資源和紋理資源。
108.可以理解,cpu將目標遊戲畫面的渲染資源加載到資源緩衝區之前,根據緩衝區資源與紋理資源各自的使用目的,分別目標遊戲畫面緩衝區資源和紋理資源指定各自的默認資源狀態,並追蹤當前所處狀態。
109.所以,對於gpu來講,響應第一狀態轉換指令,將資源緩衝區中目標遊戲畫面的渲染資源的資源狀態從默認資源狀態轉換為拷貝目標狀態。
110.s222、響應資源拷貝指令,將渲染資源從資源緩衝區讀取至顯存空間。
111.s223、響應第二狀態轉換指令,將顯存空間中渲染資源的資源狀態從拷貝目標狀態切換為默認資源狀態。
112.當gpu將目標遊戲畫面的渲染資源從資源緩衝區讀取至顯存空間之後,即可將渲染資源的資源狀態從拷貝目標狀態恢復為默認資源狀態。
113.假設cup提交了連續三幀遊戲畫面的命令列表到命令隊列,那麼對應的cpu預先將這三幀遊戲畫面各自的渲染資源存儲到了資源緩衝區。
114.結合圖4,在資源緩衝區中可以存在三個存儲區,初始化分配時,默認預定義最大更新次數為8,對應每個存儲區分配八個存儲塊;在顯存空間的gpu端緩衝區同樣默認八個存儲塊。
115.假設三幀遊戲畫面(第n幀、第n+1幀、第n+2幀,n可以為3的倍數)各自的渲染資源大小不同,3種渲染資源各自分別更新4、7、1次即可完成從cpu端緩衝區加載到資源緩衝區的一個存儲區。
116.而對應地,對於gpu來講:
117.當gpu從命令隊列讀取到第n幀對應的命令列表後,響應資源拷貝指令,將渲染資源從資源緩衝區讀取至顯存空間中的gpu端緩衝區需要拷貝4次。
118.當gpu後續從命令隊列讀取到第n+1幀對應的命令列表後,響應資源拷貝指令,將
渲染資源從資源緩衝區讀取至顯存空間中的gpu端緩衝區需要拷貝7次。
119.當gpu後續從命令隊列讀取到第n+2幀對應的命令列表後,響應資源拷貝指令,將渲染資源從資源緩衝區讀取至顯存空間中的gpu端緩衝區需要拷貝1次。
120.可以理解,預定義最大更新次數為8隻是初始化分配的默認設置,緩衝區資源對應的預定義最大更新次數可以動態調整為:1、8、16、32、64、128、256、512、1024、2048、4096等,紋理資源對應的預定義最大更新次數可以動態調整為:1、2、4、8、16、32等。
121.所以,若是cpu在加載某幀遊戲畫面的渲染資源到存儲區的過程中,若是緩衝區資源和紋理資源各自的更新次數超過當前各自的預定義最大更新次數時,可以上調各自預定義最大更新次數和存儲區中動態分配的存儲塊數量。
122.需要說明的是,上述舉例僅為示例,在此不做限定。
123.s224、響應資源綁定指令,對渲染資源進行資源綁定。
124.在本實施例中,目標遊戲畫面可以包括至少一個待渲染對象,對應地,在s224中gpu響應資源綁定指令,對目標遊戲畫面的渲染資源進行資源綁定的過程可以包括:
125.(1)分別創建每個待渲染對象的描述符,描述符指向待渲染對象進行渲染時所需的渲染資源;
126.(2)分別將每個描述符綁定至預先創建的圖形管線。
127.在本實施例中,電子設備的渲染系統僅使用圖形管線的頂點著色階段與像素著色階段,且約定頂點與像素著色階段最多能使用兩個著色器插槽連續的常量緩衝區和多個著色器插槽位置不連續的紋理。
128.direct3d 12需要為圖形管線指定根籤名。根籤名用於定義各個著色器階段期望訪問資源的類型,運行時指定實際訪問的資源。根籤名由根參數列表組成,根參數有以下三種類型:
129.(1)根常量:單個32位數據內聯在參數中,僅能作為著色階段中的常量緩衝區被使用;
130.(2)根描述符:將描述符內聯在參數中,僅能用於定義cbv、原始或結構化的uav、srv緩衝區,指向描述符堆中某段連續範圍內的描述符;
131.(3)根描述符表:描述符堆的偏移量和長度。描述符表只有32位(1個dword,描述符表中有多少個描述符沒有限制(間接允許最大描述符堆大小的描述符數目除外)。從描述符表訪問資源時,會有兩個間接開銷。第一個間接方法是從描述符表指針到存儲在堆中的描述符,然後從描述符堆到實際資源)。
132.在本實施例中,direct3d 12引入新資源引用機制,描述符分為著色器可見類型與著色器不可見類型,著色器可見類型用於綁定gpu資源到圖形管線;著色器不可見類型用於應用端緩存資源引用。
133.本方案中,圖形管線訪問資源布局的組織方案如下:
134.通過常量緩衝區的在每幀遊戲畫面的命令列表中存在高頻率的更新,頂點著色階段和像素著色階段訪問的兩個常量緩衝區插槽分別以一個根描述符參數來關聯,由於紋理和採樣器插槽的不連續性,頂點和像素著色階段訪問的紋理插槽集合分別以一個根描述符表參數關聯,每個紋理插槽佔用根描述符表數組一個描述符表且連續排布在描述符表數組中,為後續將紋理資源描述符拷貝到描述符堆中連續描述符段,只將紋理資源描述符集位
於描述符堆中的起始地址與紋理根描述符表綁定,就能完成紋理資源的綁定;頂點和像素著色階段訪問的採樣器集合採用與紋理集合一樣的策略。
135.本方案中,資源描述符堆分配與管理方案如下:
136.direct3d 12的描述符類型有:dsv、rtv、cbv|srv|uav、samper。應用端需要管理dsv、rtv描述符和緩存gpu資源的臨時cbv|srv|uav描述符,採用臨時描述符堆分配器:以雙向鍊表記錄空閒描述符與被使用描述符信息,實現回收和重用這些臨時描述符;
137.圖形管線通過根描述符表訪問gpu資源,需要將gpu資源描述符拷貝到著色器可見描述符堆中,訪問前將該描述符堆綁定到圖形管線上,並將gpu資源在描述符堆中連續段的起始描述符與根描述符表關聯;為避免gpu繪製命令執行時,切換描述符堆導致的並行化gpu繪製命令被打斷,採用全局cbv|srv|uav描述符堆和採樣器描述符堆分配器方案(預分配可容納多幀gpu命令訪問的gpu資源描述符堆,全局著色器cbv|srv|uav描述符堆實際容量為288000,可滿足最大4000個gpu繪製命令訪問gpu cbv|srv|uav資源。
138.全局著色器可見採樣器描述符堆為2048:全局描述符堆採用環形使用方式,記錄每幀分配的描述符在全局描述符堆中的起始與終止位置,當該幀目標遊戲畫面對應的命令列表執行完畢後回收該幀使用的連續描述符段,供後續資源綁定的循環使用。
139.s225、響應渲染指令,基於渲染資源對目標遊戲畫面進行渲染。
140.可以理解,在完成資源綁定之後,gpu即可執行目標命令列表的渲染指令對目標遊戲畫面進行渲染。需要說明的是,上述方法實施例中各個步驟的執行順序不以附圖所示為限制,各步驟的執行順序以實際應用情況為準。
141.本發明實施例還提供一種電子設備,該電子設備運行有採用direct3d12的遊戲引擎,所述電子設備包括通信連接的cpu和gpu。所述gpu維護有命令隊列,所述命令隊列用於存放命令列表,一個所述命令列表對應一幀遊戲畫面;所述cpu維護有環形延遲釋放隊列,所述環形延遲釋放隊列包括所述命令隊列中每個所述命令列表所對應待釋放資源的存儲地址。
142.所述gpu用於從所述命令隊列讀取目標命令列表;所述目標命令列表對應目標遊戲畫面;
143.所述gpu用於根據所述目標命令列表渲染所述目標遊戲畫面,並在所述目標遊戲畫面渲染完成時向所述cpu發送渲染結束指令;
144.所述cpu用於響應所述渲染結束指令,從所述環形延遲釋放隊列讀取所述目標命令列表所對應目標待釋放資源的目標存儲地址;
145.所述cpu用於基於所述目標存儲地址,釋放所述目標待釋放資源。
146.可選的,該電子設備還包括所述cpu對應的內存空間和所述direct3d12維護的資源緩衝區;
147.所述gpu在用於從所述命令隊列讀取目標命令列表之前,還用於:將所述目標遊戲畫面的渲染資源從所述內存空間加載至所述資源緩衝區;獲得所述目標遊戲畫面對應的所述目標命令列表,並將所述目標命令列表存儲至所述命令隊列。
148.可選的,該電子設備還包括所述gpu對應的顯存空間和所述direct3d12創建維護的資源緩衝區,所述資源緩衝區包括所述目標遊戲畫面的渲染資源;所述目標命令列表包括第一狀態轉換指令、資源拷貝指令、第二狀態轉換指令、資源綁定指令和渲染指令;
149.所述gpu用於根據所述目標命令列表渲染所述目標遊戲畫面時,具體用於:響應所述第一狀態轉換指令,將所述資源緩衝區中所述目標遊戲畫面的渲染資源的資源狀態標記為拷貝目標狀態;響應所述資源拷貝指令,將所述渲染資源從所述資源緩衝區讀取至所述顯存空間;響應所述第二狀態轉換指令,將所述顯存空間中所述渲染資源的資源狀態從所述拷貝目標狀態切換為默認資源狀態;響應所述資源綁定指令,對所述渲染資源進行資源綁定;響應所述渲染指令,基於所述渲染資源對所述目標遊戲畫面進行渲染。
150.可選的,所述環形延遲釋放隊列包括所述命令隊列中每個所述命令列表對應的資源列表數組,所述待釋放資源包括待釋放緩衝區資源、待釋放紋理資源、待釋放圖形管線狀態、待釋放根籤和待釋放描述符堆;
151.所述資源列表數組包括所述釋放緩衝區資源、所述待釋放紋理資源、所述待釋放圖形管線狀態、所述待釋放根籤和所述待釋放描述符堆各自的存儲地址。
152.所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的電子設備中cpu與gpu之間的交互及各自的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
153.本發明實施例還提供一種計算機可讀存儲介質,該計算機可讀存儲介質上存儲有電腦程式,該電腦程式被處理器運行時實現上述實施例揭示的資源管理方法。該計算機可讀存儲介質可以是但不限於:隨機存取存儲器(random access memory,ram),只讀存儲器(read only memory,rom),快閃記憶體存儲器(flash),可編程只讀存儲器(programmable read-only memory,prom),可擦除只讀存儲器(erasable programmable read-only memory,eprom),電可擦除只讀存儲器(electric erasable programmable read-only memory,eeprom)、磁碟或者光碟等各種可以存儲程序代碼的介質。
154.綜上,本發明實施例提供了一種資源管理方法、電子設備及計算機可讀存儲介質,在運行有採用direct3d 12的遊戲引擎的電子設備中,由gpu維護用於存放命令列表的命令隊列,一個命令列表對應一幀遊戲畫面;由cpu維護包括命令隊列中每個命令列表所對應待釋放資源的存儲地址的環形延遲釋放隊列。gpu基於從命令隊列讀取的目標命令列表渲染目標遊戲畫面,並在目標遊戲畫面渲染完成時向cpu發送渲染結束指令。然後cpu響應渲染結束指令,從環形延遲釋放隊列讀取目標命令列表所對應目標待釋放資源的目標存儲地址,並基於目標存儲地址釋放目標待釋放資源。如此,在接收到渲染結束指令時,cpu才釋放資源,保證了渲染目標遊戲畫面所需資源的有效性。
155.以上,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以權利要求的保護範圍為準。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀