다음을 통해 공유


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

[in] 동기화 개체의 형식을 나타내는 형식 D3DDDI_SYNCHRONIZATIONOBJECT_TYPE 값입니다.

Flags

[in] 동기화 개체의 특성을 비트 필드 플래그로 지정하는 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 구조체입니다.

SynchronizationMutex

동기화 뮤텍스에 대한 정보를 포함하는 구조체입니다. Type 멤버가 D3DDDI_SYNCHRONIZATION_MUTEX 동일한 경우 D3DDDI_SYNCHRONIZATIONOBJECTINFO2 공용 구조체는 SynchronizationMutex 구조를 보유합니다.

SynchronizationMutex.InitialState

동기화 뮤텍스가 처음에 개체가 소유하는지 여부를 나타내는 부울 값입니다. TRUE 값은 뮤텍스가 소유됨을 나타냅니다. FALSE는 뮤텍스가 소유되지 않음을 나타냅니다.

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] 각 비트 위치(0부터 시작)가 GPU 가상 주소가 커밋될 LDA(링크 디스플레이 어댑터) 링크에서 실제 어댑터 인덱스를 정의하는 비트 필드입니다. 0은 GPU 가상 주소가 모든 실제 어댑터에 커밋됨을 의미합니다.

Windows 10부터 지원됩니다.

MonitoredFence.Padding

PeriodicMonitoredFence

주기적 모니터링 펜스에 대한 정보를 포함하는 구조체입니다. Type 멤버가 D3DDDI_PERIODIC_MONITORED_FENCE 동일한 경우 D3DDDI_SYNCHRONIZATIONOBJECTINFO2 공용 구조체는 MonitoredFence 구조를 보유합니다.

Windows 10부터 지원됩니다.

VidPnTargetID

[out] 작성자가 알림을 수신하려는 출력 ID입니다.

PeriodicMonitoredFence.hAdapter

[in] VidPnSourceID와 연결된 어댑터에 대한 핸들

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out] VSync 이전의 오프셋을 나타냅니다(VSync 시간 – 시간 매개 변수). 시간 값은 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