Partilhar via


estrutura DXGK_ALLOCATIONINFO (d3dkmddi.h)

A estrutura DXGK_ALLOCATIONINFO descreve parâmetros para criar uma alocação.

Sintaxe

typedef struct _DXGK_ALLOCATIONINFO {
  VOID                       *pPrivateDriverData;
  UINT                       PrivateDriverDataSize;
  union {
    UINT Alignment;
    struct {
      UINT16 MinimumPageSize;
      UINT16 RecommendedPageSize;
    };
  };
  SIZE_T                     Size;
  SIZE_T                     PitchAlignedSize;
  DXGK_SEGMENTBANKPREFERENCE HintedBank;
  DXGK_SEGMENTPREFERENCE     PreferredSegment;
  union {
    UINT SupportedReadSegmentSet;
    UINT MmuSet;
  };
  UINT                       SupportedWriteSegmentSet;
  UINT                       EvictionSegmentSet;
  union {
    UINT MaximumRenamingListLength;
    UINT PhysicalAdapterIndex;
  };
  HANDLE                     hAllocation;
  union {
    DXGK_ALLOCATIONINFOFLAGS         Flags;
    DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 FlagsWddm2;
  };
  DXGK_ALLOCATIONUSAGEHINT   *pAllocationUsageHint;
  UINT                       AllocationPriority;
  DXGK_ALLOCATIONINFOFLAGS2  Flags2;
} DXGK_ALLOCATIONINFO;

Membros

pPrivateDriverData

[in] Um ponteiro para um bloco de dados privados. Esses dados são para cada alocação e são distintos do membro pPrivateDriverData na estrutura DXGKARG_CREATEALLOCATION. O DRIVER de exibição do modo de usuário (UMD) pode passar esses dados para o KMD (driver de miniporto de exibição) no modo kernel. No entanto, se Dxgkrnl passar esses dados para descrever a superfície primária compartilhada ou outra superfície bloqueável, os dados serão passados como o primeiro elemento da matriz no pAllocationInfo membro do DXGKARG_CREATEALLOCATION.

PrivateDriverDataSize

[in] O tamanho, em bytes, do bloco de dados privados em pPrivateDriverData.

Alignment

[out] O alinhamento necessário, em bytes, para a alocação.

MinimumPageSize

RecommendedPageSize

Size

[out] O tamanho, em bytes, necessário para a alocação. O valor de tamanho é expandido para um múltiplo do tamanho da página do host nativo (por exemplo, 4 KB na arquitetura x86). O KMD especifica o tamanho da alocação para o gerenciador de memória de vídeo (VidMm).

PitchAlignedSize

[out] O tamanho, em bytes, da alocação quando ele está localizado em um segmento alinhado a pitch, que é especificado pelo sinalizador PitchAlignment campo de bits no Flags membro da estrutura DXGK_SEGMENTDESCRIPTOR do segmento. Se a alocação não tiver suporte em um segmento alinhado a pitch (as GPUs geralmente não dão suporte a esse tipo de segmento), o driver deverá definir o valor em PitchAlignedSize como zero. Se o driver especificar um valor diferente de zero em PitchAlignedSize, o valor deverá ser maior ou igual ao valor no membro tamanho .

HintedBank

[out] Uma estrutura DXGK_SEGMENTBANKPREFERENCE que especifica as preferências de ordenação bancária do KMD que VidMm usar para colocar a página na alocação. Se esse membro for especificado, VidMm usará informações bancárias sobre o segmento mais preferencial, que é especificado pelo membro SegmentId0 da estrutura DXGK_SEGMENTPREFERENCE especificada pelo membro PreferredSegment.

PreferredSegment

[out] Uma estrutura de DXGK_SEGMENTPREFERENCE que indica os identificadores de segmentos preferenciais que as solicitações KMD que VidMm usar para página na alocação.

SupportedReadSegmentSet

[out] Identificadores de segmento que o KMD pode definir no membro preferredSegment para operações de leitura. Os segmentos que esses identificadores indicam são segmentos que as solicitações KMD VidMm usar para colocar a página na alocação para operações de leitura, independentemente do desempenho. A configuração do bit 0 indica que o primeiro segmento tem suporte, a configuração do bit 1 indica que o segundo segmento tem suporte e assim por diante.

O KMD pode definir preferências apenas para segmentos com suporte para operações de leitura. VidMm afirma se o driver tenta definir preferências para segmentos sem suporte no membro preferredSegment .

MmuSet

SupportedWriteSegmentSet

