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;
Angehörige
[in] pCommand
Ein Zeiger auf den Anfang des Befehlspuffers.
[in] CommandLength
Die Größe des Befehlspuffers in Bytes, auf den pCommand verweist.
[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 der DxgkDdiRender oder DxgkDdiRenderKm--Funktionen zurückgibt, sollte der Treiber pDmaBuffer auf das nächste leere Byte festlegen, das dem letzten Byte folgt, an das der Treiber geschrieben hat, oder der Treiber sollte auf die Position (ein Byte über den Pufferbereich hinaus) zeigen, wenn kein weiterer Speicherplatz verfügbar ist. Dieser Speicherort wäre korrekt gewesen, wenn der Puffer groß genug war.
[in] DmaSize
Die Größe des DMA-Puffers in Bytes, auf den pDmaBuffer verweist.
[in] pDmaBufferPrivateData
Ein Zeiger auf eine treiberbasierte private Datenstruktur, die zum Generieren des DMA-Puffers verwendet wird, der pDmaBuffer verweist.
[in] DmaBufferPrivateDataSize
Die Anzahl der Bytes, die in der privaten Datenstruktur verbleiben, 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, das 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 Anzeigetreiber für den Benutzermodus in einem Aufruf der pfnRenderCb--Funktion bereitstellt.
[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 der Anzeigeminiporttreiber ausfüllt. Bevor der Treiber von einem Aufruf an seinen DxgkDdiRender oder DxgkDdiRenderKm--Funktionen zurückgibt, muss der Treiber pPatchLocationListOut- auf das nächste D3DDDI_PATCHLOCATIONLIST Element festlegen, das dem letzten D3DDDI_PATCHLOCATIONLIST Element folgt, das der Treiber aktualisiert hat.
[in] PatchLocationListOutSize
Die Anzahl der Elemente in der Patchspeicherortliste, die "pPatchLocationListOut" angibt. Der Miniporttreiber für die Anzeige ist nicht erforderlich, um alle Elemente in der gesamten Liste auszufüllen; Der Treiber darf nur Elemente verwenden, die zum Beschreiben der Patchposition innerhalb des DMA-Puffers erforderlich sind.
[in/out] MultipassOffset
Ein UINT-Wert, der den Fortschritt des Renderingvorgangs angibt, wenn die dxgkDdiRender- oder DxgkDdiRenderKm--Funktionen STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER zurückgeben müssen, um einen neuen DMA-Puffer abzurufen. Wenn die des Treibers DxgkDdiRender oder DxgkDdiRenderKm- funktion zuerst mit einem neuen Befehlspuffer aufgerufen wird, wird MultipassOffset- auf Null initialisiert. Bevor der Treiber aus dem DxgkDdiRender- oder DxgkDdiRenderKm- aufruft, legt der Treiber dieses Element so fest, dass der Übersetzungsfortschritt für nachfolgende DxgkDdiRender oder DxgkDdiRenderKm Aufruf mit demselben Befehlspuffer angezeigt wird. Das DirectX-Grafik-Kernelsubsystem ändert den Wert nicht weiter.
[in] DmaBufferSegmentId
Der Bezeichner des Speichersegments, in dem der DMA-Puffer ausgelagert wurde. Wenn der Bezeichner 0 ist, wird der DMA-Puffer nicht ordnungsgemäß eingeblattt.
[in] DmaBufferPhysicalAddress
Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGERdefiniert ist), der die physische Adresse angibt, in der der DMA-Puffer ausgelagert wurde. Wenn die physische Adresse 0 ist, wird der DMA-Puffer nicht korrekt ausgelagert.
Bemerkungen
Unterstützung für die DxgkDdiRenderKm--Funktion wird ab Windows 7 für Grafikkarten hinzugefügt, die GDI-Hardwarebeschleunigungunterstützen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista |
Header- | d3dkmddi.h (einschließlich D3dkmddi.h) |