D3DDDI_SYNCHRONIZATIONOBJECTINFO2 構造体 (d3dukmdt.h)

D3DDDI_SYNCHRONIZATIONOBJECTINFO2構造体には、第 2 世代同期オブジェクトに関する情報が含まれています。

構文

typedef struct _D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
  D3DDDI_SYNCHRONIZATIONOBJECT_TYPE  Type;
  D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
  union {
    struct {
      BOOL InitialState;
    } SynchronizationMutex;
    struct {
      UINT MaxCount;
      UINT InitialCount;
    } Semaphore;
    struct {
      D3DKMT_ALIGN64 UINT64 FenceValue;
    } Fence;
    struct {
      void D3DKMT_PTR(
    HANDLE unnamedParam1,
    Event  unnamedParam2
  );
    } CPUNotification;
    struct {
      D3DKMT_ALIGN64 UINT64                 InitialFenceValue;
      void                                  D3DKMT_PTR(
    VOID                        *unnamedParam1,
    FenceValueCPUVirtualAddress unnamedParam2
  );
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
      UINT                                  Padding;
    } MonitoredFence;
    struct {
      D3DKMT_HANDLE                         hAdapter;
      D3DDDI_VIDEO_PRESENT_TARGET_ID        VidPnTargetId;
      D3DKMT_ALIGN64 UINT64                 Time;
      void                                  D3DKMT_PTR(
    VOID                        *unnamedParam1,
    FenceValueCPUVirtualAddress unnamedParam2
  );
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
      UINT                                  Padding;
    } PeriodicMonitoredFence;
    struct {
      D3DKMT_ALIGN64 UINT64 Reserved[8];
    } Reserved;
  };
  D3DKMT_HANDLE                      SharedHandle;
} D3DDDI_SYNCHRONIZATIONOBJECTINFO2;

メンバー

Type

[入力]同期オブジェクトの種類 示す D3DDDI_SYNCHRONIZATIONOBJECT_TYPE 型の値。

Flags

[入力]ビット フィールド フラグで同期オブジェクトの属性を指定するD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS構造体。

SynchronizationMutex

同期ミューテックスに関する情報を格納する構造体。 Type メンバーがD3DDDI_SYNCHRONIZATION_MUTEXと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2の共用体は SynchronizationMutex 構造体を保持します。

SynchronizationMutex.InitialState

同期ミューテックスがオブジェクトによって最初に所有されているかどうかを示すブール値。 TRUE の値は、ミューテックスが所有されていることを示します。FALSE は、ミューテックスが所有されていないことを示します。

Semaphore

セマフォに関する情報を含む構造体。 Type メンバーが D3DDDI_SEMAPHORE と等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2の共用体は Semaphore 構造体を保持します。

Semaphore.MaxCount

オブジェクトが待機できるイベントの最大数。

Semaphore.InitialCount

オブジェクトが待機しているイベントの初期数。

Fence

フェンスに関する情報を格納する構造体。 Type メンバーがD3DDDI_FENCEと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2の共用体は Fence 構造体を保持します。

Fence.FenceValue

最初のフェンス値を指定する 64 ビット値。

CPUNotification

CPU 通知に関する情報を含む構造体。 Type メンバーが D3DDDI_CPU_NOTIFICATION と等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2の共用体は CPUNotification 構造体を保持します。

void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)

MonitoredFence

監視対象のフェンスに関する情報を格納する構造体。 Type メンバーが D3DDDI_MONITORED_FENCE と等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2の共用体は MonitoredFence 構造体を保持します。

監視対象のフェンスは、セキュリティ上の理由から NT ハンドルを使用してのみ共有できるため、監視対象のフェンスを使用する場合は NtSecuritySharing フラグを 設定する必要があります。

Windows 10 以降でサポートされています。

MonitoredFence.InitialFenceValue

[入力]最初のフェンス値を指定する 64 ビット値。

Windows 10 以降でサポートされています。

void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)

MonitoredFence.FenceValueGPUVirtualAddress

[out]GPU のフェンス値の読み取り/書き込みマッピング。 ドライバーは、このアドレスの GPU 書き込みコマンドをコマンド バッファーに挿入することで、新しいフェンス値を通知できます。 Dxgkrnl は、このフェンス オブジェクト値のウェイターのブロックを解除します。 No64BitAtomics キャップの値に応じて、このアドレスは 32 ビットまたは 64 ビットの基になる値を指します。 デバイスが CPU とのキャッシュコヒーレンシーをサポートしていない場合は、GPU 仮想アドレスを使用してフェンス値に書き込むべきではありません。 フェンス値へのアクセスは、CPU でのみ行う必要があります。

Windows 10 以降でサポートされています。

MonitoredFence.EngineAffinity

[入力]ビット フィールド。各ビット位置 (ゼロから始まる) は、GPU 仮想アドレスがコミットされるリンク ディスプレイ アダプター (LDA) リンク内の物理アダプター インデックスを定義します。 ゼロは、GPU 仮想アドレスがすべての物理アダプターにコミットされることを意味します。

Windows 10 以降でサポートされています。

MonitoredFence.Padding

PeriodicMonitoredFence

定期的に監視されるフェンスに関する情報を格納する構造体。 Type メンバーがD3DDDI_PERIODIC_MONITORED_FENCEと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2の共用体は MonitoredFence 構造体を保持します。

Windows 10 以降でサポートされています。

VidPnTargetID

[out]コンポジターが通知を受信する出力 ID。

PeriodicMonitoredFence.hAdapter

[入力]VidPnSourceID に関連付けられているアダプターへのハンドル

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out]VSync (VSync – Time パラメーターの時刻) の前のオフセットを表します。 Time 値は、VSync 間隔 (1/DisplayModeRefresh) より長くすることはできません。 時間は 100ns 単位で指定します。

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[入力]GPU のフェンス値の読み取り専用マッピング

PeriodicMonitoredFence.EngineAffinity

[入力]GPU VA がマップされる物理アダプターを定義します

PeriodicMonitoredFence.Padding

Reserved

将来使用するために予約されている構造体。 この構造体には、次のメンバーが含まれています。

Reserved.Reserved[8]

SharedHandle

[out]共有ハンドルが現在存在する場合は、共有同期オブジェクトへのハンドル。 ドライバーは NT ハンドルを使用して同期オブジェクトを共有する必要があります。 nt ハンドルを使用してオブジェクトを共有し、D3DKMTShareObjects を呼び出して NT ハンドルを取得することを示すように、D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing を設定する必要があります。 グローバル ハンドルの使用は安全ではありません。 どのプロセスでも、グローバル ハンドルを推測し、共有オブジェクトを開くことができます。 グローバル ハンドルは、古い D3D ランタイムとの互換性の理由でのみサポートされます。

要件

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

こちらもご覧ください

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2