estrutura DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE é usado como parte de uma operação de atualização de tabela de página.
Sintaxe
typedef struct _DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE {
UINT PageTableLevel;
HANDLE hAllocation;
DXGK_PAGETABLEUPDATEADDRESS PageTableAddress;
DXGK_PTE *pPageTableEntries;
UINT StartIndex;
UINT NumPageTableEntries;
UINT Reserved0;
DXGK_UPDATEPAGETABLEFLAGS Flags;
UINT64 DriverProtection;
UINT64 AllocationOffsetInBytes;
HANDLE hProcess;
DXGK_PAGETABLEUPDATEMODE UpdateMode;
DXGK_PTE *pPageTableEntries64KB;
D3DGPU_VIRTUAL_ADDRESS FirstPteVirtualAddress;
} DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE;
Membros
PageTableLevel
Nível de uma tabela de página, que é atualizada.
hAllocation
Identificador de driver do modo kernel de uma alocação, que é mapeada pelas entradas da tabela de páginas. O identificador é retornado pelo driver do modo kernel de DxgkDdiCreateAllocation. O identificador pode ser NULL para alocações, que não têm um identificador de driver de modo kernel (tabelas de página, diretórios de página etc.).
PageTableAddress
Endereço da tabela de página a ser atualizada. Se DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode for DXGK_PAGETABLEUPDATE_CPU_VIRTUAL, o endereço virtual da CPU estará no campo CpuVirtual . Se DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode for DXGK_PAGETABLEUPDATE_GPU_VIRTUAL, o endereço virtual da GPU estará no campo GpuVirtual . Se DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode for DXGK_PAGETABLEUPDATE_GPU_PHYSICAL, o endereço físico da GPU estará no campo GpuPhysical .
pPageTableEntries
As entradas que precisam ser copiadas. O índice zero na matriz pPageTableEntries corresponde ao StartIndex na matriz de entrada da tabela de páginas do driver.
StartIndex
O índice inicial de uma entrada de tabela de página dentro da tabela de páginas em que as entradas devem ser copiadas. O índice de matriz de entrada da tabela de páginas é baseado em zero.
NumPageTableEntries
O número de entradas que precisam ser copiadas.
Reserved0
Esse membro é reservado e deve ser definido como zero.
Flags
DXGK_UPDATEPAGETABLEFLAGS estrutura que descreve a operação de atualização.
DriverProtection
Passado por UMD em MapGpuVirtualAddressRangeCb.
AllocationOffsetInBytes
Quando hAllocation não é NULL, esse campo especifica o deslocamento relativo, em bytes, desde o início da alocação até a primeira página que está sendo direcionada por essa operação de atualização. Se a atualização direcionar várias páginas de hAllocation, essas páginas serão sequenciais. Por exemplo, o gerenciador de memória de vídeo pode estar atualizando um endereço virtual de GPU para a página 4,5,6,7 em hAllocation. Nunca haverá um caso em que um driver veja uma única operação de atualização direcionada a páginas não sequenciais (por exemplo, 4,5,7). Observe que, embora as páginas tenham a garantia de serem sequenciais do ponto de vista da alocação, elas podem não ser fisicamente contíguas na memória.
hProcess
Identificador de processo do driver do modo kernel para o processo cujas entradas de tabela de página são atualizadas. Esse é o valor retornado de DxgkDdiCreateProcess.
UpdateMode
Define o significado de PageTableAddress. Ao inicializar tabelas de página para o processo de paginação, o modo de atualização é sempre DXGK_PAGETABLEUPDATE_CPU_VIRTUAL e pDmaBuffer é definido como NULL. Nesse caso, o driver deve atualizar as tabelas de páginas imediatamente. Em outros casos, UpdateMode é definido como o valor , que é especificado em DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode.
Ao atualizar entradas de tabela de página para uma tabela de página folha, o gerenciador de memória de vídeo pressupõe que cada entrada abrange uma página de 4 KB. Se uma página de GPU for maior (4 KB * 2n), o gerenciador de memória de vídeo fornecerá entradas na matriz, que apontam dentro de páginas de GPU. O driver do modo kernel pode precisar apenas inicializar entradas de tabela de página, que apontam para o início das páginas de GPU. A figura a seguir ilustra isso para o caso quando a página de GPU é de 16 KB.
pPageTableEntries64KB
As entradas que precisam ser copiadas das tabelas de página de 64 KB. O índice zero na matriz pPageTableEntries corresponde ao StartIndex na matriz de entrada da tabela de páginas do driver. A matriz deve ser usada somente quando o limite DXGK_GPUMMUCAPS::D ualPteSupported for definido.
FirstPteVirtualAddress
O endereço virtual de GPU mapeado pela primeira entrada de tabela de página atualizada.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 |
Servidor mínimo com suporte | Windows Server 2016 |
Cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |