DXGI1_3_DDI_BASE_FUNCTIONS 구조체(dxgiddi.h)

WDDM(Windows Display Driver Model) 1.3 이상 사용자 모드 디스플레이 드라이버가 출력에 렌더링된 프레임을 표시하고, 감마를 제어하고, 공유 및 Windows GDI(그래픽 디바이스 인터페이스) 상호 운용 가능한 표면에 대한 알림을 받고, 전체 화면 전환을 관리하는 등의 하위 수준 작업을 수행하기 위해 구현할 수 있는 함수에 대한 포인터를 포함합니다.

구문

typedef struct DXGI1_3_DDI_BASE_FUNCTIONS {
  HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
  HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
  HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
  HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
  HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
  HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
  HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
  HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
  HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
  HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
  HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
  HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
  HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS *) * pfnGetMultiplaneOverlayGroupCaps;
  HRESULT()(void *) * pfnReserved1;
  HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
  HRESULT()(void *) * pfnReserved2;
  HRESULT()(DXGI_DDI_ARG_PRESENT1 *) * pfnPresent1;
  HRESULT()(DXGI_DDI_ARG_CHECKPRESENTDURATIONSUPPORT *) * pfnCheckPresentDurationSupport;
} DXGI1_3_DDI_BASE_FUNCTIONS;

멤버

pfnPresent

드라이버의 PresentDXGI 함수에 대한 포인터입니다.

pfnGetGammaCaps

드라이버의 GetGammaCapsDXGI 함수에 대한 포인터입니다.

pfnSetDisplayMode

드라이버의 SetDisplayModeDXGI 함수에 대한 포인터입니다.

pfnSetResourcePriority

드라이버의 SetResourcePriorityDXGI 함수에 대한 포인터입니다.

pfnQueryResourceResidency

드라이버의 QueryResourceResidencyDXGI 함수에 대한 포인터입니다.

pfnRotateResourceIdentities

드라이버의 RotateResourceIdentitiesDXGI 함수에 대한 포인터입니다.

pfnBlt

드라이버의 BltDXGI 함수에 대한 포인터입니다.

pfnResolveSharedResource

드라이버의 ResolveSharedResourceDXGI 함수에 대한 포인터입니다.

pfnBlt1

드라이버의 Blt1DXGI 함수에 대한 포인터입니다.

pfnOfferResources

드라이버의 pfnOfferResources 함수에 대한 포인터입니다 .

pfnReclaimResources

드라이버의 pfnReclaimResources 함수에 대한 포인터입니다 .

pfnGetMultiplaneOverlayCaps

DXGI 런타임에서 사용자 모드 표시 드라이버에 기본 오버레이 평면 기능을 사용하도록 요청하기 위해 호출됩니다. 필요에 따라 WDDM 1.3 이상 사용자 모드 디스플레이 드라이버에 의해 구현됩니다.

pfnGetMultiplaneOverlayGroupCaps

사용자 모드 표시 드라이버에 오버레이 평면 기능 그룹을 가져올 것을 요청하기 위해 DXGI 런타임에서 호출됩니다. 필요에 따라 WDDM 1.3 이상 사용자 모드 디스플레이 드라이버에 의해 구현됩니다.

참고 이 함수는 드라이버가 보고하는 각 기능 그룹에 대해 호출됩니다.
 

구문

pfnGetMultiplaneOverlayGroupCaps GetMultiplaneOverlayGroupCaps;

HRESULT __stdcall* GetMultiplaneOverlayGroupCaps(
   DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS *pGroupCaps
)
{ ... }

매개 변수

pGroupCaps 오버레이 평면 기능 그룹을 지정하는 DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS 구조체에 대한 포인터입니다.

반환 값

다음 값 중 하나를 반환합니다.

  • S_ok 드라이버는 오버레이 평면 기능을 성공적으로 제공했습니다.
  • D3DDDIERR_DEVICEREMOVED 드라이버에서 디스플레이 어댑터가 제거되었음을 감지하여 드라이버가 작업을 완료하지 못했습니다. 드라이버가 어댑터 제거를 인식하지 못하는 경우 드라이버가 이 오류 코드를 반환할 필요가 없습니다.

pfnReserved1

시스템에서 사용하도록 예약되었습니다.

pfnPresentMultiplaneOverlay

Microsoft DXGI(DirectX Graphics Infrastructure) 런타임에서 호출되어 애플리케이션 렌더링이 완료되었음을 사용자 모드 표시 드라이버에 알리고 드라이버가 복사 또는 대칭 이동으로 원본 표면을 표시하거나 드라이버가 색 채우기 작업을 수행하도록 요청합니다. 다중 평면 오버레이를 지원하는 WDDM(Windows Display Driver Model) 1.3 이상 드라이버에서 구현해야 합니다.

사용자 모드 표시 드라이버가 이 함수에 대한 호출 처리를 성공적으로 완료하면 pfnPresentMultiPlaneOverlayCb(DXGI) 함수를 호출하여 디스플레이에 원본 표면을 표시합니다.

