D3DKMTCreateNativeFence 함수(d3dkmthk.h)

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

구문

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

매개 변수

unnamedParam1

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

반환 값

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

설명

지정된 D3DDDI_NATIVEFENCE_TYPE OS에서 만드는 네이티브 펜스의 유형을 지정합니다. 이러한 펜스는 CurrentValueMonitoredValue에 대한 기능, 성능 특성 및 스토리지 요구 사항이 다릅니다. 다음 표에서는 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 Yes Yes ReadOnly 읽기/쓰기 읽기/쓰기 읽기/쓰기 해당 없음 쓰기 ReadOnly(또는 읽기/쓰기) 읽기/쓰기 CPU 인터럽트 감소와 애플리케이션 펜스. CPU를 해제하지 않고 GPU 웨이터가 차단 해제됨
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (최적화됨) Sysmem Vram Yes Yes ReadOnly 읽기/쓰기 읽기/쓰기 읽기/쓰기 해당 없음 쓰기 ReadOnly(또는 읽기/쓰기) 읽기/쓰기 형식 0과 동일하지만 MVal 읽기로 PCI 버스 트래픽이 감소하면 GPU에 로컬입니다. GPU 신호 명령은 이 감소된 대기 시간(처리량++)으로 인해 더 빠르게 완료됩니다.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU Vram Vram Yes 아니요 해당 없음 해당 없음 읽기/쓰기 읽기/쓰기 해당 없음 해당 없음 ReadOnly(또는 읽기/쓰기) 읽기/쓰기 동일한 GPU 내의 명령 버퍼 수준(애플리케이션 표시 안 됨) 동기화 CVal(읽기/쓰기- 펜스 값)은 로컬이므로 신호/차단 해제 작업이 빠릅니다.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT

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

    • 이 기능은 현재 OS에서 지원되지 않습니다.
    • VRAM에서 MonitoredValue 스토리지를 할당할 수 있는 최적화된 버전의 D3DDDI_NATIVEFENCE_TYPE_DEFAULT GPU 엔진에서 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