다음을 통해 공유


D3DKMTCreateNativeFence 함수(d3dkmthk.h)

D3D 런타임은 D3DKMTCreateNativeFence 호출하여 특정 디바이스에 네이티브 GPU 펜스 개체를 만듭니다.

통사론

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

매개 변수

unnamedParam1

[in/out] 만들 펜스 개체를 설명하는 D3DKMT_CREATENATIVEFENCE 구조체에 대한 포인터입니다.

반환 값

D3DKMTCreateNativeFence 성공적으로 만들 때 STATUS_SUCCESS 반환합니다. 그렇지 않으면 STATUS_INVALID_PARAMETER 같은 NTSTATUS 오류 코드를 반환합니다.

발언

지정된 D3DDDI_NATIVEFENCE_TYPE OS에서 만드는 네이티브 펜스의 형식을 지정합니다. 이러한 펜스는 CurrentValue 및 monitoredValue기능, 성능 특성 및 스토리지 요구 사항이 다릅니다. 다음 표에서는 CVal이 CurrentValue 의미하고 MVal이 MonitoredValue나타내는 이러한 차이점을 보여 줍니다.

CurrentValue MonitoredValue CPU에서 프로세스 간 공유 지원 어댑터 간 공유 지원 UM CPUVA CVal KM CPUVA CVal GPU VA CVal CMPVA CVal UM MVal KM MVal GPU VA MVal CMPVA MVal 사용 사례
D3DDDI_NATIVEFENCE_TYPE_DEFAULT Sysmem Sysmem ReadOnly 읽기/쓰기 읽기/쓰기 읽기/쓰기 해당(N/A) 쓰다 ReadOnly(또는 읽기/쓰기) 읽기/쓰기 CPU 인터럽트 감소가 있는 애플리케이션 펜스 CPU를 깨우지 않고 GPU 웨이터가 차단 해제됨
D3DDDI_NATIVEFENCE_TYPE_DEFAULT(최적화된) Sysmem VRAM ReadOnly 읽기/쓰기 읽기/쓰기 읽기/쓰기 해당(N/A) 쓰다 ReadOnly(또는 읽기/쓰기) 읽기/쓰기 형식 0과 동일하지만 MVal 읽기로 PCI 버스 트래픽이 감소하면 GPU에 로컬입니다. 이 짧은 대기 시간(처리량++)으로 인해 GPU 신호 명령이 더 빠르게 완료됩니다.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU VRAM VRAM 아니요 해당(N/A) 해당(N/A) 읽기/쓰기 읽기/쓰기 해당(N/A) 해당(N/A) ReadOnly(또는 읽기/쓰기) 읽기/쓰기 동일한 GPU 내의 명령 버퍼 수준(애플리케이션 표시 안 됨) 동기화 CVal(펜스 값)에 대한 읽기/쓰기가 로컬이므로 신호/차단 해제 작업이 빠릅니다.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT

    • Windows 11 버전 24H2에서 지원됩니다.
    • 이 펜스 형식은 CPU/GPU 작업의 모든 기존 D3DKMT 동기화 개체 Wait/Signal을 지원합니다.
    • 이 펜스 유형의 CurrentValueMonitoredValue 스토리지는 모두 시스템 메모리 세그먼트에 할당됩니다.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT(최적화된)

    • 이 기능은 현재 OS에서 지원되지 않습니다.
    • MonitoredValue 스토리지를 VRAM에 할당할 수 있는 최적화된 버전의 D3DDDI_NATIVEFENCE_TYPE_DEFAULTGPU 엔진에서 MonitoredValue 읽기 속도를 향상합니다.
    • 이 최적화는 UMD에 노출되지 않습니다. 대신 Dxgkrnl 및 KMD는 VRAM에서 MonitoredValue 스토리지를 할당하여 기본 펜스 유형을 최적화할 수 있는지 여부를 결정합니다.
    • VRAM에 할당된 MonitoredValue 스토리지는 시스템이 로컬 메모리 압력을 받고 있는 경우 시스템 메모리로 강등될 수 있습니다.
    • OS에서 이 펜스 형식을 지원하는 경우 DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 기능 인터페이스 테이블에서 SupportOptimizedDefaultFenceType TRUE로 설정합니다. KMD는 드라이버 초기화 중에 기능 인터페이스 테이블을 쿼리하여 이 OS 기능을 확인해야 합니다.
  • D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU

    • 이 기능은 현재 OS에서 지원되지 않습니다.
    • D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU 펜스는 CPU 작업을 지원하지 않습니다. 즉, OS는 사용자 모드가 대기 대기를 허용하고 이 펜스 개체에 신호를 보낼 수 없습니다.
    • 따라서 CPU 대기 및 신호 의미 체계를 지원해야 하는 DX 애플리케이션 펜스에는 이 형식을 사용할 수 없습니다. 이 형식은 주로 GPU 엔진 간의 동기화를 위해 내부 UMD 펜스에 사용됩니다. 이 형식을 D3DKMT 네이티브 펜스 개체로 만들면 gpuView 디버깅과 같은 도구에 대해 이러한 펜스를 볼 수 있습니다.
    • 이 펜스에 지원되는 세그먼트는 비 CPU 표시 로컬 메모리 세그먼트여야 합니다.
    • 로컬 메모리에 할당된 스토리지는 시스템이 로컬 메모리 압력을 받고 있는 경우에도 시스템 메모리로 강등될 수 있습니다.
    • OS에서 이 펜스 형식을 지원하는 경우 DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 기능 인터페이스 테이블에서 SupportIntraGpuFenceType TRUE로 설정합니다. KMD는 드라이버 초기화 중에 기능 인터페이스 테이블을 쿼리하여 이 OS 기능을 확인해야 합니다.

네이티브 GPU 펜스에 대한 자세한 내용은네이티브 GPU 펜스 개체를 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 11 버전 24H2
헤더 d3dkmthk.h

참고 항목

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence