DXGK_SEGMENTFLAGS struttura (d3dkmddi.h)
La struttura DXGK_SEGMENTFLAGS identifica le proprietà per un segmento fornito dal driver tramite una chiamata alla relativa funzione DxgkDdiQueryAdapterInfo .
Sintassi
typedef struct _DXGK_SEGMENTFLAGS {
union {
struct {
UINT Aperture : 1;
UINT Agp : 1;
UINT CpuVisible : 1;
UINT UseBanking : 1;
UINT CacheCoherent : 1;
UINT PitchAlignment : 1;
UINT PopulatedFromSystemMemory : 1;
UINT PreservedDuringStandby : 1;
UINT PreservedDuringHibernate : 1;
UINT PartiallyPreservedDuringHibernate : 1;
UINT DirectFlip : 1;
UINT Use64KBPages : 1;
UINT ReservedSysMem : 1;
UINT SupportsCpuHostAperture : 1;
UINT SupportsCachedCpuHostAperture : 1;
UINT ApplicationTarget : 1;
UINT VprSupported : 1;
UINT VprPreservedDuringStandby : 1;
UINT EncryptedPagingSupported : 1;
UINT LocalBudgetGroup : 1;
UINT NonLocalBudgetGroup : 1;
UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
UINT Reserved : 10;
#elif
UINT Reserved : 11;
#elif
UINT Reserved : 21;
#else
UINT Reserved : 22;
#endif
};
UINT Value;
};
} DXGK_SEGMENTFLAGS;
Members
Aperture
[out] Valore UINT che specifica se il segmento è un segmento di apertura anziché un segmento di memoria. Un segmento di apertura non dispone di pagine fisiche che possono contenere contenuto per un'allocazione. Quando la gestione memoria video pagine un'allocazione in un segmento di memoria, gestione memoria trasferisce il contenuto dell'allocazione dall'archivio di backup della memoria di sistema alla posizione del segmento. Quando la gestione memoria video pagine un'allocazione in un segmento di apertura, gestione memoria esegue il mapping delle pagine fisiche dell'archivio di backup dell'allocazione nel segmento.
Se il driver specifica questo membro, deve anche implementare i tipi di operazione map-aperture-segment e unmap-aperture-segment per la funzione DxgkDdiBuildPagingBuffer .
L'impostazione di questo membro equivale a impostare il primo bit del membro Valore a 32 bit (0x00000001).
Agp
[out] Valore UINT che specifica se il segmento è un segmento di apertura AGP**type, che usa una parte dell'apertura AGP esposta dal chipset. La gestione memoria video alloca la pagina per l'apertura sottostante e comunica con il driver garT (Graphic Address Remapping Table) per eseguire il mapping e la memoria non mappata per l'apertura. Poiché esiste un solo segmento AGP, il driver non deve specificare il flag di campo a bit Agp con qualsiasi altro flag di campo a bit DXGK_SEGMENTFLAGS.
L'impostazione di questo membro equivale a impostare il secondo bit del membro Valore a 32 bit (0x00000002).
CpuVisible
[out] Valore UINT che specifica se il segmento di memoria è accessibile alla CPU all'indirizzo specificato dal membro CpuTranslatedAddress della struttura DXGK_SEGMENTDESCRIPTOR che descrive il segmento di memoria.
Questo membro non ha alcun significato per un segmento di apertura, incluso il segmento di apertura di tipo AGP. L'unica eccezione si verifica quando il driver di visualizzazione in modalità utente non ha configurato un indirizzo virtuale alternativo per un'allocazione primaria, ovvero quando il driver non ha impostato UseAlternateVA nel membro Flag della struttura D3DDDICB_LOCKFLAGS durante una chiamata alla funzione pfnLockCb .
Per altre informazioni, vedere Osservazioni.
L'impostazione di questo membro equivale a impostare il terzo bit del membro Valore a 32 bit (0x00000004).
UseBanking
[out] Valore UINT che specifica se il segmento è diviso in banche usate dal driver per fornire hint al gestore della memoria video sulla posizione delle allocazioni all'interno del segmento. Il driver deve specificare anche informazioni bancarie valide nei membri NbOfBanks e pBankRangeTable della struttura DXGK_SEGMENTDESCRIPTOR che descrive il segmento.
L'impostazione di questo membro equivale a impostare il quarto bit del membro Valore a 32 bit (0x00000008).
CacheCoherent
[out] Valore UINT che specifica se il segmento di apertura può mantenere la coesistenza della cache con pagine memorizzate nella cache mappate all'apertura. Questo membro può essere impostato solo con l'impostazione del membro Aperture , ovvero CacheCoherent non ha alcun significato per un segmento di memoria.
L'impostazione di questo membro equivale a impostare il quinto bit del membro Valore a 32 bit (0x00000010).
PitchAlignment
[out] Valore UINT che specifica se un'allocazione mappata nel segmento deve essere allineata. Per questo tipo di segmento, gestione memoria video usa il membro Size della struttura di DXGK_ALLOCATIONINFO per l'allocazione per allocare un archivio di backup per l'allocazione. Tuttavia, la gestione memoria video usa il membro PitchAlignedSize di DXGK_ALLOCATIONINFO per allocare le risorse per il segmento. Un'allocazione destinata a questo tipo di segmento in genere ha dimensioni diverse per l'archivio di backup e per il segmento. Quando le dimensioni dell'archivio di backup non corrispondono alle dimensioni del segmento, il driver deve determinare come spostare correttamente i dati nell'allocazione. Impossibile usare questo tipo di segmento per la rimozione.
L'impostazione di questo membro equivale a impostare il sesto bit del membro Valore a 32 bit (0x00000020).
PopulatedFromSystemMemory
[out] Valore UINT che specifica se il segmento di memoria viene effettivamente popolato dalla memoria di sistema allocata dal driver durante l'inizializzazione. Se il segmento di memoria viene popolato dalla memoria di sistema riservata dal BIOS e non è accessibile al sistema operativo, ovvero il sistema operativo non conta questa memoria di sistema quando il sistema operativo segnala la quantità totale di memoria di sistema, il driver non deve impostare questo flag. Questo flag non è valido e ignorato nei segmenti di apertura.
L'impostazione di questo membro equivale a impostare il settimo bit del membro Value a 32 bit (0x00000040).
PreservedDuringStandby
[out] Valore UINT che specifica se il segmento viene mantenuto in una transizione a uno stato di alimentazione del sistema di standby.
Per altre informazioni sulle opzioni di power transition, vedere Osservazioni.
L'impostazione di questo membro equivale a impostare l'ottavo bit del membro Valore a 32 bit (0x00000080).
Supportato a partire da Windows 8.
PreservedDuringHibernate
[out] Valore UINT che specifica se il segmento viene mantenuto in una transizione a uno stato di alimentazione del sistema di ibernazione. Non impostare questo flag a meno che il membro PreservedDuringStandby non sia impostato. Per altre informazioni sulle opzioni di power transition, vedere Osservazioni.
L'impostazione di questo membro equivale a impostare il nono bit del membro Valore a 32 bit (0x00000100).
Supportato a partire da Windows 8.
PartiallyPreservedDuringHibernate
[out] Valore UINT che specifica se il segmento viene parzialmente mantenuto in una transizione a uno stato di alimentazione del sistema di ibernazione. Non impostare questo flag a meno che il membro PreservedDuringStandby non sia impostato. Per altre informazioni sulle opzioni di power transition, vedere Osservazioni.
L'impostazione di questo membro equivale a impostare il decimo bit del membro Valore a 32 bit (0x00000200).
Supportato a partire da Windows 8.
DirectFlip
[out] Valore UINT che specifica se un segmento supporta le allocazioni Direct Flip. In questo caso, il driver deve assicurarsi che le allocazioni direct Flip possano essere aggiunte e analizzate da questo segmento.
L'impostazione di questo membro equivale a impostare l'undicesimo bit del membro Valore a 32 bit (0x00000400).
Supportato a partire da Windows 8.
Use64KBPages
[out] Se impostato, il segmento di memoria GPU supporta 64 pagine KB. In caso contrario, sono supportate 4 pagine KB. Quando il driver imposta il limite e un'allocazione può essere impaginato nel segmento, l'allineamento dell'allocazione, restituito dal driver in modalità kernel da DXGK_ALLOCATIONINFO, deve essere più di 64 KB.
Supportato a partire da Windows 10.
ReservedSysMem
[out] Riservato per l'uso del sistema e non deve essere impostato dal driver in modalità kernel.
Supportato a partire da Windows 10.
SupportsCpuHostAperture
[out] Se impostato, il segmento può essere mappato tramite l'apertura dell'host DELLA CPU. Questo flag non può essere usato in combinazione con il flag CpuVisible .
Supportato a partire da Windows 10.
SupportsCachedCpuHostAperture
[out] Se impostato, questo indica che l'hardware supporta l'apertura dell'host CPU coerente nella cache della CPU. Inoltre, il flag SupportCpuHostAperture deve essere impostato. Il flag è in genere impostato dai driver di emulazione GPU software.
Supportato a partire da Windows 10.
ApplicationTarget
[out] Se impostato, indica che questo segmento deve essere destinato ai budget delle applicazioni.
Supportato a partire da Windows 10.
VprSupported
[out] Se impostato, indica che è supportato Video Protected Region (VPR).
VprPreservedDuringStandby
[out] Se impostato, indica che il contenuto delle VPN viene mantenuto durante lo standby.
EncryptedPagingSupported
[out] Se impostato, indica che le allocazioni protette dall'hardware vengono crittografate durante il paging.
LocalBudgetGroup
[out] Se impostato, indica che questo segmento conta rispetto al gruppo di budget del segmento di memoria locale.
NonLocalBudgetGroup
[out] Se impostato, indica che questo segmento viene conteggiato rispetto al gruppo di budget del segmento di memoria non locale.
PopulatedByReservedDDRByFirmware
[out] Se impostato, indica che questo segmento viene popolato dalla memoria DDR del sistema riservato dal firmware. Disponibile a partire da Windows Server 2022 (WDDM 2.9).
Reserved
[out] Questo membro è riservato e deve essere impostato su zero.
Value
[out] Membro dell'unione che DXGK_SEGMENTFLAGS contiene che può contenere un valore a 32 bit che identifica le proprietà del segmento.
Commenti
Il driver può specificare le proprietà del segmento impostando bit nel membro Valore a 32 bit o impostando singoli membri della struttura nell'unione che DXGK_SEGMENTFLAGS contiene.
Si noti che per un segmento di apertura di tipo AGP, il driver deve impostare esclusivamente il membro Agp della struttura nell'unione che DXGK_SEGMENTFLAGS contiene. Anche se il segmento di apertura di tipo AGP è un'apertura e visibile alla CPU, se sono impostati altri membri, l'adattatore non riesce a inizializzare.
Nel caso speciale in cui l'allocazione usa un segmento di apertura su un'allocazione primaria condivisa (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType è D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) e DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA non è impostato, il driver deve usare un'allocazione primaria supportata da sezioni (DXGK_VIDMMCAPS.SectionBackedPrimary è impostato) quando viene chiamata la funzione DxgkDdiQueryAdapterInfo del driver. Usando una primaria supportata da sezione, è possibile evitare le limitazioni di CpuVisible per il segmento di apertura.
È possibile evitare le limitazioni di CpuVisible per un segmento di apertura usando un'allocazione primaria condivisa e supportata da sezioni. In questo caso, usare un segmento di apertura in un'allocazione primaria condivisa (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType è D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), non impostare DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA e usare un'allocazione primaria supportata da sezioni (impostata DXGK_VIDMMCAPS.SectionBackedPrimary) quando viene chiamata la funzione DxgkDdiQueryAdapterInfo del driver.
Impostazioni di standby ottimizzate
La combinazione di valori per i membri StoredDuringStandby, StoredDuringHibernate e ParzialmentePreservedDuringHibernate determina se un segmento viene eliminato del relativo contenuto quando il sistema entra in uno stato di sistema a bassa potenza (standby), come indicato di seguito.
Conservato durante lo standby | Conservato durante l'ibernazione | Parzialmente conservato durante l'ibernazione | Stato standby | Stato di ibernazione |
---|---|---|---|---|
1 | 1 | 1 | non valido | non valido |
1 | 1 | 0 | non eliminato | non eliminato |
1 | 0 | 1 | non eliminato | parzialmente eliminato |
1 | 0 | 0 | non eliminato | Eliminati |
0 | 1 | 1 | non valido | non valido |
0 | 1 | 0 | non valido | non valido |
0 | 0 | 1 | non valido | non valido |
0 | 0 | 0 | Eliminati | Eliminati |
Il sistema operativo non riconosce le combinazioni in questa tabella contrassegnate come "non valide".
Se la modalità di sospensione ibrida è abilitata, il sistema agisce come se si tratti di ibernazione: elimina i segmenti che non vengono mantenuti durante l'ibernazione, anche se sta andando in uno stato di bassa potenza.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows Vista. |
Intestazione | d3dkmddi.h (include D3dkmddi.h) |