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에서 만드는 네이티브 펜스의 유형을 지정합니다. 이러한 펜스는 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 | 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 작업을 지원합니다.
- 이 펜스 형식 에 대한 CurrentValue 및 MonitoredValue 스토리지는 모두 시스템 메모리 세그먼트에 할당됩니다.
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 |
추가 정보
D3DKMTOpenNativeFenceFromNTHandle