[out] Identificadores de segmento que o KMD pode definir no membro PreferredSegment para operações de gravação. Os segmentos que esses identificadores indicam são segmentos que o KMD solicita que VidMm usar para colocar a página na alocação para operações de gravação, independentemente do desempenho. A configuração do bit 0 indica que o primeiro segmento tem suporte, a configuração do bit 1 indica que o segundo segmento tem suporte e assim por diante.

O KMD pode definir preferências apenas para segmentos com suporte para operações de gravação. VidMm afirma se o driver tenta definir preferências para segmentos sem suporte no membro preferredSegment .

EvictionSegmentSet

[out] Identificadores de segmentos que podem ser usados para remoção. A configuração do bit 0 indica que o primeiro segmento pode ser usado para remoção, a configuração do bit 1 indica que o segundo segmento pode ser usado para remoção e assim por diante.

Somente segmentos de abertura podem ser especificados por este membro. Se o driver especificar segmentos válidos a serem usados para remoção, VidMm tenta alocar recursos nesses segmentos de abertura para acelerar o processo de remoção. Se o driver especificar 0, VidMm chamará o driver para transferir o conteúdo de uma alocação diretamente para a memória do sistema com bloqueio de páginas sem mapear as páginas subjacentes por meio de um segmento de abertura.

MaximumRenamingListLength

[out] O comprimento máximo da lista de renomeação para a alocação. Para obter mais informações sobre a lista de renomeação, consulte Solicitando renomear umde alocação.

O suporte para esse membro começou com o Windows 10 e o WDDM v2.

PhysicalAdapterIndex

[out] O índice do adaptador físico.

O suporte para esse membro começou com o Windows 10 e o WDDM v2.

hAllocation

[out] Um identificador para a alocação. O KMD deve definir esse membro como um valor que ele pode usar para se referir à sua estrutura de acompanhamento privado para a alocação.

Flags

[out] Uma estrutura DXGK_ALLOCATIONINFOFLAGS que identifica propriedades para uma alocação em sinalizadores de campo de bit. Essas propriedades indicam o tipo de alocação a ser criada. O KMD especifica esses sinalizadores para VidMm. Os drivers direcionados a qualquer versão do WDDM anterior ao WDDM 2.0 devem usar sinalizadores ; os drivers direcionados a qualquer versão do WDDM >= WDDM 2.0 devem usar FlagsWddm2.

FlagsWddm2

[out] Uma estrutura DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 que identifica propriedades para uma alocação em sinalizadores de campo de bit. Essas propriedades indicam o tipo de alocação a ser criada. O KMD especifica esses sinalizadores para VidMm. Os drivers direcionados a qualquer versão do WDDM >= WDDM 2.0 devem usar FlagsWddm2; os drivers direcionados a qualquer versão do WDDM anterior ao WDDM 2.0 devem usar sinalizadores .

pAllocationUsageHint

[out] Um ponteiro para uma estrutura DXGK_ALLOCATIONUSAGEHINT que o gerenciador de memória usa para determinar como usar a alocação.

AllocationPriority

[out] Um valor UINT que especifica o nível de prioridade inicial da alocação.

O driver determina o nível de prioridade apropriado para cada alocação. Para obter mais informações sobre os níveis de prioridade, consulte a seção Comentários da função pfnSetPriorityCb. Se o nível de prioridade para alocações não for um problema para o driver, o driver deverá definir todos os níveis de prioridade para D3DDDI_ALLOCATIONPRIORITY_NORMAL. Observe que 0 é uma prioridade de alocação inicial inválida.

Flags2

[out] Uma estrutura DXGK_ALLOCATIONINFOFLAGS2 que contém propriedades adicionais para uma alocação. Com suporte a partir do Windows 11 (WDDM 3.0).

Observações

Com o WDDM v2, a estrutura de DXGK_ALLOCATIONINFO foi alterada para que o conjunto de segmentos de leitura e gravação não seja mais diferenciado. Durante a criação da superfície, VidMm ignorará o valor de SupportedReadSegmentSet e usará apenas o conjunto de segmentos fornecido por SupportedWriteSegmentSet. Os drivers devem garantir que esse valor represente com precisão o conjunto de segmentos que pode ser usado pela alocação para sua finalidade pretendida.

Ignorar o conjunto de segmentos de leitura com suporte não significa que ele não tem mais suporte, mas simplesmente que não deve haver mais uma diferença entre esses conjuntos e VidMm poderão escolher um segmento apropriado para qualquer alocação de um único conjunto de segmentos.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows Vista
cabeçalho d3dkmddi.h (inclua D3dkmddi.h)

Consulte também

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation

DxgkDdiRender

pfnAllocateCb