다음을 통해 공유


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
  • IDXGISurface1::GDI 상호 운용 가능한 화면에 대한 GetDC
런타임은 공유 표면 소유자가 변경되거나 표면이 GDI 상호 운용에 사용될 때마다 드라이버의 ResolveSharedResourceDXGI 함수를 호출합니다.

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

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

pResourceData

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

발언

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

요구 사항

요구
지원되는 최소 클라이언트 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