DXGKARG_RENDER-Struktur (d3dkmddi.h)

Die DXGKARG_RENDER-Struktur beschreibt Member zum Generieren eines DMA-Puffers (Direct Memory Access) aus einem Befehlspuffer.

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;

Member

[in] pCommand

Ein Zeiger auf den Anfang des Befehlspuffers.

Hinweis Wenn DxgkDdiRender aufgerufen wird, muss der Anzeigeminiporttreiber den Puffer überprüfen. Wichtige Informationen dazu, wie der Treiber auf dieses Element zugreifen soll, finden Sie in den Hinweisen in DxgkDdiRender .
 

[in] CommandLength

Die Größe des Befehlspuffers in Bytes, auf den pCommand zeigt.

[out] pDmaBuffer

Ein Zeiger auf den Anfang des DMA-Puffers, der auf 4 KB ausgerichtet ist. Dieser Puffer kann über DMA an die Grafikhardware gesendet werden. Bevor der Anzeigeminiporttreiber von den Funktionen DxgkDdiRender oder DxgkDdiRenderKm zurückkehrt, sollte der Treiber pDmaBuffer auf das nächste leere Byte festlegen, das auf das letzte Byte folgt, in das der Treiber geschrieben hat, oder der Treiber sollte auf die Position zeigen (ein Byte außerhalb des Pufferspeichers), wenn kein Speicherplatz mehr verfügbar ist. Dieser Speicherort wäre korrekt gewesen, wenn der Puffer groß genug wäre.

[in] DmaSize

Die Größe des DMA-Puffers in Bytes, auf den pDmaBuffer zeigt.

[in] pDmaBufferPrivateData

Ein Zeiger auf eine treiberresidente private Datenstruktur, die zum Generieren des DMA-Puffers verwendet wird, auf den pDmaBuffer verweist.

[in] DmaBufferPrivateDataSize

Die Anzahl der Bytes, die in der privaten Datenstruktur verbleiben, auf die pDmaBufferPrivateData für den aktuellen Vorgang verweist.

[in] pAllocationList

Ein Array von DXGK_ALLOCATIONLIST Strukturen für die Liste der Zuordnungen, auf die der DMA-Puffer verweist. Jede Zuordnung, auf die verwiesen wird, sollte einmal angezeigt werden, um eine optimale Leistung zu erzielen.

[in] AllocationListSize

Die verfügbare Anzahl von Elementen im Array, das pAllocationList angibt, die die Anzahl der Zuordnungsspezifikationen darstellt, die über DMA an die Grafikhardware gesendet werden sollen.

[in] pPatchLocationListIn

Ein Array von D3DDDI_PATCHLOCATIONLIST Strukturen für die Patchspeicherortliste, die der Benutzermodusanzeigetreiber in einem Aufruf der pfnRenderCb-Funktion bereitstellt.

Hinweis Wenn DxgkDdiRender aufgerufen wird, muss der Anzeigeminiporttreiber den Puffer überprüfen. Wichtige Informationen dazu, wie der Treiber auf dieses Element zugreifen soll, finden Sie in den Hinweisen in DxgkDdiRender .
 

[in] PatchLocationListInSize

Die Anzahl der Elemente in der Patchspeicherortliste, die pPatchLocationListIn angibt.

[in/out] pPatchLocationListOut

Ein Array von D3DDDI_PATCHLOCATIONLIST Strukturen für die Patchpositionsliste, die vom Anzeigeminiporttreiber ausgefüllt wird. Bevor der Treiber von einem Aufruf seiner DxgkDdiRender - oder DxgkDdiRenderKm-Funktionen zurückkehrt, muss der Treiber pPatchLocationListOut auf das nächste D3DDDI_PATCHLOCATIONLIST-Element festlegen, das auf das letzte D3DDDI_PATCHLOCATIONLIST Element folgt, das der Treiber aktualisiert hat.

[in] PatchLocationListOutSize

Die Anzahl der Elemente in der Patchspeicherortliste, die pPatchLocationListOut angibt. Der Anzeige-Miniporttreiber ist nicht erforderlich, um alle Elemente in der gesamten Liste auszufüllen. Der Treiber darf nur Elemente verwenden, die zum Beschreiben des Patchspeicherorts innerhalb des DMA-Puffers erforderlich sind.

[in/out] MultipassOffset

Ein UINT-Wert, der den Fortschritt des Renderingvorgangs angibt, wenn die DxgkDdiRender - oder DxgkDdiRenderKm-Funktionen des Anzeigeminiporttreibers STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER zurückgeben müssen, um einen neuen DMA-Puffer abzurufen. Wenn die DxgkDdiRender - oder DxgkDdiRenderKm-Funktion des Treibers zuerst mit einem neuen Befehlspuffer aufgerufen wird, wird MultipassOffset auf null initialisiert. Bevor der Treiber vom DxgkDdiRender - oder DxgkDdiRenderKm-Aufruf zurückgibt, legt der Treiber dieses Element so fest, dass der Übersetzungsfortschritt für den nachfolgenden DxgkDdiRender - oder DxgkDdiRenderKm-Aufruf mit demselben Befehlspuffer angezeigt wird. Das DirectX-Grafikkernsubsystem ändert den Wert nicht weiter.

[in] DmaBufferSegmentId

Der Bezeichner des Speichersegments, in dem der DMA-Puffer ausgelagert wurde. Wenn der Bezeichner null ist, wird der DMA-Puffer nicht ordnungsgemäß ausgelagert.

[in] DmaBufferPhysicalAddress

Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die physische Adresse angibt, in die der DMA-Puffer ausgelagert wurde. Wenn die physische Adresse null ist, wird der DMA-Puffer nicht ordnungsgemäß ausgelagert.

Hinweise

Unterstützung für die DxgkDdiRenderKm-Funktion wird ab Windows 7 für Grafikkarten hinzugefügt, die die GDI-Hardwarebeschleunigung unterstützen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Kopfzeile d3dkmddi.h (einschließlich D3dkmddi.h)

Weitere Informationen

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DxgkDdiRender

DxgkDdiRenderKm

pfnRenderCb