User-Mode 디스플레이 드라이버에서 호출되는 Direct3D 런타임 함수

이 항목에서는 Microsoft Direct3D 런타임이 사용자 모드 표시 드라이버에 제공하는 함수를 나열합니다. 여기에는 함수에 액세스하는 Direct3D 런타임 커널 서비스와 Direct3D 런타임 버전 10 및 11 함수가 포함됩니다. 이러한 함수는 운영 체제가 Direct3D 런타임을 통해 구현하는 사용자 모드 Direct3D 디스플레이 드라이버 인터페이스의 일부입니다.

Direct3D 런타임 Kernel-Services 함수 액세스

Microsoft Direct3D 버전 9 런타임은 사용자 모드 표시 드라이버의 OpenAdapter 함수 호출에서 D3DDDI_ADAPTERCALLBACKS 구조의 멤버를 통해 어댑터별 콜백 함수에 대한 포인터를 제공합니다. 런타임은 사용자 모드 표시 드라이버의 CreateDevice 함수에 대한 호출에서 D3DDDI_DEVICECALLBACKS 구조의 멤버를 통해 디바이스별 콜백 함수를 표시하는 포인터를 제공합니다.

Microsoft Direct3D 버전 10 이상 런타임은 사용자 모드 디스플레이 드라이버의 OpenAdapter10 또는 OpenAdapter10_2 함수에 대한 호출에서 D3DDDI_ADAPTERCALLBACKS 구조의 멤버를 통해 어댑터별 콜백 함수에 대한 포인터를 제공합니다. 런타임은 사용자 모드 표시 드라이버의 CreateDevice(D3D10) 함수에 대한 호출에서 D3DDDI_DEVICECALLBACKS 구조의 멤버를 통해 디바이스별 콜백 함수를 표시하는 포인터를 제공합니다.

Direct3D 매개 변수 구조

다음 구조는 함수에 액세스하는 Direct3D 런타임 커널 서비스에서 사용됩니다. 사용자 모드 표시 드라이버는 런타임 함수의 매개 변수에서 이러한 구조체에 대한 포인터를 전달합니다.

  • D3DDDI_UPDATEALLOCPROPERTY
  • D3DDDICB_ALLOCATE
  • D3DDDICB_CREATECONTEXT
  • D3DDDICB_CREATECONTEXTVIRTUAL
  • D3DDDICB_CREATEHWCONTEXT
  • D3DDDICB_CREATEHWQUEUE
  • D3DDDICB_CREATEOVERLAY
  • D3DDDICB_CREATEPAGINGQUEUE
  • D3DDDICB_CREATESYNCHRONIZATIONOBJECT2
  • D3DDDICB_CREATESYNCHRONIZATIONOBJECT
  • D3DDDICB_DESTROYHWCONTEXT
  • D3DDDICB_DESTROYHWQUEUE
  • D3DDDICB_DEALLOCATE
  • D3DDDICB_DEALLOCATE2
  • D3DDDICB_DESTROYCONTEXT
  • D3DDDICB_DESTROYOVERLAY
  • D3DDDICB_DESTROYSYNCHRONIZATIONOBJECT
  • D3DDDICB_ESCAPE
  • D3DDDICB_EVICT
  • D3DDDICB_FLIPOVERLAY
  • D3DDDICB_GETMULTISAMPLEMETHODLIST
  • D3DDDICB_LOCK
  • D3DDDICB_LOCK2FLAGS
  • D3DDDICB_OFFERALLOCATIONS
  • D3DDDICB_PRESENT
  • D3DDDICB_QUERYADAPTERINFO
  • D3DDDICB_QUERYRESIDENCY
  • D3DDDICB_RECLAIMALLOCATIONS
  • D3DDDICB_RECLAIMALLOCATIONS2
  • D3DDDICB_RENDER
  • D3DDDICB_SETDISPLAYMODE
  • D3DDDICB_SETDISPLAYPRIVATEDRIVERFORMAT
  • D3DDDICB_SETPRIORITY
  • D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT
  • D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT2
  • D3DDDICB_SIGNALSYNCHRONIZATIONOBJECTFROMCPU
  • D3DDDICB_SIGNALSYNCHRONIZATIONOBJECTFROMGPU
  • D3DDDICB_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2
  • D3DDDICB_SUBMITCOMMAND
  • D3DDDICB_SUBMITCOMMANDFLAGS
  • D3DDDICB_SUBMITCOMMANDTOHWQUEUE
  • D3DDDICB_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE
  • D3DDDICB_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE
  • D3DDDICB_UNLOCK
  • D3DDDICB_UNLOCK2
  • D3DDDICB_UPDATEGPUVIRTUALADDRESS
  • D3DDDICB_UPDATEOVERLAY
  • D3DDDICB_WAITFORSYNCHRONIZATIONOBJECT
  • D3DDDICB_WAITFORSYNCHRONIZATIONOBJECT2
  • D3DDDICB_WAITFORSYNCHRONIZATIONOBJECTFROMCPU
  • D3DDDICB_WAITFORSYNCHRONIZATIONOBJECTFROMGPU

Direct3D 런타임 버전 10 이상 코어 콜백 함수

이 섹션에서는 Microsoft Direct3D 10 이상 런타임이 사용자 모드 표시 드라이버에 제공하는 핵심 콜백 함수에 대해 설명합니다. 런타임은 사용자 모드 표시 드라이버의 CreateDevice(D3D10) 함수에 대한 호출에서 D3D10DDI_CORELAYER_DEVICECALLBACKS 구조의 멤버를 통해 핵심 콜백 함수에 대한 포인터를 제공합니다.

