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