DXGK_FLIPCAPS 구조체(d3dkmddi.h)
DXGK_FLIPCAPS 구조체는 드라이버가 DxgkDdiQueryAdapterInfo 함수를 호출하여 제공하는 디스플레이 미니포트 드라이버의 대칭 이동 기능을 식별합니다.
구문
typedef struct _DXGK_FLIPCAPS {
union {
struct {
UINT FlipOnVSyncWithNoWait : 1;
UINT FlipOnVSyncMmIo : 1;
UINT FlipInterval : 1;
UINT FlipImmediateMmIo : 1;
UINT FlipIndependent : 1;
UINT DdiPresentForIFlip : 1;
UINT FlipImmediateOnHSync : 1;
#if ...
UINT Reserved : 25;
#elif
UINT Reserved : 27;
#else
UINT Reserved : 28;
#endif
};
UINT Value;
};
} DXGK_FLIPCAPS;
멤버
FlipOnVSyncWithNoWait
드라이버가 세로 동기화가 발생할 때까지 그래픽 파이프라인이 중단되지 않고 다음 세로 다시 추적 기간(세로 동기화)에 적용되는 대칭 이동 명령 예약을 지원하는지 여부를 지정하는 UINT 값입니다. 즉, 드라이버가 대칭 이동 표면의 실제 주소를 하드웨어의 대칭 이동 보류 레지스터에 쓴 직후 그래픽 파이프라인을 진행해야 합니다. 대부분의 하드웨어는 하나의 대칭 이동 보류 레지스터 깊이를 사용하지만 하드웨어에서 두 개 이상의 대칭 이동 보류 레지스터를 사용하는 경우 드라이버는 DXGK_DRIVERCAPS 구조체의 MaxQueuedFlipOnVSync 멤버에 숫자를 지정해야 합니다.
FlipOnVSyncWithNoWait이 1(TRUE)로 설정된 경우 드라이버는 이 메커니즘을 지원합니다. FlipOnVSyncWithNoWait이 0(FALSE)으로 설정된 경우 드라이버는 이 메커니즘을 지원하지 않습니다. 즉, 그래픽 파이프라인은 다음 세로 동기화에 적용되도록 대칭 이동 명령의 일정 예약 후에 다음 세로 동기화가 발생할 때까지 기다려야 합니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000001)의 첫 번째 비트를 설정하는 것과 같습니다.
FlipOnVSyncMmIo
드라이버가 다음 세로 동기화에 적용되는 MMIO(메모리 매핑 I/O) 기반 대칭 이동을 지원하는지 여부를 지정하는 UINT 값입니다. 이러한 유형의 대칭 이동을 지원하려면 디스플레이 미니포트 드라이버가 다음 작업을 지원해야 합니다.
- DxgkDdiPresent 함수에 대한 호출을 전달할 DMA 버퍼가 생성되지 않습니다(즉, NULL이 DXGKARG_PRESENT 구조체의 pDmaBuffer 멤버에 전달됨).
- DIRQL(디바이스 인터럽트 요청 수준)에서 DxgkDdiSetVidPnSourceAddress 함수에 대한 호출을 통해 대칭 이동합니다. DxgkDdiSetVidPnSourceAddress 호출에서 드라이버는 DAC(디지털-아날로그 변환기)를 프로그래밍하고 DXGKARG_SETVIDPNSOURCEADDRESS 구조체의 PrimaryAddress 멤버에 있는 값을 사용하여 검사를 시작해야 합니다. 세로 동기화 후 드라이버는 DXGKARGCB_NOTIFY_INTERRUPT_DATA 구조체의 InterruptType 멤버에 설정된 DXGK_INTERRUPT_CRTC_VSYNC 값으로 DxgkCbNotifyInterrupt 함수를 호출하여 유효 검사 주소를 보고하도록 GPU 스케줄러에 알려야 합니다. 그런 다음 드라이버는 DxgkCbNotifyDpc 함수를 호출하여 대부분의 스캔 아웃 처리를 수행해야 합니다.
FlipInterval
드라이버가 2개, 3개 또는 4개의 세로 동기화가 발생한 후 적용되도록 대칭 이동 명령의 예약을 지원하는지 여부를 지정하는 UINT 값입니다. 드라이버가 2개 이상의 대칭 이동 간격을 지원하는지 여부에 관계없이 드라이버는 즉시 대칭 이동 및 1의 대칭 이동 간격을 지원해야 합니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000004)의 세 번째 비트를 설정하는 것과 같습니다.
FlipImmediateMmIo
드라이버가 MMIO(메모리 매핑 I/O) 기반 즉시 대칭 이동을 지원하는지 여부를 지정하는 UINT 값입니다. 이 유형의 대칭 이동은 다음 세로 동기화가 발생할 때까지 기다리지 않고 드라이버의 DxgkDdiSetVidPnSourceAddress 함수를 호출한 직후에 적용됩니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000008)의 네 번째 비트를 설정하는 것과 같습니다.
Windows 7부터 지원됩니다.
FlipIndependent
드라이버가 독립적인 대칭 이동을 지원하는지 여부를 지정하는 UINT 값입니다. WDDM 1.3 이상 드라이버는 이 멤버를 1로 설정해야 합니다.
독립 대칭 이동에서 운영 체제는 DWM(데스크톱 창 관리자) 사용자 모드 현재 호출을 우회하려고 시도하고 Direct Flip 및 다중 평면 오버레이 프레젠테이션 모델에서 DxgkDdiPresent 및 DxgkDdiSetVidPnSourceAddress를 호출하여 애플리케이션 백 버퍼로 전환합니다.
FlipIndependent가 설정된 경우에도 DWM 사용자 모드 현재 호출이 이루어지는 경우가 있습니다. 드라이버는 여전히 이러한 경우를 처리해야 합니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000010)의 다섯 번째 비트를 설정하는 것과 같습니다.
Windows 8.1 부터 지원합니다.
DdiPresentForIFlip
FlipImmediateOnHSync
Reserved
이 멤버는 예약되어 있으며 0으로 설정해야 합니다. 이 멤버를 0으로 설정하는 것은 32비트 Value 멤버의 나머지 27비트(0xFFFFFFE0)를 0으로 설정하는 것과 같습니다.
이 멤버는 예약되어 있으며 0으로 설정해야 합니다. 이 멤버를 0으로 설정하는 것은 32비트 Value 멤버의 나머지 28비트(0xFFFFFFF0)를 0으로 설정하는 것과 같습니다.
Value
대칭 이동 기능을 식별하는 32비트 값을 보유할 수 있는 DXGK_FLIPCAPS 있는 공용 구조체의 멤버입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
머리글 | d3dkmddi.h(D3dkmddi.h 포함) |