다음을 통해 공유


DXGI1_1_DDI_BASE_FUNCTIONS 구조체(dxgiddi.h)

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

구문

typedef struct DXGI1_1_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;
} DXGI1_1_DDI_BASE_FUNCTIONS;

멤버

pfnPresent

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

pfnGetGammaCaps

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

pfnSetDisplayMode

SetDisplayModeDXGI 함수는 GDI 데스크톱에서 지원하지 않는 디스플레이 모드 또는 기본 모드로 전환됩니다.

Microsoft Direct3D 런타임은 SetDisplayModeDXGI 를 호출하여 GDI 데스크톱이 지원하지 않는 디스플레이 모드 또는 기본 모드로 전환합니다. 다음 목록에서는 이러한 기본 항목의 예를 설명합니다.

  • 채널당 10비트(10:10:10:2)로 만든 기본 항목은 대상 형식을 표시하고 렌더링합니다(예: D3DFMT_A2R10G10B10).
  • 검사하는 동안 다중 샘플링이 수행되는 다중 샘플링 주 복제본
  • 전체 화면 Microsoft DirectX 버전 10 애플리케이션에서 사용하는 영구 주 복제본
Direct3D 런타임은 사용자 모드 디스플레이 드라이버의 CreateResource(D3D10) 함수를 호출하여 검사할 기본 함수를 만듭니다. 그러나 드라이버는 SetDisplayModeDXGI 함수가 호출된 경우에만 검사하도록 하드웨어를 프로그래밍해야 합니다. 따라서 런타임은 pDisplayModeData 매개 변수가 가리키는 DXGI_DDI_ARG_SETDISPLAYMODE 구조체의 hResourceSubResourceIndex 멤버를 드라이버의 CreateResourceD3D10 함수 호출을 통해 만든 주 데이터베이스로 설정합니다. 그런 다음, 드라이버는 hResource 및 SubResourceIndex가 나타내는 기본 을 기본 할당 핸들로 변환해야 합니다. 드라이버가 이 변환을 수행한 후 드라이버는 pfnSetDisplayModeCb 함수에 대한 호출에서 결과 핸들을 전달해야 합니다. 그러면 디스플레이 미니포트 드라이버의 DxgkDdiCommitVidPn 함수에 대한 호출이 시작됩니다.

사용자 모드 표시 드라이버는 pfnSetDisplayModeCb 호출에서 D3DDDICB_SETDISPLAYMODE 구조체의 hPrimaryAllocation 멤버를 설정하여 할당을 검사할 수 있습니다. 그러나 할당은 기본으로 표시되어야 합니다(즉, 사용자 모드 표시 드라이버는 pfnAllocateCb 함수를 호출하여 할당을 만들려면 D3DDDI_ALLOCATIONINFO 구조체의 Flags 멤버에서 기본 비트 필드 플래그를 설정해야 합니다).

pDisplayModeData

표시 모드를 설정하기 위한 매개 변수를 지정하는 DXGI_DDI_ARG_SETDISPLAYMODE 구조체에 대한 포인터입니다.

pfnSetResourcePriority

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

pfnQueryResourceResidency

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

pfnRotateResourceIdentities

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

pfnBlt

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

pfnResolveSharedResource

ResolveSharedResourceDXGI 함수는 공유 표면의 소유권이 변경되었거나 표면이 GDI 상호 운용에 사용되고 있음을 사용자 모드 디스플레이 드라이버에 알립니다.

Direct3D 런타임은 애플리케이션이 다음 함수 중 하나를 호출할 때 ResolveSharedResourceDXGI 를 호출합니다.

  • 동기화된 공유 화면의 IDXGIKeyedMutex::ReleaseSynch
  • GDI 상호 운용 가능한 표면에 대한 IDXGISurface1::GetDC
런타임은 공유 표면 소유자가 변경되거나 표면이 GDI 상호 운용에 사용될 때마다 드라이버의 ResolveSharedResourceDXGI 함수를 호출합니다.

드라이버는 ResolveSharedResourceDXGI 를 구현하여 여러 GPU 시나리오에 대한 리소스를 적절하게 관리합니다. 렌더링할 여러 GPU에 대해 각 리소스를 메모리 간에 나눌 수 있습니다. 드라이버는 ResolveSharedResourceDXGI 를 구현하여 새 리소스 소유자가 병합된 리소스를 없도록 각 리소스를 다시 병합할 수 있습니다. 드라이버는 리소스를 수정할 수 있는 부분적으로 빌드된 명령 버퍼를 플러시해야 합니다.

