DXGKARG_RENDER 구조체(d3dkmddi.h)

DXGKARG_RENDER 구조는 명령 버퍼에서 DMA(직접 메모리 액세스) 버퍼를 생성하기 위한 멤버를 설명합니다.

구문

typedef struct _DXGKARG_RENDER {
  [in]     const VOID               *pCommand;
  [in]     UINT                     CommandLength;
  [out]    VOID                     *pDmaBuffer;
  [in]     UINT                     DmaSize;
  [in]     VOID                     *pDmaBufferPrivateData;
  [in]     UINT                     DmaBufferPrivateDataSize;
  [in]     DXGK_ALLOCATIONLIST      *pAllocationList;
  [in]     UINT                     AllocationListSize;
  [in]     D3DDDI_PATCHLOCATIONLIST *pPatchLocationListIn;
  [in]     UINT                     PatchLocationListInSize;
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
  [in]     UINT                     PatchLocationListOutSize;
  [in/out] UINT                     MultipassOffset;
  [in]     UINT                     DmaBufferSegmentId;
  [in]     PHYSICAL_ADDRESS         DmaBufferPhysicalAddress;
} DXGKARG_RENDER;

멤버

[in] pCommand

명령 버퍼의 시작 부분에 대한 포인터입니다.

참고DxgkDdiRender 가 호출되면 디스플레이 미니포트 드라이버가 버퍼의 유효성을 검사해야 합니다. 드라이버가 이 멤버에 액세스하는 방법에 대한 중요한 정보는 DxgkDdiRender 의 설명을 참조하세요.
 

[in] CommandLength

pCommand가 가리키는 명령 버퍼의 크기(바이트)입니다.

[out] pDmaBuffer

4KB에 맞춰진 DMA 버퍼의 시작 부분에 대한 포인터입니다. 이 버퍼는 DMA를 통해 그래픽 하드웨어로 보낼 수 있습니다. 디스플레이 미니포트 드라이버가 DxgkDdiRender 또는 DxgkDdiRenderKm 함수에서 반환되기 전에 드라이버는 pDmaBuffer 를 드라이버가 쓴 마지막 바이트 뒤에 오는 다음 빈 바이트로 설정해야 합니다. 또는 더 이상 공간을 사용할 수 없는 경우 드라이버가 위치(버퍼 공간 너머의 1바이트)를 가리킵니다. 버퍼가 충분히 크면 이 위치가 올바르었을 것입니다.

[in] DmaSize

pDmaBuffer가 가리키는 DMA 버퍼의 크기(바이트)입니다.

[in] pDmaBufferPrivateData

pDmaBuffer가 가리키는 DMA 버퍼를 생성하는 데 사용되는 드라이버 상주 프라이빗 데이터 구조에 대한 포인터입니다.

[in] DmaBufferPrivateDataSize

pDmaBufferPrivateData가 현재 작업에 대해 가리키는 프라이빗 데이터 구조에 남아 있는 바이트 수입니다.

[in] pAllocationList

DMA 버퍼가 참조하는 할당 목록에 대한 DXGK_ALLOCATIONLIST 구조의 배열입니다. 최적의 성능을 위해 참조되는 각 할당이 한 번 표시되어야 합니다.

[in] AllocationListSize

pAllocationList가 지정하는 배열에서 사용 가능한 요소 수로, DMA를 통해 그래픽 하드웨어로 보낼 할당 사양의 수를 나타냅니다.

[in] pPatchLocationListIn

사용자 모드 표시 드라이버가 pfnRenderCb 함수를 호출할 때 제공하는 패치 위치 목록에 대한 D3DDDI_PATCHLOCATIONLIST 구조의 배열입니다.

참고DxgkDdiRender 가 호출되면 디스플레이 미니포트 드라이버가 버퍼의 유효성을 검사해야 합니다. 드라이버가 이 멤버에 액세스하는 방법에 대한 중요한 정보는 DxgkDdiRender 의 설명을 참조하세요.
 

[in] PatchLocationListInSize

pPatchLocationListIn이 지정하는 패치 위치 목록의 요소 수입니다.

[in/out] pPatchLocationListOut

디스플레이 미니포트 드라이버가 채우는 패치 위치 목록의 D3DDDI_PATCHLOCATIONLIST 구조 배열입니다. 드라이버가 DxgkDdiRender 또는 DxgkDdiRenderKm 함수에 대한 호출에서 반환하기 전에 드라이버는 pPatchLocationListOut 을 드라이버가 업데이트한 마지막 D3DDDI_PATCHLOCATIONLIST 요소 다음에 오는 다음 D3DDDI_PATCHLOCATIONLIST 요소로 설정해야 합니다.

[in] PatchLocationListOutSize

pPatchLocationListOut에서 지정하는 패치 위치 목록의 요소 수입니다. 디스플레이 미니포트 드라이버는 전체 목록의 모든 요소를 채울 필요가 없습니다. 드라이버는 DMA 버퍼 내에서 패치 위치를 설명하는 데 필요한 요소만 사용해야 합니다.

[in/out] MultipassOffset

디스플레이 미니포트 드라이버의 DxgkDdiRender 또는 DxgkDdiRenderKm 함수가 새 DMA 버퍼를 얻기 위해 STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER 반환해야 하는 경우 렌더링 작업의 진행률을 지정하는 UINT 값입니다. 드라이버의 DxgkDdiRender 또는 DxgkDdiRenderKm 함수가 먼저 새 명령 버퍼로 호출되면 MultipassOffset 이 0으로 초기화됩니다. 드라이버가 DxgkDdiRender 또는 DxgkDdiRenderKm 호출에서 반환되기 전에 드라이버는 동일한 명령 버퍼를 사용하여 후속 DxgkDdiRender 또는 DxgkDdiRenderKm 호출에 대한 번역 진행률을 표시하도록 이 멤버를 설정합니다. DirectX 그래픽 커널 하위 시스템은 값을 더 이상 변경하지 않습니다.

[in] DmaBufferSegmentId

DMA 버퍼가 페이징된 메모리 세그먼트의 식별자입니다. 식별자가 0이면 DMA 버퍼가 올바르게 페이징되지 않습니다.

[in] DmaBufferPhysicalAddress

DMA 버퍼가 페이징된 실제 주소를 나타내는 PHYSICAL_ADDRESS 데이터 형식(LARGE_INTEGER 정의됨)입니다. 실제 주소가 0이면 DMA 버퍼가 올바르게 페이징되지 않습니다.

설명

DxgkDdiRenderKm 함수에 대한 지원은 GDI 하드웨어 가속을 지원하는 디스플레이 어댑터용 Windows 7부터 추가됩니다.

요구 사항

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

추가 정보

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DxgkDdiRender

DxgkDdiRenderKm

pfnRenderCb