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 구조체의 배열입니다. 드라이버는 pAllocationList[DXGK_PRESENT_SOURCE_INDEX] 요소(즉, 요소 1)의 hDeviceSpecificAllocation 멤버를 통해 원본 할당 핸들에 액세스합니다. 드라이버는 pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] 요소(즉, 요소 2)의 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

색 채우기 작업의 A8R8G8B8 색입니다. 이 작업은 Flags 멤버에 설정된 ColorFill 비트 필드 플래그로 지정되거나 SrcColorKey 또는 DstColorKey 비트 필드 플래그로 지정된 color-key 작업입니다. ColorFill, SrcColorKeyDstColorKey 비트 필드 플래그 중 하나만 언제든지 설정됩니다.

기본 형식이 palettized RGB인 경우 Color 에는 D3DDDIFORMAT 열거형 형식의 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 구조체입니다. FlagsColorFill, SrcColorKeyDstColorKey 비트 필드 플래그는 상호 배타적입니다.

[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

선택적 프라이빗 드라이버 데이터가 포함된 버퍼에 대한 포인터입니다.

설명

SrcRectDstRect 멤버가 지정하는 원본 및 대상 사각형 영역의 비율은 스트레치 계수를 계산하는 데 사용됩니다. 드라이버는 복사 작업을 수행할 때 스트레치 팩터 계산을 고려할 수 있습니다.

드라이버는 클리핑을 수행할 필요가 없습니다. Microsoft DirectX 그래픽 커널 하위 시스템은 pDstSubRects 멤버가 DstRect 멤버가 지정하는 대상 사각형의 좌표와 화면(기본)에 지정하는 대상 하위 사각형 목록을 미리 표시합니다. 대상 하위 사각형 목록이 pDstSubRects에 제공된 경우 드라이버는 SrcRectDstRect 만 사용하여 스트레치 팩터를 계산해야 하며 실제 복사 작업에 대상 하위 사각형의 좌표를 사용해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
머리글 d3dkmddi.h(D3dkmddi.h 포함)

추가 정보

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT