ID3D11DeviceContext2::CopyTiles-Methode (d3d11_2.h)

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

Syntax

void CopyTiles(
  [in] ID3D11Resource                        *pTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D11Buffer                          *pBuffer,
  [in] UINT64                                BufferStartOffsetInBytes,
  [in] UINT                                  Flags
);

Parameter

[in] pTiledResource

Typ: ID3D11Resource*

Ein Zeiger auf eine gekachelte Ressource.

[in] pTileRegionStartCoordinate

Typ: const D3D11_TILED_RESOURCE_COORDINATE*

Ein Zeiger auf eine D3D11_TILED_RESOURCE_COORDINATE-Struktur , die die Startkoordinaten der kachelten Ressource beschreibt.

[in] pTileRegionSize

Typ: const D3D11_TILE_REGION_SIZE*

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

[in] pBuffer

Typ: ID3D11Buffer*

Ein Zeiger auf einen ID3D11Buffer , der einen Standard-, dynamischen oder Stagingpuffer darstellt.

[in] BufferStartOffsetInBytes

Typ: UINT64

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

[in] Flags

Typ: UINT

Eine Kombination aus D3D11_TILE_COPY_FLAG 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 zugeordneten Ressourcen, bei denen lese- und schreibvorgänge für nicht zugeordnete Bereiche ungültig sind).

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 eine oder mehrere Kacheln packt, die die gepackten mips bilden, Sie müssen die standardmäßigen (d. h. nicht kachelspezifischen) Kopier- und Update-APIs (wie ID3D11DeviceContext1::CopySubresourceRegion1 und ID3D11DeviceContext1::UpdateSubresource1) oder ID3D11DeviceContext::GenerateMips für die gesamte mipmap-Kette verwenden.

Das Speicherlayout der Kacheln auf der Seite der nicht kachelbasierten 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 je nach Kachel schwenken und deswizzle. 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 oder ID3D11DeviceContext2::UpdateTiles nicht verwenden, um in Mipmaps zu kopieren, die die Hardware zusammen packt. Sie können einfach generische Kopier- und Update-APIs (wie ID3D11DeviceContext1::CopySubresourceRegion1 und ID3D11DeviceContext1::UpdateSubresource1) verwenden, um kleine Mipmaps einzeln zu kopieren. Obwohl im Fall einer generischen Kopier-API (wie ID3D11DeviceContext1::CopySubresourceRegion1) der lineare Arbeitsspeicher dieselbe Dimension wie die kachelte Ressource sein muss; ID3D11DeviceContext1::CopySubresourceRegion1 kann für instance nicht aus einer Pufferressource in eine Textur2D kopieren.

Weitere Informationen zu kachelnden Ressourcen finden Sie unter Gekachelte Ressourcen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8.1 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 R2 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d3d11_2.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11DeviceContext2