Auf Englisch lesen

Freigeben über


DXGKARG_SUBMITCOMMAND Struktur (d3dkmddi.h)

Die DXGKARG_SUBMITCOMMAND-Struktur beschreibt den DMA-Puffer (Direct Memory Access), den ein Anzeige-Miniporttreiber während eines Aufrufs von DxgkDdiSubmitCommandan die Ausführungseinheit des Hardwarebefehls übermittelt.

Syntax

typedef struct _DXGKARG_SUBMITCOMMAND {
  union {
    HANDLE hDevice;
    HANDLE hContext;
  };
  UINT                           DmaBufferSegmentId;
  PHYSICAL_ADDRESS               DmaBufferPhysicalAddress;
  UINT                           DmaBufferSize;
  UINT                           DmaBufferSubmissionStartOffset;
  UINT                           DmaBufferSubmissionEndOffset;
  VOID                           *pDmaBufferPrivateData;
  UINT                           DmaBufferPrivateDataSize;
  UINT                           DmaBufferPrivateDataSubmissionStartOffset;
  UINT                           DmaBufferPrivateDataSubmissionEndOffset;
  UINT                           SubmissionFenceId;
  D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
  D3DDDI_FLIPINTERVAL_TYPE       FlipInterval;
  DXGK_SUBMITCOMMANDFLAGS        Flags;
  UINT                           EngineOrdinal;
  D3DGPU_VIRTUAL_ADDRESS         DmaBufferVirtualAddress;
  UINT                           NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;

Angehörige

hDevice

[in] Wenn der Treiber nicht mit mehreren Modulen kompatibel ist (d. h. der Treiber unterstützt die Kontexterstellung nicht), hDevice ein Handle für das Anzeigegerät (Grafikkontext) ist, von dem die Übermittlungsanforderung stammt. Ein Gerätehandle wird an die DxgkDdiSubmitCommand Funktion des Treibers in der Union bereitgestellt, die DXGKARG_SUBMITCOMMAND enthält.

Bei einigen Auslagerungsvorgängen ist hDevice- NULL (z. B. Auslagerungsvorgänge, die den Inhalt des gesamten Framepuffers während der Energieverwaltung entfernen). Pagingvorgänge werden durch das Paging- Bitfeld-Flag im Flags Member angegeben.

hContext

[in] Wenn der Treiber mehrere Engines kennt (d. h. der Treiber unterstützt die Kontexterstellung), wird ein Handle für den Gerätekontext ausgeführt, von dem die Übermittlungsanforderung stammt. Ein Kontexthandle wird für die DxgkDdiSubmitCommand- Funktion des Treibers in der Union bereitgestellt, die DXGKARG_SUBMITCOMMAND enthält.

Bei einigen Pagingvorgängen ist hContext- NULL (z. B. Auslagerungsvorgänge, die den Inhalt des gesamten Framepuffers während der Energieverwaltung entfernen). Pagingvorgänge werden durch das Paging- Bitfeld-Flag im Flags Member angegeben.

DmaBufferSegmentId

[in] Der Bezeichner des Speichersegments, in das der DMA-Puffer ausgelagert wurde.

Der Bezeichner kann null sein, wenn der Angegebene Treiber den DMA-Puffer nicht in das Segment zuordnen soll, indem der DmaBufferSegmentSet Element der DXGK_CONTEXTINFO-Struktur in einem Aufruf der DxgkDdiCreateContext--Funktion des Treibers auf 0 festgelegt wird. Wenn DmaBufferSegmentId null ist, wurde der DMA-Puffer als zusammenhängender Speicherblock zugewiesen.

DmaBufferPhysicalAddress

[in] Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die physische Adresse angibt, in der der DMA-Puffer ausgelagert wurde.

Wenn DmaBufferSegmentId null ist, ist DmaBufferPhysicalAddress die physische Adresse im Systemspeicher, in dem sich der DMA-Puffer befindet.

Wenn DmaBufferSegmentId ungleich Null ist, ist DmaBufferPhysicalAddress die physische Segmentadresse für den DMA-Puffer; d. h., die Adresse verweist auf eine physische Adresse des Blendensegments ein zusammenhängender Adressraum, der im physischen Speicher definiert ist (DXGK_SEGMENTDESCRIPTOR. BaseAddress + DmaBuffer.SegmentOffset).

Beachten Sie, dass DmaBufferPhysicalAddress immer auf den Anfang des DMA-Puffers verweist, auch wenn der Treiber möglicherweise zum Patchen oder Übermitteln eines Abschnitts des DMA-Puffers erforderlich ist, der nicht den Anfang des DMA-Puffers enthält (d. r., wenn der DmaBufferSubmissionStartOffset Member ungleich Null ist).

DmaBufferSize

[in] Die Größe des DMA-Puffers in Bytes.

DmaBufferSize stellt die gesamte Länge des DMA-Puffers dar; Die Anforderung zum Patchen oder Übermitteln kann jedoch nur auf einen Teil des DMA-Puffers verweisen.

DmaBufferSubmissionStartOffset

[in] Der Offset (in Byte) vom Anfang des DMA-Puffers bis zum Anfang des Teils des DMA-Puffers, der patchen oder übermitteln muss. Der Offset, der zur Patchzeit empfangen wird, entspricht dem Offset, der zur Übermittlungszeit empfangen wird.

DmaBufferSubmissionEndOffset

[in] Der Offset (in Byte) vom Anfang des DMA-Puffers bis zum Ende des Teils des DMA-Puffers, der patchen oder übermitteln muss. Der Offset, der zur Patchzeit empfangen wird, entspricht dem Offset, der zur Übermittlungszeit empfangen wird.

pDmaBufferPrivateData

[in] Ein Zeiger auf die privaten Treiberdaten, die dem DMA-Puffer zugeordnet sind, der während der DxgkDdiRender-, DxgkDdiPresent-oder DxgkDdiPatch--Funktion gefüllt wurde.

Bei Pagingvorgängen wird ein einzelner Pagingpuffer für mehrere unabhängige Übermittlungen verwendet. In diesem Szenario kann der Treiber angeben, indem er den entsprechenden privaten Treiberdatenzeiger in einem Aufruf seiner DxgkDdiBuildPagingBuffer Funktion zurückgibt, um entweder einen einzelnen privaten Treiberdatenbereich für alle Übermittlungen oder eine für jede Übermittlung zu verwenden.

DmaBufferPrivateDataSize

[in] Die Größe der privaten Treiberdaten, auf die pDmaBufferPrivateData in Byte verweist.

DmaBufferPrivateDataSize stellt die gesamte Länge des privaten Treiberdatenpuffers dar; Der Teil, der der aktuellen Übermittlung zugeordnet ist, ist jedoch möglicherweise kleiner.

KMD sollte die privaten Daten nicht überprüfen, wenn dieses Mitglied null ist.

DmaBufferPrivateDataSubmissionStartOffset

[in] Der Offset (in Byte) vom Anfang der privaten DMA-Pufferdaten, die pDmaBufferPrivateData gibt den Anfang des Teils der privaten Daten an, der der aktuellen Übermittlung zugeordnet ist. DmaBufferPrivateDataSubmissionStartOffset ist immer null für eine nicht zuordnende Anforderung.

DmaBufferPrivateDataSubmissionEndOffset

[in] Der Offset (in Byte) vom Anfang der privaten DMA-Pufferdaten, die pDmaBufferPrivateData angibt, bis zum Ende des Teils der privaten Daten, die der aktuellen Übermittlung zugeordnet sind.

SubmissionFenceId

[in] Ein eindeutiger Bezeichner, den der Treiber in den Zaunbefehl im Ringpuffer schreiben kann. Dabei handelt es sich um den Puffer, in dem DMA-Puffer für die Ausführung der Grafikverarbeitungseinheit (GPU) in die Warteschlange gestellt werden. Weitere Informationen zu diesen Arten von Bezeichnern finden Sie unter Bereitstellen von Zaun-IDs.

VidPnSourceId

[in] Die nullbasierte Identifikationsnummer der Videoquelle in einem Pfad einer Netzwerktopologie (Video Present Network, VidPN) für einen Flip-Vorgang. Dieses Element ist nur gültig, wenn das Flip oder FlipWithNoWait- Bitfeldkennzeichen im Flags Member festgelegt ist.

FlipInterval

[in] Ein D3DDDI_FLIPINTERVAL_TYPE-typisierter Wert, der das Flip-Intervall angibt (d. a., wenn der Flip nach Null, 1, zwei, drei oder vier vertikalen Synchronisierungen erfolgt). FlipInterval- ist nur gültig, wenn das Bitfeld-Flag "Flip" (d. h. TRUE-) im Flags Member festgelegt ist.

Flags

[in] Eine DXGK_SUBMITCOMMANDFLAGS Struktur, die Informationen zum zu übermittelnden DMA-Puffer identifiziert.

EngineOrdinal

[in] Reserviert für die zukünftige Verwendung.

DmaBufferVirtualAddress

Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 7 unterstützt.

NodeOrdinal

Der nullbasierte Index des Knotens, für den der Kontext erstellt wird. Gibt den Knoten an, wenn der Kontext NULL ist. Wird ab Windows 8 unterstützt.

Bemerkungen

Die DxgkDdiSubmitCommand- funktion des Anzeigeminiporttreibers muss beachten, dass mehrere Prozesse auf das Geräteobjekt zugreifen können, das vom hDevice- Member gleichzeitig angegeben wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista (WDDM 1.0)
Header- d3dkmddi.h (einschließlich D3dkmddi.h)

Siehe auch

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer-

DxgkDdiCreateContext-

DxgkDdiPatch-

DxgkDdiPresent-

DxgkDdiRender

DxgkDdiSubmitCommand