Compartilhar via


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)