PFND3DDDI_PRESENTMULTIPLANEOVERLAY pfnPresentMultiPlaneOverlay;

HRESULT __stdcall* pfnPresentMultiPlaneOverlay(
   DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *pPresentDXGI
)
{ ... }

매개 변수

pPresentDXGI 대상 화면에 표시하는 방법을 설명하는 DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY 구조체에 대한 포인터입니다.

반환 값

이 콜백 함수가 성공하면 S_OK 반환합니다. 그렇지 않으면 HRESULT 오류 코드를 반환합니다.

pfnReserved2

시스템에서 사용하도록 예약되었습니다.

pfnPresent1

애플리케이션 렌더링이 완료되고 공유 리소스의 모든 소유권이 해제되었다는 것을 사용자 모드 표시 드라이버에 알리고 드라이버가 대상 화면에 표시하도록 요청합니다.

구문

pfnPresent1 Present1DXGI;

HRESULT __stdcall* Present1DXGI(
   DXGI_DDI_ARG_PRESENT1 *pPresentData
)
{ ... }

매개 변수

pPresentData [in] 대상 화면에 표시하는 방법을 설명하는 DXGI_DDI_ARG_PRESENT1 구조체에 대한 포인터입니다.

설명

pPresentData 매개 변수가 가리키는 DXGI_DDI_ARG_PRESENT1 구조체의 hDevice 멤버는 드라이버의 CreateDevice(D3D10) 함수가 D3D10DDIARG_CREATEDEVICE 구조체의 hDrvDevice 멤버에서 런타임에 다시 전달한 것과 동일한 핸들입니다. 따라서 드라이버 작성기는 이 핸들의 형식을 신중하게 정의해야 합니다. 또한 드라이버는 CreateDevice(D3D10)에 대한 호출을 처리한 DDI 구현에 따라 pfnPresent1(DXGI) 함수의 다양한 구현을 제공할 수 있습니다. 런타임은 DDI 구현에서 드라이버 핸들을 혼합하지 않습니다.

DXGI_DDI_ARG_PRESENT1pDXGIContext 멤버는 불투명한 통신 메커니즘입니다. 런타임은 이 DXGI 컨텍스트를 드라이버에 전달합니다. 드라이버가 pfnPresentCbDXGI 함수를 호출할 때 드라이버는 이 DXGI 컨텍스트를 DXGIDDICB_PRESENT 구조체의 pDXGIContext 멤버에 변경되지 않고 복사해야 합니다.

드라이버는 pfnRenderCb 함수를 사용하여 부분적으로 빌드된 모든 렌더링 데이터(명령 버퍼)를 제출해야 하며, 드라이버는 pfnPresentCbDXGI를 단일 호출해야 합니다. 이러한 콜백 중 하나를 호출할 때 드라이버는 PresentDXGI 함수의 스레딩 규칙을 따라야 합니다.

참고 드라이버의 pfnPresent1(DXGI) 함수가 원본 표면에서 sRGB가 아닌 대상 표면으로 sRGB 형식의 콘텐츠를 복사하는 경우 드라이버는 sRGB 콘텐츠를 변경되지 않고 복사해야 합니다(즉, 드라이버가 선형 변환에 sRGB를 수행하지 않아야 합니다).

스레딩 규칙

이러한 규칙은 드라이버가 무료 스레딩을 지원하는지 여부에 따라 적용됩니다.

  • 드라이버는 D3D11DDI_THREADING_CAPS 구조체의 Caps 멤버를 D3D11DDICAPS_FREETHREADED 설정하여 무료 스레딩에 대한 지원을 나타냅니다. 이 경우 다음과 같습니다.
    • 한 번에 하나의 스레드만 HCONTEXT 컨텍스트 핸들에 대해 작업할 수 있습니다.
    • 드라이버는 드라이버의 pfnPresent1(DXGI) 함수가 호출된 경우에만 pfnPresentCbDXGI를 호출해야 하며, pfnPresent1(DXGI)이라는 동일한 스레드에서 호출해야 합니다.
  • 드라이버가 자유 스레딩에 대한 지원을 나타내지 않는 경우 스레드가 드라이버에 호출된 경우에만 콜백 함수를 호출할 수 있습니다. 또한 드라이버는 여전히 pfnPresent1(DXGI)의 컨텍스트 내에서 pfnPresentCbDXGI 콜백을 호출해야 합니다.
스레딩에 대한 자세한 내용은 Direct3D 10의 변경 내용을 참조하세요.

pfnCheckPresentDurationSupport

드라이버의 pfnCheckPresentDurationSupport(DXGI) 함수에 대한 포인터입니다.

설명

이 구조를 사용하는 방법에 대한 자세한 내용은 DXGI DDI 지원을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1,WDDM 1.3 이상
지원되는 최소 서버 Windows Server 2012 R2
머리글 dxgiddi.h(D3d10umddi.h 포함)

추가 정보

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_2_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS