ID3D12GraphicsCommandList1::AtomicCopyBufferUINT64-Methode (d3d12.h)

Kopiert ein primäres Datenelement vom Typ UINT64 atomar aus einer Ressource in eine andere, zusammen mit optionalen abhängigen Ressourcen.

Diese "abhängigen Ressourcen" werden so benannt, da sie vom primären Datenelement abhängen, um sie zu finden. In der Regel ist das Schlüsselelement eine Adresse, ein Index oder ein anderes Handle, das indirekt auf eine oder mehrere abhängige Ressourcen verweist.

Diese Funktion unterstützt ein primäres Datenelement vom Typ UINT64 (64 Bit). Eine andere Version dieser Funktion, AtomicCopyBufferUINT, unterstützt ein primäres Datenelement vom Typ UINT (32 Bit).

Syntax

void AtomicCopyBufferUINT64(
  [in] ID3D12Resource                       *pDstBuffer,
       UINT64                               DstOffset,
  [in] ID3D12Resource                       *pSrcBuffer,
       UINT64                               SrcOffset,
       UINT                                 Dependencies,
  [in] ID3D12Resource                       * const *ppDependentResources,
  [in] const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges
);

Parameter

[in] pDstBuffer

Typ: ID3D12Resource*

SAL: In

Die Ressource, in die das primäre UINT64-Datenelement kopiert wird.

DstOffset

Typ: UINT64

Ein Offset in den Zielressourcenpuffer, der angibt, wohin das primäre Datenelement in Bytes kopiert wird. Dieser Offset in Kombination mit der Basisadresse des Ressourcenpuffers muss zu einer Speicheradresse führen, die natürlich für UINT64-Werte ausgerichtet ist.

[in] pSrcBuffer

Typ: ID3D12Resource*

SAL: In

Die Ressource, aus der das primäre UINT64-Datenelement kopiert wird. Bei diesen Daten handelt es sich in der Regel um eine Adresse, einen Index oder ein anderes Handle, mit dem Shadercode die neueste Version von latenzsensiblen Informationen suchen kann.

SrcOffset

Typ: UINT64

Ein Offset in den Quellressourcenpuffer, der angibt, wo das primäre Datenelement in Bytes kopiert wird. Dieser Offset in Kombination mit der Basisadresse des Ressourcenpuffers muss zu einer Speicheradresse führen, die natürlich für UINT64-Werte ausgerichtet ist.

Dependencies

Typ: UINT

Die Anzahl der abhängigen Ressourcen.

[in] ppDependentResources

Typ: ID3D12Resource*

SAL: In_reads(Dependencies)

Ein Array von Ressourcen, die die abhängigen Elemente der Datennutzlast enthalten.

[in] pDependentSubresourceRanges

Typ: const D3D12_SUBRESOURCE_RANGE_UINT64*

SAL: In_reads(Dependencies)

Ein Array von Unterressourcenbereichen, die die abhängigen Elemente der Datennutzlast angeben. Diese Elemente werden vollständig aktualisiert, bevor das primäre Datenelement selbst atomar kopiert wird. Dadurch wird sichergestellt, dass der gesamte Vorgang logisch atomar ist; Das heißt, das primäre Datenelement bezieht sich niemals auf eine unvollständige Datennutzlast.

Rückgabewert

Keine

Bemerkungen

Diese Methode wird in der Regel verwendet, um Ressourcen zu aktualisieren, deren normale Renderingpipelinelatenz sich negativ auf die Benutzererfahrung auswirken kann. Beispielsweise kann eine Anwendung eine Ansichtsmatrix aus der neuesten Benutzereingabe berechnen (z. B. von den Sensoren eines Head-Mounted-Displays) und diese Funktion verwenden, um diese Matrix in Befehlslisten zu aktualisieren und zu aktivieren, die bereits an die GPU verteilt wurden, um die wahrgenommene Latenz zwischen Eingabe und Rendering zu reduzieren.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d12.h
Bibliothek D3d12.lib
DLL D3d12.dll

Weitere Informationen

ID3D12GraphicsCommandList1