D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS構造体 (d3dukmdt.h)

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS構造体は、同期オブジェクトの属性を識別します。

構文

typedef struct _D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
  union {
    struct {
      UINT Shared : 1;
      UINT NtSecuritySharing : 1;
      UINT CrossAdapter : 1;
      UINT TopOfPipeline : 1;
      UINT NoSignal : 1;
      UINT NoWait : 1;
      UINT NoSignalMaxValueOnTdr : 1;
      UINT NoGPUAccess : 1;
      UINT SignalByKmd : 1;
      UINT LocalMemoryPreferred : 1;
#if ...
      UINT Reserved : 21;
#elif
      UINT Reserved : 22;
#elif
      UINT Reserved : 23;
#elif
      UINT Reserved : 28;
#else
      UINT Reserved : 29;
#endif
      UINT D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 : 1;
    };
    UINT Value;
  };
} D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS;

メンバー

Shared

同期オブジェクトを共有するかどうかを指定する UINT 値。

Shared が 1 (TRUE) に設定されている場合、同期オブジェクトは共有されます。 Shared が 0 (FALSE) に設定されている場合、同期オブジェクトは共有されません。 詳細については、「解説」を参照してください。

NtSecuritySharing

同期オブジェクトを NT ハンドルと共有するかどうかを指定する UINT 値。つまり、リソースに対 するグローバルなD3DKMT_HANDLE カーネル モード ハンドルがないことを意味します。

NtSecuritySharing が 1 (TRUE) に設定されている場合、同期オブジェクトは共有されますが、リソースに対するグローバル D3DKMT_HANDLE ハンドルはありません。

注意

NtSecuritySharing が 1 に設定されている場合は、Shared を 1 に設定する必要があります。 詳細については、「解説」を参照してください。

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

CrossAdapter

同期オブジェクトが ハイブリッド システム上の共有クロスアダプター リソース オブジェクトであるかどうかを示す UINT 値。

CrossAdapter が 1 (TRUE) に設定されている場合、同期オブジェクトは共有クロスアダプター オブジェクトです。 CrossAdapter が 0 (FALSE) に設定されている場合、同期オブジェクトは共有クロスアダプター オブジェクトではありません。

TopOfPipeline

意味
TRUE 同期オブジェクトが、その前のコマンド バッファーの内容が GPU パイプラインに完全にコピーされるとすぐに通知されるかどうかを指定しますが、必ずしも実行が完了するとは限りません。 この動作により、コマンド バッファーをできるだけ早く再利用できます。
FALSE 同期オブジェクトは、前のコマンド バッファーの実行が完了した後に通知されます。

この値は、監視対象のフェンス同期オブジェクトの場合は 1 (TRUE) にのみ設定でき、他のすべての同期オブジェクトの種類では 0 (FALSE) に設定する必要があります。

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

NoSignal

意味
TRUE この同期オブジェクトを作成または開いて待機コマンドのみを送信できるデバイスを指定します。 このフラグが設定されているときにシグナル操作を送信しようとすると、STATUS_ACCESS_DENIEDが返されます。
FALSE 同期オブジェクトはシグナルを受け取ることができます。

この値は、監視対象のフェンス同期オブジェクトの場合は 1 (TRUE) にのみ設定でき、他のすべての同期オブジェクトの種類では 0 (FALSE) に設定する必要があります。

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

NoWait

意味
TRUE この同期オブジェクトが作成または開かれたデバイスが、そのデバイスに対してのみシグナル コマンドを送信できることを指定します。 このフラグが設定されているときに待機操作を送信しようとすると、STATUS_ACCESS_DENIEDが返されます。
FALSE 同期オブジェクトは待機できます。

この値は、監視対象のフェンス同期オブジェクトの場合は 1 (TRUE) にのみ設定でき、他のすべての同期オブジェクトの種類では 0 (FALSE) に設定する必要があります。

このフラグを NoSignal フラグと同時に設定することはできません。

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

NoSignalMaxValueOnTdr

意味
TRUE 監視対象フェンスの前述のシグナリングを TDR ケースの最大値にバイパスするように GPU スケジューラに指示します。
FALSE GPU スケジューラは、GPU リセット (TDR) の影響を受ける可能性のあるデバイスが監視対象フェンスを最大値に通知します。

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

NoGPUAccess

設定すると、フェンスは GPU 仮想アドレス空間にマップされず、(アダプターキャップに関係なく) 常に 64 ビット値として格納されます。 パケットベースのシグナル/待機操作のみがサポートされます。

SignalByKmd

設定すると、フェンスはカーネル モード ドライバー (KMD) によって通知できます。 このフラグは、 D3DDDI_CPU_NOTIFICATION オブジェクトでのみ使用できます。 Windows 11 (WDDM 3.0) 以降でサポートされます。

LocalMemoryPreferred

を設定すると、可能であればフェンスを GPU ローカル メモリに配置する必要があることを示します。 Windows 11 バージョン 22H2 (WDDM 3.1) 以降でサポートされます。

Reserved

このメンバーは予約済みであり、0 に設定する必要があります。

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

このメンバーは予約済みであり、0 に設定する必要があります。

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

Value

同期オブジェクトの属性を識別する 1 つの 32 ビット値を保持できる 、D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS に含まれる共用体内のメンバー。

注釈

D3DKMTShareObjects 関数を使用して共有するオブジェクトは、まず NtSecuritySharing フラグ値を設定して作成する必要があります。 このフラグ値は、 D3DKMT_CREATEALLOCATIONFLAGSD3DKMT_CREATEKEYEDMUTEX2_FLAGSおよびD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 構造体で使用できます。

ドライバーは、 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS フラグに関する次のガイドラインに従う必要があります。

  • 同期オブジェクトが共有されていない場合は、 SharedNtSecuritySharing の両方を 0 に設定します。

  • 同期オブジェクトが D3DKMT_HANDLE データ型と共有されている場合は、 Shared = 1 と NtSecuritySharing = 0 を設定します。

  • 同期オブジェクトが NT ハンドルとプロセスに共有されている場合 (およびリソースに対するグローバル D3DKMT_HANDLE カーネル モード ハンドルがない場合)、 Shared = 1 と NtSecuritySharing = 1 を設定します。

要件

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

こちらもご覧ください

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS