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
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
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
O KMD pode definir preferências apenas para segmentos com suporte para operações de leitura.
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.
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) |