次の方法で共有


DXGK_SEGMENTDESCRIPTOR 構造体 (d3dkmddi.h)

DXGK_SEGMENTDESCRIPTOR構造体には、ドライバーがサポートするセグメントに関する情報が含まれています。

構文

typedef struct _DXGK_SEGMENTDESCRIPTOR {
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
  [out] DXGK_SEGMENTFLAGS Flags;
} DXGK_SEGMENTDESCRIPTOR;

メンバー

[out] BaseAddress

グラフィックス処理装置 (GPU) によって決定されるセグメントのベース アドレス。 セグメント内でビデオ メモリ マネージャーがページングした割り当ての物理アドレスには、 BaseAddress で指定されたベース アドレスからオフセットされた GPU アドレスが割り当てられます。

ビデオ メモリ マネージャーは、AGP タイプの絞りセグメント (フラグ メンバーでAgp ビット フィールド フラグが指定されている) のベース アドレスを無視し、代わりに、GPU が配置されているバスで決定された AGP アパーチャ内のセグメントの実際の物理アドレスを使用します。 この状況では、ドライバーは、変換を必要とせずに、割り当てのためにビデオ メモリ マネージャーが直接生成したアドレスを使用できます。

[out] CpuTranslatedAddress

GPU が接続されているバスを基準としたセグメントのベース アドレス。 たとえば、GPU が PCI バスに接続されている場合、 CpuTranslatedAddress は、PCI ベース アドレス レジスタ (BAR) で指定された使用可能な範囲のベース アドレスです。 ドライバーは、フラグ メンバーで CpuVisible ビット フィールド フラグを設定することによって、CPU アクセス可能なセグメントを指定する場合にのみ、このアドレスを指定します。

このメンバーは、AGP タイプの絞りセグメントを含む絞りセグメントでは無視されます。 唯一の例外は、ユーザー モードのディスプレイ ドライバーがプライマリ割り当ての代替仮想アドレスを設定していない場合 (つまり、pfnLockCb 関数の呼び出し中に、D3DDDICB_LOCKFLAGS構造体の Flags メンバーでドライバーが UseAlternateVA を設定していない場合) に発生します。

ビデオ メモリ マネージャーが仮想アドレスを物理範囲にマップする前に、ビデオ メモリ マネージャーはバスの CPU ビューに基づいてこの物理アドレスを変換し、ドライバーが特定の場所にあるセグメントのコンテンツにアクセスするための絞りを設定できるように、操作についてドライバーに通知します。

[out] Size

セグメントのサイズ (バイト単位)。 このサイズは、ネイティブ ホスト ページ サイズの倍数である必要があります (たとえば、x86 アーキテクチャでは 4 KB)。

AGP タイプの絞りセグメント (フラグ メンバーでAgp ビット フィールド フラグが指定されている場合) の場合、ビデオ メモリ マネージャーはできるだけ多くの開口領域を割り当てるので、このメンバーは無視されます。

[out] NbOfBanks

銀行取引が使用されている場合 (つまり、 UseBanking ビット フィールド フラグが Flags メンバーに設定されている場合) セグメント内のバンクの数。

[out] pBankRangeTable

セグメント内の各バンクを区切る範囲を示す値の配列。 ドライバーは、フラグ メンバーの UseBanking ビット フィールド フラグも設定する場合にのみ、この配列を指定します。

配列は 、NbOfBanks番目のバンクを通る最初のバンクの終了アドレス (つまり、各バンクのセグメントへの終了オフセット) を指定します。 次のことを考慮してください。

  • 銀行は連続しています。

  • 最初の銀行は、セグメントのオフセット 0 から始まります。

  • 最後の銀行はセグメントの末尾で終了するため、ドライバーは最後の銀行の終了アドレスを指定する必要はありません。

[out] CommitLimit

セグメントにコミットできる最大バイト数。 メモリ セグメントの場合、コミットの制限は常に、 Size メンバーで指定されているセグメントのサイズと同じです。 絞りセグメントの場合、ドライバーは、物理メモリの量が少ないシステム上のセグメントにコミットできるメモリの量を制限できます。

[out] Flags

セグメント のプロパティ をビット フィールド フラグで識別するDXGK_SEGMENTFLAGS構造体。

AGP タイプの絞りセグメントの場合、ドライバーは、DXGK_SEGMENTFLAGSに含まれる共用体の構造体の Agp メンバーを排他的に設定する必要があることに注意してください。 AGP タイプの絞りセグメントは絞りであり、CPU からアクセスできますが、他のメンバーが設定されている場合、アダプターは初期化に失敗します。

要件

要件
サポートされている最小のクライアント Windows Vista
Header d3dkmddi.h (D3dkmddi.h を含む)

こちらもご覧ください

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_QUERYSEGMENTOUT

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo

pfnLockCb