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 | 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을 지원합니다.
- 이 펜스 유형의 CurrentValue 및 MonitoredValue 스토리지는 모두 시스템 메모리 세그먼트에 할당됩니다.
D3DDDI_NATIVEFENCE_TYPE_DEFAULT(최적화된)
- 이 기능은 현재 OS에서 지원되지 않습니다.
- MonitoredValue 스토리지를 VRAM에 할당할 수 있는 최적화된 버전의 D3DDDI_NATIVEFENCE_TYPE_DEFAULTGPU 엔진에서 MonitoredValue 읽기 속도를 향상합니다.
- 이 최적화는 UMD에 노출되지 않습니다. 대신 Dxgkrnl 및 KMD는 VRAM에서 MonitoredValue 스토리지를 할당하여 기본 펜스 유형을 최적화할 수 있는지 여부를 결정합니다.
- VRAM에 할당된 MonitoredValue 스토리지는 시스템이 로컬 메모리 압력을 받고 있는 경우 시스템 메모리로 강등될 수 있습니다.
- OS에서 이 펜스 형식을 지원하는 경우
기능 인터페이스 테이블에서 SupportOptimizedDefaultFenceTypeDXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 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 펜스에 대한 자세한 내용은
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 11 버전 24H2 |
헤더 | d3dkmthk.h |
참고 항목
D3DKMTOpenNativeFenceFromNTHandle