DXGKARG_RENDER structure (d3dkmddi.h)

The DXGKARG_RENDER structure describes members for generating a direct memory access (DMA) buffer from a command buffer.

Syntax

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;

Members

[in] pCommand

A pointer to the start of the command buffer.

Note  When DxgkDdiRender is called, the display miniport driver must validate the buffer. See Remarks in DxgkDdiRender for important info on how the driver should access this member.
 

[in] CommandLength

The size, in bytes, of the command buffer that pCommand points to.

[out] pDmaBuffer

A pointer to the start of the DMA buffer, which is aligned on 4 KB. This buffer can be sent through DMA to the graphics hardware. Before the display miniport driver returns from the DxgkDdiRender or DxgkDdiRenderKm functions, the driver should set pDmaBuffer to the next empty byte that follows the last byte that the driver wrote to, or the driver should point to the location (one byte beyond the buffer space) if no more space is available. This location would have been correct if the buffer was large enough.

[in] DmaSize

The size, in bytes, of the DMA buffer that pDmaBuffer points to.

[in] pDmaBufferPrivateData

A pointer to a driver-resident private data structure that is used for generating the DMA buffer that pDmaBuffer points to.

[in] DmaBufferPrivateDataSize

The number of bytes that remain in the private data structure that pDmaBufferPrivateData points to for the current operation.

[in] pAllocationList

An array of DXGK_ALLOCATIONLIST structures for the list of allocations that the DMA buffer references. Each allocation that is referenced should appear once for optimal performance.

[in] AllocationListSize

The available number of elements in the array that pAllocationList specifies, which represents the number of allocation specifications to send through DMA to the graphics hardware.

[in] pPatchLocationListIn

An array of D3DDDI_PATCHLOCATIONLIST structures for the patch-location list that the user-mode display driver provides in a call to the pfnRenderCb function.

Note  When DxgkDdiRender is called, the display miniport driver must validate the buffer. See Remarks in DxgkDdiRender for important info on how the driver should access this member.
 

[in] PatchLocationListInSize

The number of elements in the patch-location list that pPatchLocationListIn specifies.

[in/out] pPatchLocationListOut

An array of D3DDDI_PATCHLOCATIONLIST structures for the patch-location list that the display miniport driver fills in. Before the driver returns from a call to its DxgkDdiRender or DxgkDdiRenderKm functions, the driver must set pPatchLocationListOut to the next D3DDDI_PATCHLOCATIONLIST element that follows the last D3DDDI_PATCHLOCATIONLIST element that the driver updated.

[in] PatchLocationListOutSize

The number of elements in the patch-location list that pPatchLocationListOut specifies. The display miniport driver is not required to fill all of the elements in the entire list; the driver must use only elements that are necessary to describe the patch location within the DMA buffer.

[in/out] MultipassOffset

A UINT value that specifies the progress of the rendering operation if the display miniport driver's DxgkDdiRender or DxgkDdiRenderKm functions must return STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER to obtain a new DMA buffer. When the driver's DxgkDdiRender or DxgkDdiRenderKm function is first called with a new command buffer, MultipassOffset is initialized to zero. Before the driver returns from the DxgkDdiRender or DxgkDdiRenderKm calls, the driver sets this member to show translation progress for subsequent DxgkDdiRender or DxgkDdiRenderKm call with the same command buffer. The DirectX graphics kernel subsystem does not change the value further.

[in] DmaBufferSegmentId

The identifier of the memory segment that the DMA buffer was paged in. If the identifier is zero, the DMA buffer is not correctly paged in.

[in] DmaBufferPhysicalAddress

A PHYSICAL_ADDRESS data type (which is defined as LARGE_INTEGER) that indicates the physical address where the DMA buffer was paged in. If the physical address is zero, the DMA buffer is not correctly paged in.

Remarks

Support for the DxgkDdiRenderKm function is added beginning with Windows 7 for display adapters that support GDI Hardware Acceleration.

Requirements

Requirement Value
Minimum supported client Windows Vista
Header d3dkmddi.h (include D3dkmddi.h)

See also

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DxgkDdiRender

DxgkDdiRenderKm

pfnRenderCb