struttura DXGK_ALLOCATIONINFO (d3dkmddi.h)
La struttura DXGK_ALLOCATIONINFO descrive i parametri per la creazione di un'allocazione.
Sintassi
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;
Membri
pPrivateDriverData
[in] Puntatore a un blocco di dati privati. Questi dati sono per ogni allocazione ed è distinto dal membro
PrivateDriverDataSize
[in] Dimensioni, in byte, del blocco di dati privati in pPrivateDriverData.
Alignment
[out] Allineamento richiesto, in byte, per l'allocazione.
MinimumPageSize
RecommendedPageSize
Size
[out] Dimensioni, in byte, necessarie per l'allocazione. Il valore delle dimensioni viene espanso in un multiplo delle dimensioni della pagina host nativa, ad esempio 4 KB nell'architettura x86. Il KMD specifica le dimensioni di allocazione per la gestione della memoria video (VidMm).
PitchAlignedSize
[out] Dimensioni, in byte, dell'allocazione quando si trova in un segmento allineato a passo, specificato dal flag PitchAlignment campo di bit nel Flags membro della struttura DXGK_SEGMENTDESCRIPTOR per il segmento. Se l'allocazione non è supportata in un segmento allineato a passo (le GPU non supportano in genere questo tipo di segmento), il driver deve impostare il valore in PitchAlignedSize su zero. Se il driver specifica un valore diverso da zero in
HintedBank
[out] Struttura DXGK_SEGMENTBANKPREFERENCE che specifica le preferenze di ordinamento bancario del KmD che VidMm utilizzare per la pagina nell'allocazione. Se si specifica questo membro,
PreferredSegment
[out] Struttura DXGK_SEGMENTPREFERENCE che indica gli identificatori di segmenti preferiti che il KMD richiede che VidMm usare per l'allocazione di pagine.
SupportedReadSegmentSet
[out] Identificatori di segmento che il KMD può impostare nel membro
Il KmD può impostare le preferenze solo per i segmenti supportati per le operazioni di lettura. vidMm asserisce se il driver tenta di impostare le preferenze per i segmenti non supportati nel membro PreferredSegment.
MmuSet
SupportedWriteSegmentSet
[out] Identificatori di segmento che il kmD può impostare nel membro PreferredSegment per le operazioni di scrittura. I segmenti che questi identificatori indicano sono segmenti che le richieste kmd che VidMm usare per l'allocazione di pagine per le operazioni di scrittura, indipendentemente dalle prestazioni. L'impostazione del bit 0 indica che il primo segmento è supportato, l'impostazione del bit 1 indica che il secondo segmento è supportato e così via.
Il KmD può impostare le preferenze solo per i segmenti supportati per le operazioni di scrittura. vidMm asserisce se il driver tenta di impostare le preferenze per i segmenti non supportati nel membro PreferredSegment.
EvictionSegmentSet
[out] Identificatori di segmenti che possono essere usati per la rimozione. L'impostazione del bit 0 indica che il primo segmento può essere usato per la rimozione, impostando bit 1 indica che il secondo segmento può essere usato per la rimozione e così via.
Solo i segmenti di apertura possono essere specificati da questo membro. Se il driver specifica segmenti validi da usare per la rimozione, VidMm tenta di allocare risorse in tali segmenti di apertura per accelerare il processo di rimozione. Se il driver specifica 0, VidMm chiama il driver per trasferire il contenuto di un'allocazione direttamente alla memoria di sistema bloccata a paging senza eseguire il mapping delle pagine sottostanti tramite un segmento di apertura.
MaximumRenamingListLength
[out] Lunghezza massima dell'elenco di ridenominazione per l'allocazione. Per altre informazioni sull'elenco di ridenominazione, vedere Richiesta di ridenominazione di un'allocazione.
Supporto per questo membro avviato con Windows 10 e WDDM v2.
PhysicalAdapterIndex
[out] Indice dell'adattatore fisico.
Supporto per questo membro avviato con Windows 10 e WDDM v2.
hAllocation
[out] Handle per l'allocazione. Il kmD deve impostare questo membro su un valore che può usare per fare riferimento alla relativa struttura di rilevamento privata per l'allocazione.
Flags
[out] Struttura DXGK_ALLOCATIONINFOFLAGS che identifica le proprietà per un'allocazione in flag di campo di bit. Queste proprietà indicano il tipo di allocazione da creare. Il KMD specifica questi flag per VidMm. I driver destinati a qualsiasi versione WDDM precedente a WDDM 2.0 devono usare Flag; i driver destinati a qualsiasi versione wdDM >= WDDM 2.0 devono usare FlagsWddm2.
FlagsWddm2
[out] Struttura DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 che identifica le proprietà per un'allocazione in flag di campo di bit. Queste proprietà indicano il tipo di allocazione da creare. Il KMD specifica questi flag per VidMm. I driver destinati a qualsiasi versione WDDM >= WDDM 2.0 devono usare FlagsWddm2; i driver destinati a qualsiasi versione WDDM precedente a WDDM 2.0 devono usare Flag.
pAllocationUsageHint
[out] Puntatore a una struttura DXGK_ALLOCATIONUSAGEHINT utilizzata dal gestore della memoria per determinare come usare l'allocazione.
AllocationPriority
[out] Valore UINT che specifica il livello di priorità iniziale dell'allocazione.
Il driver determina il livello di priorità appropriato per ogni allocazione. Per altre informazioni sui livelli di priorità, vedere la sezione Osservazioni della funzione
Flags2
[out] Struttura DXGK_ALLOCATIONINFOFLAGS2 che contiene proprietà aggiuntive per un'allocazione. Supportato a partire da Windows 11 (WDDM 3.0).
Osservazioni
Con WDDM v2, la struttura DXGK_ALLOCATIONINFO è stata modificata in modo che il set di segmenti di lettura e scrittura non sia più differenziato. Durante la creazione della superficie, VidMm ignorerà il valore SupportedReadSegmentSet e userà solo il set di segmenti fornito da SupportedWriteSegmentSet. I driver devono garantire che questo valore rappresenti in modo accurato il set di segmenti che può essere usato dall'allocazione per lo scopo previsto.
Ignorando il set di segmenti di lettura supportati non significa che non è più supportata, ma semplicemente che non dovrebbe esserci più una differenza tra questi set e VidMm sarà consentito scegliere un segmento appropriato per qualsiasi allocazione da un singolo set di segmenti.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista |
intestazione |
d3dkmddi.h (include D3dkmddi.h) |