D3DKMT_RENDER structure (d3dkmthk.h)

The D3DKMT_RENDER structure describes the current command buffer to be rendered.

Syntax

typedef struct _D3DKMT_RENDER {
  union {
    [in]     D3DKMT_HANDLE hDevice;
    [in]     D3DKMT_HANDLE hContext;
  };
  [in]     UINT                                  CommandOffset;
  [in]     UINT                                  CommandLength;
  [in]     UINT                                  AllocationCount;
  [in]     UINT                                  PatchLocationCount;
  [out]    VOID                                  *pNewCommandBuffer;
  [in/out] UINT                                  NewCommandBufferSize;
  [out]    D3DDDI_ALLOCATIONLIST                 *pNewAllocationList;
  [in/out] UINT                                  NewAllocationListSize;
  [out]    D3DDDI_PATCHLOCATIONLIST              *pNewPatchLocationList;
  [in/out] UINT                                  NewPatchLocationListSize;
  [in]     D3DKMT_RENDERFLAGS                    Flags;
  [in]     D3DKMT_ALIGN64 ULONGLONG              PresentHistoryToken;
  [in]     ULONG                                 BroadcastContextCount;
           D3DKMT_HANDLE                         BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
  [out]    ULONG                                 QueuedBufferCount;
  [out]    D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS NewCommandBuffer;
           VOID                                  *pPrivateDriverData;
           UINT                                  PrivateDriverDataSize;
} D3DKMT_RENDER;

Members

[in] hDevice

A D3DKMT_HANDLE data type that represents a kernel-mode handle to the device that the command buffer is rendered to. A device handle is supplied to the D3DKMTRender function in the union that D3DKMT_RENDER contains for compatibility with Microsoft Direct3D version 10.

[in] hContext

A D3DKMT_HANDLE data type that represents a kernel-mode handle to the device context that the command buffer is rendered to.

[in] CommandOffset

The offset, in bytes, to the first command in the command buffer.

[in] CommandLength

The size, in bytes, of the command buffer starting from offset zero.

[in] AllocationCount

The number of elements in the submitted allocation list.

[in] PatchLocationCount

The number of elements in the submitted patch-location list.

[out] pNewCommandBuffer

A pointer to a command buffer that the OpenGL ICD receives to use in its next call to the D3DKMTRender function. The driver must always update its pointer to the command buffer after any call to D3DKMTRender regardless of whether the call is successful.

Supported in Windows 7 and later versions:

[in] A pointer to the command buffer to be rendered if the RenderKm flag is set in the Flags member.

[in/out] NewCommandBufferSize

The size, in bytes, that the OpenGL ICD requests for the next command buffer if the ResizeCommandBuffer bit-field flag is specified in the Flags member. If ResizeCommandBuffer is not specified, the value in NewCommandBufferSize is ignored. On output, the driver receives the size, in bytes, of the next command buffer to use.

Depending on current memory conditions the output size might not match the input size.

[out] pNewAllocationList

An array of D3DDDI_ALLOCATIONLIST structures that the OpenGL ICD receives to use as the allocation list in its next call to the D3DKMTRender function. The driver must always update its pointer to the allocation list after any call to D3DKMTRender regardless of whether the call is successful.

Supported in Windows 7 and later versions:

[in] A pointer to the allocation list to be rendered if the RenderKm flag is set in the Flags member.

[in/out] NewAllocationListSize

The number of elements that the OpenGL ICD requests for the next allocation list if the ResizeAllocationList bit-field flag is specified in the Flags member. If ResizeAllocationList is not specified, the value in NewAllocationListSize is ignored. On output, the driver receives the number of elements that will be available in an array of allocations when the next command buffer is submitted.

Depending on current memory conditions the output size might not match the input size.

[out] pNewPatchLocationList

An array of D3DDDI_PATCHLOCATIONLIST structures that the OpenGL ICD receives to use as the patch-location list in its next call to the D3DKMTRender function. The driver must always update its pointer to the patch-location list after any call to D3DKMTRender regardless of whether the call is successful.

[in/out] NewPatchLocationListSize

The number of elements that the OpenGL ICD requests for the next patch-location list if the ResizePatchLocationList bit-field flag is specified in the Flags member. If ResizePatchLocationList is not specified, the value in NewPatchLocationListSize is ignored. On output, the driver receives the number of elements that will be available in an array of patch locations when the next command buffer is submitted.

Depending on current memory conditions the output size might not match the input size.

[in] Flags

A D3DKMT_RENDERFLAGS structure that indicates the type of command buffer, in bit-field flags, to be rendered.

[in] PresentHistoryToken

The present history token for redirected calls to the display miniport driver's DxgkDdiPresent function.

A present history token is a data packet that the rendering app submits to inform the Desktop Window Manager (DWM) that rendering is complete and the swap chain back buffer is ready to be presented.

[in] BroadcastContextCount

The number of additional contexts in the array that BroadcastContext specifies.

[in] BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]

An array of D3DKMT_HANDLE data types that represent kernel-mode handles to the additional contexts to broadcast the current command buffer to. The D3DDDI_MAX_BROADCAST_CONTEXT constant, which is defined as 64, defines the maximum number of contexts that the OpenGL ICD can broadcast the current command buffer to.

The original context that the hContext member specifies and that owns the command buffer is not an element in the BroadcastContext array. For example, if the BroadcastContext array contains one element, the OpenGL ICD sends the command buffer to the owning context (hContext) and broadcasts to that one additional context.

[out] QueuedBufferCount

The number of DMA buffers that are queued to the context that the hContext member specifies after the submission.

[out] NewCommandBuffer

A pointer to a command buffer that the OpenGL ICD receives to use in its next call to the D3DKMTRender function. The driver must always update its pointer to the command buffer after any call to D3DKMTRender regardless of whether the call is successful.

Supported in Windows 7 and later versions:

[in] A pointer to the command buffer to be rendered if the RenderKm flag is set in the Flags member.

pPrivateDriverData

This member is reserved and should be set to zero.

This member is available beginning with Windows 7.

PrivateDriverDataSize

This member is reserved and should be set to zero.

This member is available beginning with Windows 7.

Requirements

Requirement Value
Minimum supported client Windows Vista
Header d3dkmthk.h (include D3dkmthk.h)

See also

D3DKMTRender

D3DKMT_RENDERFLAGS

DxgkDdiPresent