Sintaxe
Parâmetros
DestinationAddress _In_Tipo: D3D12_GPU_VIRTUAL_ADDRESS O endereço de destino como um D3D12_GPU_VIRTUAL_ADDRESS (UINT64). RangeCount _In_
Tipo: UINT O número de intervalos de mapeamento. pRanges _In_reads_(RangeCount)
Tipo: D3D12XBOX_PAGE_MAPPING_RANGE* Um ponteiro para uma matriz de estruturas D3D12XBOX_PAGE_MAPPING_RANGE, de comprimento RangeCount. O membro RangeType da estrutura especifica como os intervalos devem ser interpretados. Para obter mais informações, consulte D3D12XBOX_PAGE_MAPPING_RANGE_TYPE. SourcePagePoolAddress _In_
Tipo: D3D12_GPU_VIRTUAL_ADDRESS O endereço de origem como um D3D12_GPU_VIRTUAL_ADDRESS (UINT64). Se nenhum intervalo de mapeamento com os tipos de intervalo D3D12XBOX_PAGE_MAPPING_RANGE_TYPE_INCREMENTING_PAGE_INDICES ou D3D12XBOX_PAGE_MAPPING_RANGE_TYPE_CONSTANT_PAGE_INDEX estiver definido, os parâmetros SourcePagePoolAddress e SourcePagePoolPageCount poderão ser ambos 0. Caso contrário, SourcePagePoolAddress e SourcePagePoolPageCount devem ser diferentes de zero, e SourcePagePoolPageAddress deve estar alinhado em 64 KB SourcePagePoolPageCount _In_
Tipo: UINT A contagem de páginas de origem. Flags _In_
Tipo: D3D12XBOX_PAGE_MAPPING_FLAGS Sinalizadores que especificam detalhes adicionais sobre como as páginas são mapeadas.
Valor retornado
Tipo: HRESULT Um dos códigos de retorno do Direct3D 12.Comentários
Este método é análogo ao uso de MapTitlePhysicalPages e D3DMapEsramMemory, exceto que as páginas de origem são obtidas de um mapeamento existente em vez de listas de números de páginas. A API copia mapeamentos de páginas de 64 KB de um local de origem para um local de destino dentro das tabelas de páginas da GPU. As tabelas de páginas da CPU não são modificadas por esta API. Durante cada chamada a CopyPageMappingsX, o pipeline da GPU é liberado antes que as atualizações da tabela de páginas sejam executadas, e os caches TLB da GPU são liberados após as atualizações da tabela de páginas. O cenário de uso pretendido para CopyPageMappingsX é o seguinte:- No momento da inicialização, prepare um “pool de páginas de origem”, que serve como origem das cópias de mapeamento de páginas.
- Reserve um intervalo de memória virtual para o pool de páginas de origem usando XMemVirtualAlloc com MEM_64K_PAGES | MEM_RESERVE para o parâmetro AllocationType, junto com XMEM_GRAPHICS | XMEM_MAPPABLE para XMemFlags.
- Se estiver usando páginas de memória do sistema, aloque páginas de memória do sistema usando XMemAllocatePhysicalPages.
- Mapeie as páginas de memória do sistema para o intervalo de endereços reservado usando XMemMapPhysicalPages e/ou mapeie páginas ESRAM para o intervalo de endereços reservado usando D3DMapEsramMemory.
- Para cada recurso cujos mapeamentos precisam ser atualizados em tempo de execução:
- Use a biblioteca XG para calcular o tamanho do recurso em páginas de 64 KB.
- Reserve um intervalo de memória virtual para o recurso usando XMemVirtualAlloc com MEM_64K_PAGES | MEM_RESERVE para o parâmetro AllocationType, junto com XMEM_GRAPHICS | XMEM_MAPPABLE para XMemFlags.
- Crie um objeto de API de recurso de posicionamento passando o endereço virtual reservado do recurso para CreatePlacedResourceX.
- Em tempo de execução, quando os mapeamentos precisarem ser atualizados, chame CopyPageMappingsX na fila de comandos, copiando os mapeamentos do pool de páginas de origem para o intervalo de endereços reservado do recurso.
Requisitos
Cabeçalho: d3d12_x.h Biblioteca: d3d12_x.lib Plataformas com suporte: família XBOX OneConfira também
ID3D12CommandQueueClearPageMappingsX