Direct3D 런타임 버전 10 제어 콜백 함수

다음은 Microsoft Direct3D 10 이상 런타임이 D3D10DDI_CORELAYER_DEVICECALLBACKS 구조를 통해 사용자 모드 표시 드라이버에 제공하는 제어 콜백 함수 목록입니다.

Direct3D 런타임 버전 10 State-Refresh 콜백 함수

다음은 Microsoft Direct3D 10 런타임이 D3D10DDI_CORELAYER_DEVICECALLBACKS 구조를 통해 사용자 모드 표시 드라이버에 제공하는 상태 새로 고침 콜백 함수 목록입니다.

Direct3D 10 런타임은 애플리케이션에 대해 현재 바인딩된 상태 개체를 캐시하므로 런타임은 오버헤드가 낮은 사용자 모드 표시 드라이버에 대해 현재 바인딩된 상태 개체도 캐시합니다. 사용자 모드 표시 드라이버가 상태 새로 고침 콜백 함수를 호출할 때마다 Direct3D 10 런타임은 드라이버의 호출 코드로 돌아가기 전에 동일한 실행 스레드에서 드라이버 상태 함수를 해당 호출합니다. 성능을 향상시키기 위해 상태 새로 고침 콜백 함수는 매개 변수 유효성 검사를 수행하지 않습니다.

상태 새로 고침 콜백 함수는 상태 비스테이션 드라이버를 개발하거나 명령 버퍼 프리앰블 데이터를 빌드할 때 유용합니다. 또한 상태 새로 고침 콜백 함수를 사용하면 사용자 모드 표시 드라이버가 Direct3D 10 런타임에서 유지 관리하는 상위 워터마크를 활용할 수 있습니다. 상위 워터마크는 NULL이 아닌 가장 큰 슬롯 인덱스를 나타냅니다. 따라서 높은 워터마크는 이러한 슬롯에서 통과를 개선합니다.

Direct3D 런타임 버전 10 Kernel-Services 함수 액세스

이 섹션에서는 Microsoft Direct3D 10 런타임의 DXGI(DirectX Graphics Infrastructure) 구성 요소가 사용자 모드 표시 드라이버에 제공하는 함수에 액세스하는 커널 서비스를 나열합니다. DXGI는 사용자 모드 표시 드라이버의 CreateDevice(D3D10) 함수 호출에서 DXGI_DDI_BASE_CALLBACKS 구조의 멤버를 통해 함수에 액세스하는 커널 서비스에 대한 포인터를 제공합니다.

Direct3D 런타임 버전 11 함수

이 섹션에서는 Microsoft Direct3D 11 이상 런타임이 사용자 모드 표시 드라이버에 제공하는 핵심 콜백 함수에 대해 설명합니다. 런타임은 사용자 모드 표시 드라이버의 CreateDevice(D3D10) 함수에 대한 호출에서 D3D11DDI_CORELAYER_DEVICECALLBACKS 구조의 멤버를 통해 핵심 콜백 함수에 대한 포인터를 제공합니다.

Direct3D 런타임 버전 11 제어 콜백 함수

이 섹션에서는 Microsoft Direct3D 11 이상 런타임이 사용자 모드 표시 드라이버에 제공하는 추가 컨트롤 콜백 함수를 나열합니다.

Direct3D 런타임 버전 11 State-Refresh 콜백 함수

이 섹션에서는 Microsoft Direct3D 버전 11 이상 런타임이 사용자 모드 표시 드라이버에 제공하는 추가 상태 새로 고침 콜백 함수를 나열합니다.

Direct3D 11 런타임은 애플리케이션에 대해 현재 바인딩된 상태 개체를 캐시하므로 런타임은 오버헤드가 낮은 사용자 모드 표시 드라이버에 대해 현재 바인딩된 상태 개체도 캐시합니다. 사용자 모드 표시 드라이버가 상태 새로 고침 콜백 함수를 호출할 때마다 Direct3D 11 런타임은 드라이버의 호출 코드로 돌아가기 전에 동일한 실행 스레드에서 드라이버 상태 함수를 해당 호출합니다. 성능을 향상시키기 위해 상태 새로 고침 콜백 함수는 매개 변수 유효성 검사를 수행하지 않습니다.

상태 새로 고침 콜백 함수는 상태 비스테이션 드라이버를 개발하거나 명령 버퍼 프리앰블 데이터를 빌드하려고 할 때 유용합니다. 또한 상태 새로 고침 콜백 함수를 사용하면 사용자 모드 표시 드라이버가 Direct3D 11 런타임에서 유지 관리하는 상위 워터마크를 활용할 수 있습니다. 상위 워터마크는 NULL이 아닌 가장 큰 슬롯 인덱스를 나타냅니다. 따라서 높은 워터마크는 이러한 슬롯에서 통과를 개선합니다.

Direct3D 런타임 버전 12 이상 함수

Microsoft Direct3D 12 이상 런타임은 사용자 모드 표시 드라이버에 다음과 같은 핵심 콜백 함수를 제공합니다.

추가 정보

DXGI DDI 지원

다중 평면 오버레이 지원

사용자 모드 디스플레이 드라이버에 의해 구현된 Direct3D 함수

Direct3D 렌더링 성능 향상