初始化記憶體區段的使用
記憶體區段,在 Windows Vista 和更新版本的顯示驅動程式模型內容中, (WDDM) ,描述圖形處理器 (GPU) 位址空間給視訊記憶體管理員。 記憶體區段會一般化和虛擬化視訊記憶體資源。 記憶體區段會根據硬體支援的記憶體類型來設定 (,例如框架緩衝區記憶體或系統記憶體光圈) 。
若要初始化其使用記憶體區段的方式,Microsoft DirectX 圖形核心子系統 (Dxgkrnl.sys) 會呼叫 display miniport 驅動程式的 DxgkDdiQueryAdapterInfo 函式。 若要指示顯示迷你埠驅動程式從DxgkDdiQueryAdapterInfo呼叫傳回記憶體區段的相關資訊,圖形子系統會在DXGKARG_QUERYADAPTERINFO結構的Type成員中指定DXGKQAITYPE_QUERYSEGMENT或DXGKQAITYPE_QUERYSEGMENT3值。
圖形子系統會針對區段資訊呼叫顯示迷你埠驅動程式的 DxgkDdiQueryAdapterInfo 函式兩次。 第一次呼叫 DxgkDdiQueryAdapterInfo 會擷取驅動程式支援的區段數目,而第二個呼叫會擷取每個區段的詳細資訊。 在對DxgkDdiQueryAdapterInfo的呼叫中,驅動程式會將DXGKARG_QUERYADAPTERINFO (DXGK_QUERYSEGMENTOUT的 pOutputData 成員指向在 Windows Display Driver Model (WDDM) 1.2) 或針對 WDDM 1.2 和更新版本驅動程式 (填入DXGK_QUERYSEGMENTOUT3 (的pOutputData成員) 。
在第一次呼叫中,WDDM 1.2) (DXGK_QUERYSEGMENTOUT3或 WDDM 1.2 和更新版本驅動程式) 的pSegmentDescriptorDXGK_QUERYSEGMENTOUT成員 (會設定為Null。 驅動程式應該只填入DXGK_QUERYSEGMENTOUT的NbSegment成員,或DXGK_QUERYSEGMENTOUT3其支援的區段類型數目。 此數位也表示 WDDM 1.2) 或DXGK_SEGMENTDESCRIPTOR3 (WDDM 1.2 和更新版本驅動程式) 結構從第二次呼叫DxgkDdiQueryAdapterInfo所需的未填入DXGK_SEGMENTDESCRIPTOR (數目。
第二個呼叫中,驅動程式應該填滿 所有DXGK_QUERYSEGMENTOUT 或 DXGK_QUERYSEGMENTOUT3的成員。 第二次呼叫時,驅動程式應該在pSeg DXGK_SEGMENTDESCRIPTOR mentDescriptor DXGK_QUERYSEGMENTOUT 成員的 pSegmentDescriptor成員中填入nbSegment或DXGK_SEGMENTDESCRIPTOR3結構的大小陣列,DXGK_QUERYSEGMENTOUT3以及驅動程式所支援區段的相關資訊。
在這兩個對DxgkDdiQueryAdapterInfo的呼叫中,DXGKARG_QUERYADAPTERINFO的pInputData成員會指向包含 AGP 光圈位置和屬性相關資訊的DXGK_QUERYSEGMENTIN結構。 如果沒有 AGP 光圈可用,或有一個存在但未安裝適當的 GART 驅動程式,則 AGP 光圈的相關資訊會設定為零。 如果沒有 AGP 光圈,則顯示迷你埠驅動程式不應該在DXGK_QUERYSEGMENTOUT或DXGK_QUERYSEGMENTOUT3的pSegmentDescriptor陣列中指出它支援 AGP 類型的光圈區段。 如果在這種情況下指出 AGP 類型光圈區段,配接器將無法初始化。
在初始化期間,因為記憶體很豐富,所以可以從特定區段配置分頁緩衝區的記憶體。 視訊記憶體管理員會從DXGK_QUERYSEGMENTOUT或DXGK_QUERYSEGMENTOUT3的PagingBufferSegmentId成員中指定的區段配置分頁緩衝區的記憶體。 驅動程式會指出第二次呼叫 DxgkDdiQueryAdapterInfo中的分頁緩衝區區段識別碼。 驅動程式也應該指定應該配置給 pagingBufferSize 成員之 pagingBufferSize 成員中 DXGK_QUERYSEGMENTOUT 或 DXGK_QUERYSEGMENTOUT3的位元組大小。