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로 설정된 경우 공유를 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 스케줄러는 잠재적으로 TDR(GPU 재설정)의 영향을 받을 수 있는 디바이스를 신호할 수 있는 경우 모니터링된 펜스를 최대 값으로 신호합니다.

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

동기화 개체의 특성을 식별하는 하나의 32비트 값을 보유할 수 있는 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 포함된 공용 구조체의 멤버입니다.

설명

D3DKMTShareObjects 함수를 사용하여 공유할 개체는 먼저 NtSecuritySharing 플래그 값 집합을 사용하여 만들어야 합니다. 이 플래그 값은 D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 구조에서 사용할 수 있습니다.

드라이버는 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 플래그에 대한 다음 지침을 따라야 합니다.

  • 동기화 개체가 공유되지 않으면 SharedNtSecuritySharing을 모두 0으로 설정합니다.

  • 동기화 개체가 D3DKMT_HANDLE 데이터 형식과 공유되는 경우 Shared = 1 및 NtSecuritySharing = 0을 설정합니다.

  • 동기화 개체가 프로세스에 대한 NT 핸들과 공유되고 전역 D3DKMT_HANDLE 커널 모드 핸들이 없는 경우 Shared = 1 및 NtSecuritySharing = 1을 설정합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7
머리글 d3dukmdt.h(D3dumddi.h, D3dkmddi.h 포함)

추가 정보

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS