DXGKARG_PRESENT 구조체(d3dkmddi.h)
DXGKARG_PRESENT 구조는 원본-기본 복사 작업을 설명합니다.
통사론
typedef struct _DXGKARG_PRESENT {
[out] VOID *pDmaBuffer;
[in] UINT DmaSize;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
union {
[in] DXGK_ALLOCATIONLIST *pAllocationList;
[in] DXGK_PRESENTALLOCATIONINFO *pAllocationInfo;
[in] DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
};
#if ...
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
[in] UINT PatchLocationListOutSize;
[in] DXGK_ALLOCATIONLIST *pAllocationList;
#else
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
[in] UINT PatchLocationListOutSize;
#endif
[in/out] UINT MultipassOffset;
[in] UINT Color;
[in] RECT DstRect;
[in] RECT SrcRect;
[in] UINT SubRectCnt;
[in] const RECT *pDstSubRects;
[in] D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
[in] DXGK_PRESENTFLAGS Flags;
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] UINT Reserved;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT NumSrcAllocations;
UINT NumDstAllocations;
UINT PrivateDriverDataSize;
PVOID pPrivateDriverData;
} DXGKARG_PRESENT;
회원
[out] pDmaBuffer
4KB에 맞춰진 DMA 버퍼의 시작 부분에 대한 포인터입니다. 이 버퍼는 DMA를 통해 그래픽 하드웨어로 보낼 수 있습니다. 디스플레이 미니포트 드라이버가 DxgkDdiPresent 함수에서 반환되기 전에 드라이버는 pDmaBuffer 드라이버가 쓴 마지막 바이트 뒤에 오는 다음 빈 바이트로 설정해야 합니다. 또는 더 이상 공간을 사용할 수 없는 경우 드라이버가 위치를 가리킵니다(버퍼 공간 초과 1바이트). 버퍼가 충분히 크면 이 위치가 올바르었을 것입니다.
[in] DmaSize
pDmaBuffer 가리키는 DMA 버퍼의 크기(바이트)입니다.
[in] pDmaBufferPrivateData
pDmaBuffer가 가리키는 DMA 버퍼와 연결된 드라이버 상주 개인 데이터 구조에 대한 포인터입니다.
[in] DmaBufferPrivateDataSize
pDmaBufferPrivateData가 현재 작업에 대해 가리키는 프라이빗 데이터 구조에 남아 바이트 수입니다.
[in] pAllocationList
복사 작업에 대한 원본, 대상 또는 둘 다를 설명하는 DXGK_ALLOCATIONLIST 구조의 배열입니다. 드라이버는 [DXGK_PRESENT_SOURCE_INDEX] 요소(즉, 요소 1)pAllocationList의 hDeviceSpecificAllocation 멤버를 통해 원본 할당 핸들에 액세스합니다. 드라이버는 [DXGK_PRESENT_DESTINATION_INDEX] 요소(즉, 요소 2)pAllocationList의 hDeviceSpecificAllocation 멤버를 통해 대상 할당 핸들에 액세스합니다.
할당 목록의 요소에 지정된 핸들은 할당이 열릴 때 드라이버의 DxgkDdiOpenAllocation 함수가 반환하는 디바이스별 핸들입니다. 작업에 대한 원본 또는 대상이 없는 경우 해당 요소의 hDeviceSpecificAllocation 멤버는 NULL . 이 멤버는 Windows 7부터 사용할 수 있습니다.
메모
할당 목록(요소 0)에 있는 첫 번째 요소의 hDeviceSpecificAllocation 멤버는 항상 NULL .
[in] pAllocationInfo
시스템 사용을 위해 예약되어 있습니다. 디스플레이 미니포트 드라이버는 이 멤버를 무시해야 합니다. 이 멤버는 Windows 7부터 사용할 수 있습니다.
[in] pPresentMultiPlaneOverlayInfo
VidPN 입력 및 표시할 오버레이 평면에 대한 정보를 지정하는 형식 DXGK_PRESENTMULTIPLANEOVERLAYINFO 구조에 대한 포인터입니다.
Windows 8부터 지원됩니다.
[in/out] pPatchLocationListOut
디스플레이 미니포트 드라이버가 채우는 패치 위치 목록에 대한 D3DDDI_PATCHLOCATIONLIST 구조의 배열입니다. 드라이버가 DxgkDdiPresent 함수에 대한 호출에서 반환하기 전에 드라이버는 pPatchLocationListOut 드라이버가 업데이트한 마지막 D3DDDI_PATCHLOCATIONLIST 요소 다음에 오는 다음 D3DDDI_PATCHLOCATIONLIST 요소로 설정해야 합니다.
[in] PatchLocationListOutSize
pPatchLocationListOut 지정하는 패치 위치 목록의 요소 수입니다. 디스플레이 미니포트 드라이버는 전체 목록의 모든 요소를 채울 필요가 없습니다. 드라이버는 DMA 버퍼 내의 패치 위치를 설명하는 데 필요한 요소만 사용해야 합니다.
[in/out] MultipassOffset
디스플레이 미니포트 드라이버의 DxgkDdiPresent 함수가 새 DMA 버퍼를 가져오기 위해 STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER 반환해야 하는 경우 복사 작업의 진행률을 지정하는 UINT 값입니다. 드라이버의 DxgkDdiPresent 함수가 새 RECT 목록을 사용하여 처음 호출되면 MultipassOffset 0으로 초기화됩니다. 드라이버가 DxgkDdiPresent 호출에서 반환되기 전에 드라이버는 MultipassOffset 설정하여 동일한 명령 버퍼를 사용하여 후속 DxgkDdiPresent 호출에 대한 복사 진행률을 표시합니다. Microsoft DirectX 그래픽 커널 하위 시스템은 값을 더 이상 변경하지 않습니다.
[in] Color
Flags 멤버에 설정된 ColorFill 비트 필드 플래그로 지정된 색 채우기 작업 또는 SrcColorKey 또는 DstColorKey 비트 필드 플래그로 지정된 색 키 작업의 A8R8G8B8 색입니다. ColorFill, SrcColorKey및 DstColorKey 비트 필드 플래그 중 하나만 언제든지 설정됩니다.
기본 형식이 RGB로 설정된 경우 ColorD3DDDIFORMAT 열거형 형식의 D3DDDIFMT_A8R8G8B8 값이 아닌 색상표 인덱스가 포함됩니다.
[in] DstRect
스트레치 팩터를 계산하는 데 사용되는 대상 사각형의 RECT 구조체입니다.
[in] SrcRect
스트레치 팩터를 계산하는 데 사용되는 원본 사각형의 RECT 구조체입니다.
[in] SubRectCnt
pDstSubRects 지정하는 배열의 대상 하위 사각형 수입니다.
[in] pDstSubRects
DxgkDdiPresent 함수가 복사하는 대상 하위 사각형 목록에 대한 RECT 구조의 배열입니다.
[in] FlipInterval
대칭 이동 간격(즉, 대칭 이동이 0, 1, 2, 3 또는 4 세로 동기화 후 발생하는 경우)을 나타내는 D3DDDI_FLIPINTERVAL_TYPE형식화된 값입니다.
[in] Flags
비트 필드 플래그에서 수행할 현재 작업의 형식을 식별하는 DXGK_PRESENTFLAGS 구조체입니다. ColorFill, SrcColorKey및 DstColorKeyFlags 비트 필드 플래그는 함께 사용할 수 없습니다.
[in] DmaBufferSegmentId
DMA 버퍼가 페이징된 메모리 세그먼트의 식별자입니다. 식별자가 0이면 DMA 버퍼가 올바르게 페이징되지 않습니다.
[in] DmaBufferPhysicalAddress
DMA 버퍼가 페이징된 실제 주소를 나타내는 PHYSICAL_ADDRESS 데이터 형식(LARGE_INTEGER로 정의됨)입니다. 실제 주소가 0이면 DMA 버퍼가 올바르게 페이징되지 않습니다.
[in] Reserved
시스템 사용을 위해 예약되어 있습니다. 드라이버는 이 멤버를 무시해야 합니다.
DmaBufferGpuVirtualAddress
DMA 버퍼가 페이징된 가상 주소를 나타내는 D3DGPU_VIRTUAL_ADDRESS 데이터 형식입니다. 실제 주소가 0이면 DMA 버퍼가 올바르게 페이징되지 않습니다.
NumSrcAllocations
원본의 컨텍스트 할당 수입니다.
NumDstAllocations
대상의 컨텍스트 할당 수입니다.
PrivateDriverDataSize
pPrivateDriverData크기입니다.
pPrivateDriverData
선택적 프라이빗 드라이버 데이터가 포함된 버퍼에 대한 포인터입니다.
발언
SrcRect 및 DstRect 멤버가 지정하는 원본 및 대상 사각형 영역의 비율은 스트레치 팩터를 계산하는 데 사용됩니다. 드라이버는 복사 작업을 수행할 때 스트레치 팩터 계산을 고려할 수 있습니다.
드라이버는 클리핑을 수행할 필요가 없습니다. Microsoft DirectX 그래픽 커널 하위 시스템은 pDstSubRects 멤버가 DstRect 멤버가 지정하는 대상 사각형의 좌표와 화면(기본)에 지정하는 대상 하위 사각형 목록을 미리 표시합니다. 대상 하위 사각형 목록이 pDstSubRects제공된 경우 드라이버는 SrcRect 및 DstRect 사용하여 스트레치 팩터를 계산해야 하며 실제 복사 작업에 대상 하위 사각형의 좌표를 사용해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
헤더 | d3dkmddi.h(D3dkmddi.h 포함) |