Windows 7은 사용자 모드 표시 드라이버가 CreateDevice(D3D10) 함수를 호출할 때 DXGI1_1_DDI_BASE_FUNCTIONS 또는 DXGI_DDI_BASE_FUNCTIONS 구조체에 대한 포인터를 수신하는지 여부를 확인할 수 있도록 IS_DXGI1_1_BASE_FUNCTIONS 매크로(D3D10umddi.h 헤더 파일에 정의됨)를 제공합니다. DXGI1_1_DDI_BASE_FUNCTIONS 구조체에는 드라이버가 ResolveSharedResourceDXGI 함수에 대한 포인터로 채울 수 있는 pfnResolveSharedResource 멤버가 포함됩니다. IS_DXGI1_1_BASE_FUNCTIONS TRUE를 반환하는 경우 드라이버는 D3D10DDIARG_CREATEDEVICE 구조체의 DXGIBaseDDI 멤버가 지정하는 DXGI_DDI_BASE_ARGS 구조체의 pDXGIDDIBaseFunctions 멤버에 있는 DXGI1_1_DDI_BASE_FUNCTIONS 구조체에 대한 포인터 를 수신해야 합니다. 그렇지 않으면 IS_DXGI1_1_BASE_FUNCTIONS FALSE를 반환하면 드라이버는 DXGI_DDI_BASE_FUNCTIONS 구조체에 대한 포인터를 수신해야 합니다. Windows 7은 최신 버전 드라이버가 이전 버전 런타임에서 작동할 수 있도록 하는 IS_DXGI1_1_BASE_FUNCTIONS 매크로를 제공합니다. 그런 다음 드라이버는 DXGI1_1_DDI_BASE_FUNCTIONS pfnResolveSharedResource 멤버를 ResolveSharedResourceDXGI 함수에 대한 포인터로 채우려고 하면 메모리가 손상되는지 여부를 확인할 수 있습니다.

pResourceData

디스플레이 디바이스 및 디스플레이 디바이스와 연결된 표면에 대한 매개 변수를 지정하는 DXGI_DDI_ARG_RESOLVESHAREDRESOURCE 구조체에 대한 포인터입니다.

설명

Windows 7은 사용자 모드 표시 드라이버가 CreateDevice(D3D10) 함수 호출에서 DXGI1_1_DDI_BASE_FUNCTIONS 또는 DXGI_DDI_BASE_FUNCTIONS 구조체에 대한 포인터를 수신하는지 여부를 확인할 수 있도록 IS_DXGI1_1_BASE_FUNCTIONS 매크로(D3D10umddi.h 헤더 파일에 정의됨)를 제공합니다. DXGI1_1_DDI_BASE_FUNCTIONS 구조체에는 드라이버가 ResolveSharedResourceDXGI 함수에 대한 포인터로 채울 수 있는 pfnResolveSharedResource 멤버가 포함됩니다. IS_DXGI1_1_BASE_FUNCTIONS TRUE를 반환하는 경우 드라이버는 D3D10DDIARG_CREATEDEVICE 구조체의 DXGIBaseDDI 멤버가 지정하는 DXGI_DDI_BASE_ARGS 구조체의 pDXGIDDIBaseFunctions 멤버에 있는 DXGI1_1_DDI_BASE_FUNCTIONS 구조체에 대한 포인터 를 수신해야 합니다. 그렇지 않으면 IS_DXGI1_1_BASE_FUNCTIONS FALSE를 반환하면 드라이버는 DXGI_DDI_BASE_FUNCTIONS 구조체에 대한 포인터를 수신해야 합니다. Windows 7은 최신 버전 드라이버가 이전 버전 런타임에서 작동할 수 있도록 하는 IS_DXGI1_1_BASE_FUNCTIONS 매크로를 제공합니다. 그런 다음 드라이버는 DXGI1_1_DDI_BASE_FUNCTIONS pfnResolveSharedResource 멤버를 ResolveSharedResourceDXGI 함수에 대한 포인터로 채우려고 하면 메모리가 손상되는지 여부를 확인할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 DXGI1_1_DDI_BASE_FUNCTIONS Windows 7 운영 체제부터 지원됩니다.
머리글 dxgiddi.h(D3d10umddi.h 포함)

추가 정보

BltDXGI

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS

GetGammaCapsDXGI

PresentDXGI

QueryResourceResidencyDXGI

ResolveSharedResource

ResolveSharedResourceDXGI

RotateResourceIdentitiesDXGI

SetDisplayModeDXGI

SetResourcePriorityDXGI