Share via


D3DDDI_SYNCHRONIZATIONOBJECTINFO2 結構 (d3dukmdt.h)

D3DDDI_SYNCHRONIZATIONOBJECTINFO2 結構包含第二代同步處理對象的相關信息。

語法

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

[in]型 別為 D3DDDI_SYNCHRONIZATIONOBJECT_TYPE 的值,表示同步處理對象的類型。

Flags

[in] D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 結構,指定同步處理物件的位字段旗標屬性。

SynchronizationMutex

結構,包含同步處理 Mutex 的相關信息。 如果 Type 成員等於D3DDDI_SYNCHRONIZATION_MUTEX,D3DDDI_SYNCHRONIZATIONOBJECTINFO2中的聯集會保存 SynchronizationMutex 結構。

SynchronizationMutex.InitialState

布爾值,指出同步處理 mutex 一開始是否由 對象擁有。 TRUE 的值表示 Mutex 是擁有的;FALSE 表示 Mutex 不是擁有的。

Semaphore

結構,包含號誌的相關信息。 如果 Type 成員等於D3DDDI_SEMAPHORE,D3DDDI_SYNCHRONIZATIONOBJECTINFO2中的聯集會保存旗號結構

Semaphore.MaxCount

物件可以等候的事件數目上限。

Semaphore.InitialCount

物件正在等候的初始事件數目。

Fence

結構,包含柵欄的相關信息。 如果 Type 成員等於D3DDDI_FENCE,D3DDDI_SYNCHRONIZATIONOBJECTINFO2中的聯集會保存柵欄結構。

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

[in]指定初始柵欄值的 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

[in]位欄位,其中每個位位置 (從零開始,) 定義鏈接器中的實體配接器索引, (LDA) 連結,其中會認可 GPU 虛擬位址。 零表示 GPU 虛擬位址將會認可到所有實體適配卡。

從Windows 10 開始支援。

MonitoredFence.Padding

PeriodicMonitoredFence

結構,包含定期監視柵欄的相關信息。 如果 Type 成員等於 D3DDDI_PERIODIC_MONITORED_FENCE,D3DDDI_SYNCHRONIZATIONOBJECTINFO2 中的聯集會保存 MonitoredFence 結構。

從Windows 10 開始支援。

VidPnTargetID

[out]撰寫器想要接收通知的輸出標識碼。

PeriodicMonitoredFence.hAdapter

[in]與 VidPnSourceID 相關聯的配接器句柄

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out]表示 VSync (VSync – Time 參數) 之前的位移。 Time 值可能不超過 VSync 間隔 (1 / DisplayModeRefresh) 。 時間是以 100ns 為單位來指定。

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in]GPU 柵欄值的唯讀對應

PeriodicMonitoredFence.EngineAffinity

[in]定義將對應 GPU VA 的實體適配卡

PeriodicMonitoredFence.Padding

Reserved

保留供日後使用的結構。 此結構包含下列成員:

Reserved.Reserved[8]

SharedHandle

[out]如果共用句柄目前存在,則為共用同步處理物件的句柄。 驅動程式應該使用NT句柄共用同步處理物件。 它應該設定 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing ,以指出物件將使用 NT 句柄共用,並呼叫 D3DKMTShareObjects 以取得 NT 句柄。 使用全域句柄並不安全。 任何進程都可以猜測全域句柄,並開啟共享物件。 只有舊版 D3D 運行時間的相容性原因,才支援全域句柄。

規格需求

需求
最低支援的用戶端 Windows 7
標頭 d3dukmdt.h (包含 D3dumddi.h、D3dkmddi.h)

另請參閱

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2