Condividi tramite


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 pPrivateDriverData nella struttura DXGKARG_CREATEALLOCATION. Il driver di visualizzazione in modalità utente (UMD) potrebbe passare questi dati al driver miniport (KMD) in modalità kernel. Tuttavia, se Dxgkrnl passa questi dati per descrivere la superficie primaria condivisa o un'altra superficie bloccabile, i dati vengono passati come primo elemento della matrice nel pAllocationInfo membro di DXGKARG_CREATEALLOCATION.

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 PitchAlignedSize, il valore deve essere maggiore o uguale al valore nel membro Size .

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, VidMm utilizza informazioni bancarie sul segmento più preferito, specificato dal membro SegmentId0 della struttura DXGK_SEGMENTPREFERENCE specificata dal membro PreferredSegment .

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 PreferredSegment per le operazioni di lettura. I segmenti che questi identificatori indicano sono segmenti che le richieste kmd VidMm usare per eseguire il paging nell'allocazione per le operazioni di lettura, 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 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 pfnSetPriorityCb. Se il livello di priorità per le allocazioni non è un problema per il driver, il driver deve impostare tutti i livelli di priorità su D3DDDI_ALLOCATIONPRIORITY_NORMAL. Si noti che 0 è una priorità di allocazione iniziale non valida.

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)

Vedere anche

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation

DxgkDdiRender

pfnAllocateCb