Share via


ID3D12GraphicsCommandList::CopyTiles-Methode (d3d12.h)

Kopiert Kacheln aus dem Puffer in eine gekachelte Ressource oder umgekehrt.

Syntax

void CopyTiles(
  [in] ID3D12Resource                        *pTiledResource,
  [in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D12_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D12Resource                        *pBuffer,
       UINT64                                BufferStartOffsetInBytes,
       D3D12_TILE_COPY_FLAGS                 Flags
);

Parameter

[in] pTiledResource

Typ: ID3D12Resource*

Ein Zeiger auf eine gekachelte Ressource.

[in] pTileRegionStartCoordinate

Typ: const D3D12_TILED_RESOURCE_COORDINATE*

Ein Zeiger auf eine D3D12_TILED_RESOURCE_COORDINATE-Struktur , die die Startkoordinaten der gekachelten Ressource beschreibt.

[in] pTileRegionSize

Typ: const D3D12_TILE_REGION_SIZE*

Ein Zeiger auf eine D3D12_TILE_REGION_SIZE Struktur, die die Größe des kachelten Bereichs beschreibt.

[in] pBuffer

Typ: ID3D12Resource*

Ein Zeiger auf eine ID3D12Resource , die einen Standard-, dynamischen oder Stagingpuffer darstellt.

BufferStartOffsetInBytes

Typ: UINT64

Der Offset in Bytes in den Puffer bei pBuffer , um den Vorgang zu starten.

Flags

Typ: D3D12_TILE_COPY_FLAGS

Eine Kombination aus D3D12_TILE_COPY_FLAGS typisierten Werten, die mithilfe eines bitweisen OR-Vorgangs kombiniert werden und das Kopieren von Kacheln identifiziert.

Rückgabewert

Keine

Bemerkungen

CopyTiles löscht Schreibvorgänge in nicht zugeordnete Bereiche und verarbeitet Lesevorgänge aus nicht zugeordneten Bereichen (außer bei Tier_1 gruppierten Ressourcen, bei denen das Lesen und Schreiben nicht zugeordneter Bereiche ungültig ist ( siehe D3D12_TILED_RESOURCES_TIER).

Wenn bei einem Kopiervorgang mehrmals in denselben Speicherort geschrieben wird, da mehrere Speicherorte in der Zielressource demselben Kachelspeicher zugeordnet sind, sind die resultierenden Schreibvorgänge auf mehrfach zugeordnete Kacheln nicht deterministisch und nicht wiederholbar. Das heißt, der Zugriff auf den Kachelspeicher erfolgt in jeder Reihenfolge, in der die Hardware zum Ausführen des Kopiervorgangs erfolgt.

Die am Kopiervorgang beteiligten Kacheln dürfen keine Kacheln enthalten, die gepackte Mipmaps enthalten, oder die Ergebnisse des Kopiervorgangs sind nicht definiert. Um Daten zu und von Mipmaps zu übertragen, die die Hardware in die eine oder mehrere Kacheln packt, die die gepackten mips bilden, müssen Sie die Standardmäßigen (d. h. nicht kachelspezifischen) Kopier-APIs wie CopyTextureRegion verwenden.

CopyTiles kopiert Daten in einem etwas anderen Muster als die Standardkopiermethoden.

Das Speicherlayout der Kacheln auf der Seite der nicht kachelnden Pufferressource des Kopiervorgangs ist im Arbeitsspeicher innerhalb von 64 KB-Kacheln linear, die die Hardware und der Treiber bei der Übertragung zu und von einer gekachelten Ressource nach Bedarf pro Kachel auf- und aufheben. Bei MSAA-Oberflächen (Multisample Antialiasing) durchlaufen die Hardware und der Treiber die Stichproben jedes Pixels in der Stichprobenindexreihenfolge, bevor sie zum nächsten Pixel wechseln. Bei Kacheln, die teilweise auf der rechten Seite gefüllt sind (für eine Fläche, die nicht ein Vielfaches der Kachelbreite in Pixeln hat), entspricht die Tonhöhe und der Schritt, um eine Zeile nach unten zu bewegen, die volle Größe in Byte der Anzahl der Pixel, die auf die Kachel passen würden, wenn die Kachel voll wäre. Es kann also eine Lücke zwischen jeder Zeile von Pixeln im Arbeitsspeicher geben. Mipmaps, die kleiner als eine Kachel sind, werden nicht im linearen Layout gepackt, was möglicherweise eine Verschwendung von Speicherplatz zu sein scheint, aber wie bereits erwähnt können Sie CopyTiles nicht verwenden, um in Mipmaps zu kopieren, die die Hardware zusammenpackt. Sie können einfach generische Kopier-APIs wie CopyTextureRegion verwenden, um kleine Mipmaps einzeln zu kopieren.

Anforderungen

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

Weitere Informationen

ID3D12GraphicsCommandList

Kacheln von Ressourcen