語法
參數
DestinationAddress _In_類型:D3D12_GPU_VIRTUAL_ADDRESS 以 D3D12_GPU_VIRTUAL_ADDRESS (UINT64) 表示的目的地位址。 RangeCount _In_
類型:UINT 對應範圍的數目。 pRanges _In_reads_(RangeCount)
類型:D3D12XBOX_PAGE_MAPPING_RANGE* 指向長度為 RangeCount 之 D3D12XBOX_PAGE_MAPPING_RANGE 結構陣列的指標。結構的 RangeType 成員指定範圍的解譯方式。如需詳細資訊,請參閱 D3D12XBOX_PAGE_MAPPING_RANGE_TYPE。 SourcePagePoolAddress _In_
類型:D3D12_GPU_VIRTUAL_ADDRESS 以 D3D12_GPU_VIRTUAL_ADDRESS (UINT64) 表示的來源位址。 如果未設定範圍類型為 D3D12XBOX_PAGE_MAPPING_RANGE_TYPE_INCREMENTING_PAGE_INDICES 或 D3D12XBOX_PAGE_MAPPING_RANGE_TYPE_CONSTANT_PAGE_INDEX 的對應範圍,則 SourcePagePoolAddress 和 SourcePagePoolPageCount 參數都可以是 0。否則,SourcePagePoolAddress 和 SourcePagePoolPageCount 都必須為非零值,且 SourcePagePoolPageAddress 必須以 64KB 對齊 SourcePagePoolPageCount _In_
類型:UINT 來源分頁計數。 Flags _In_
類型:D3D12XBOX_PAGE_MAPPING_FLAGS 指定分頁對應方式之其他詳細資料的旗標。
傳回值
類型:HRESULT 其中一個 Direct3D 12 傳回碼。備註
此方法類似於使用 MapTitlePhysicalPages 和 D3DMapEsramMemory,差別在於來源分頁取自現有的對應,而非分頁編號清單。此 API 會將 64KB 分頁對應從 GPU 分頁表內的來源位置複製到目的地位置。此 API 不會修改 CPU 分頁表。每次呼叫 CopyPageMappingsX 期間,會先排清 GPU 管線再執行分頁表更新,並在分頁表更新之後排清 GPU TLB 快取。 CopyPageMappingsX 的預期使用案例如下:- 在初始化時,準備一個「來源分頁集區」,作為分頁對應複製的來源。
- 使用 XMemVirtualAlloc 為來源分頁集區保留虛擬記憶體範圍,AllocationType 參數使用 MEM_64K_PAGES | MEM_RESERVE,XMemFlags 則使用 XMEM_GRAPHICS | XMEM_MAPPABLE。
- 如果使用系統記憶體分頁,請使用 XMemAllocatePhysicalPages 配置系統記憶體分頁。
- 使用 XMemMapPhysicalPages 將系統記憶體分頁對應到保留的位址範圍,和/或使用 D3DMapEsramMemory 將 ESRAM 分頁對應到保留的位址範圍。
- 針對需要在執行階段更新對應的每個資源:
- 使用 XG 程式庫計算資源的大小 (以 64KB 分頁為單位)。
- 使用 XMemVirtualAlloc 為資源保留虛擬記憶體範圍,AllocationType 參數使用 MEM_64K_PAGES | MEM_RESERVE,XMemFlags 則使用 XMEM_GRAPHICS | XMEM_MAPPABLE。
- 將資源的保留虛擬位址傳遞給 CreatePlacedResourceX,以建立放置資源 API 物件。
- 在執行階段需要更新對應時,在命令佇列上呼叫 CopyPageMappingsX,將對應從來源分頁集區複製到資源的保留位址範圍。
需求
標頭: d3d12_x.h 程式庫: d3d12_x.lib 支援的平台: XBOX One 系列另請參閱
ID3D12CommandQueueClearPageMappingsX
