DXGK_SEGMENTDESCRIPTOR3構造体 (d3dkmddi.h)
DXGK_SEGMENTDESCRIPTOR3 構造体には、BIOS で予約されたメモリ (低電力状態への移行中に消去される) とドライバーが予約したメモリの両方で構成される、ドライバーがサポートするセグメントに関する情報が含まれています。
構文
typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
[out] DXGK_SEGMENTFLAGS Flags;
[out] PHYSICAL_ADDRESS BaseAddress;
[out] PHYSICAL_ADDRESS CpuTranslatedAddress;
[out] SIZE_T Size;
[out] UINT NbOfBanks;
[out] SIZE_T *pBankRangeTable;
[out] SIZE_T CommitLimit;
SIZE_T SystemMemoryEndAddress;
SIZE_T Reserved;
} DXGK_SEGMENTDESCRIPTOR3;
メンバーズ
[out] Flags
セグメントのプロパティをビット フィールド フラグで識別する DXGK_SEGMENTFLAGS 構造体。
AGP タイプの絞りセグメントの場合、ドライバーは、DXGK_SEGMENTFLAGSに含まれる共用体の構造体の Agp メンバーを排他的に設定する必要があることに注意してください。 AGP タイプの絞りセグメントは絞りであり、CPU からアクセスできますが、他のメンバーが設定されている場合、アダプターは初期化に失敗します。
[out] BaseAddress
グラフィックス処理装置 (GPU) によって決定されるセグメントのベース アドレス。 セグメント内でビデオ メモリ マネージャーがページングした割り当ての物理アドレスには、BaseAddress が指定したベース アドレスからオフセットされた GPU アドレス 割り当てられます。
ビデオ メモリ マネージャーは、AGP タイプのアパーチャ セグメントのベース アドレス (Agp ビット フィールド フラグが Flags メンバーで指定されている) を無視し、代わりに GPU が配置されているバスで決定された AGP アパーチャ内のセグメントの実際の物理アドレスを使用します。 このような状況では、ドライバーは、変換を必要とせずに直接割り当てのために生成されたビデオ メモリ マネージャーアドレスを使用できます。
[out] CpuTranslatedAddress
GPU が接続されているバスを基準としたセグメントのベース アドレス。 たとえば、GPU が PCI バスに接続されている場合、CpuTranslatedAddress は、PCI ベース アドレス レジスタ (BAR) で指定されている使用可能な範囲のベース アドレスです。 ドライバーは、Flags メンバーの CpuVisible ビット フィールド フラグを設定することによって、CPU アクセス可能なセグメントを指定する場合にのみ、このアドレスを指定します。
このメンバーは、AGP タイプの絞りセグメントを含む絞りセグメントでは無視されます。 唯一の例外は、ユーザー モード ディスプレイ ドライバーがプライマリ割り当ての代替仮想アドレスを設定していない場合 (つまり、pfnLockCb 関数の呼び出し中に、D3DDDICB_LOCKFLAGS 構造体の Flags メンバーで UseAlternateVA 設定していない場合) に発生します。
ビデオ メモリ マネージャーは、仮想アドレスを物理範囲にマップする前に、ビデオ メモリ マネージャーは、バスの CPU ビューに基づいてこの物理アドレスを変換し、ドライバーが指定された場所にあるセグメントのコンテンツにアクセスする絞りを設定できるように、操作についてドライバーに通知します。
[out] Size
セグメントのサイズ (バイト単位)。 このサイズは、ネイティブ ホスト ページ サイズの倍数である必要があります (たとえば、x86 アーキテクチャでは 4 KB)。
AGP タイプの絞りセグメント (Agp ビット フィールド フラグが Flags メンバーで指定されている) の場合、ビデオ メモリ マネージャーはできるだけ多くのアパーチャ領域を割り当てるので、このメンバーは無視されます。
[out] NbOfBanks
銀行処理が使用されている場合のセグメント内のバンクの数 (つまり、UseBanking ビット フィールド フラグが Flags メンバーで設定されている場合)。
[out] pBankRangeTable
セグメント内の各バンクを区切る範囲を示す値の配列。 ドライバーは、Flags メンバーの UseBanking ビット フィールド フラグも設定する場合にのみ、この配列を指定します。
配列は、NbOfBanks番目のバンク (つまり、各バンクのセグメントへの終了オフセット) を介して、最初のバンクの終了アドレスを指定します。 次の点に注意してください。
バンクは連続しています。
最初のバンクは、セグメントのオフセット 0 から始まります。
最後のバンクはセグメントの末尾で終了するため、ドライバーは最後のバンクの終了アドレスを指定する必要はありません。
[out] CommitLimit
セグメントにコミットできる最大バイト数。 メモリ セグメントの場合、コミット制限は、Size メンバーで指定されているセグメントのサイズと常に同じです。 絞りセグメントの場合、ドライバーは、少量の物理メモリを持つシステム上のセグメントにコミットできるメモリの量を制限できます。
SystemMemoryEndAddress
システム メモリで部分的に構成されるセグメントの場合、このアドレスの後に開始されるすべての割り当ては、休止状態に移行して消去されます。 セグメント アドレスが SystemMemoryEndAddress 以下であるシステム メモリ内に完全に存在する割り当ては、この遷移では削除されません。
ディスプレイ ミニポート ドライバーは、セグメントが休止状態への遷移で部分的に保持されている場合は、このメンバーを非NULL 値に設定する必要があります。その場合、DXGK_SEGMENTFLAGS 構造体の PartiallyPreservedDuringHibernate メンバーを設定する必要があります。
ドライバー予約メモリは、セグメント アドレス 0 から SystemMemoryEndAddress(両端を含む) で実行されます。 BIOS で予約されたメモリは、セグメントの末尾まで (SystemMemoryEndAddress+1) から実行されます。
Reserved
このメンバーは予約されており、0 に設定する必要があります。
備考
この構造体は、WDDM 1.2 以降のカーネル モードディスプレイ ミニポート ドライバーが、グラフィックス サブシステムが DXGKARG_QUERYADAPTERINFO 構造体の 型 メンバーの DXGKQAITYPE_QUERYSEGMENT3 値を指定する DxgkDdiQueryAdapterInfo 関数呼び出しに応答してメモリ セグメントに関する情報を返すために使用されます。
この構造体は、DXGK_QUERYSEGMENTOUT3 構造体の pSegmentDescriptor メンバーによって指されます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 |
サポートされる最小サーバー | Windows Server 2012 |
ヘッダー | d3dkmddi.h |
関連項目
DxgkDdiQueryAdapterInfoの