ID3D11DeviceContext2::UpdateTiles-Methode (d3d11_2.h)
Updates Kacheln durch Kopieren aus dem App-Speicher in die kachelte Ressource.
Syntax
void UpdateTiles(
[in] ID3D11Resource *pDestTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate,
[in] const D3D11_TILE_REGION_SIZE *pDestTileRegionSize,
[in] const void *pSourceTileData,
[in] UINT Flags
);
Parameter
[in] pDestTiledResource
Typ: ID3D11Resource*
Ein Zeiger auf eine gekachelte Ressource, die aktualisiert werden soll.
[in] pDestTileRegionStartCoordinate
Typ: const D3D11_TILED_RESOURCE_COORDINATE*
Ein Zeiger auf eine D3D11_TILED_RESOURCE_COORDINATE-Struktur , die die Startkoordinaten der kachelten Ressource beschreibt.
[in] pDestTileRegionSize
Typ: const D3D11_TILE_REGION_SIZE*
Ein Zeiger auf eine D3D11_TILE_REGION_SIZE Struktur, die die Größe des kachelten Bereichs beschreibt.
[in] pSourceTileData
Typ: const void*
Ein Zeiger auf den Arbeitsspeicher, der die Quellkacheldaten enthält, die UpdateTiles zum Aktualisieren der kachelten Ressource verwendet.
[in] Flags
Typ: UINT
Eine Kombination aus D3D11_TILE_COPY_FLAG typisierten Werten, die mithilfe einer bitweisen OR-Operation kombiniert werden. Der einzige gültige Wert ist D3D11_TILE_COPY_NO_OVERWRITE. Die anderen Werte sind hier nicht aussagekräftig, obwohl der D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE Wert im Grunde das ist, was UpdateTiles tut, aber Quellen aus dem App-Speicher.
Rückgabewert
Keine
Bemerkungen
UpdateTiles löscht Schreibvorgänge in nicht zugeordnete Bereiche (außer bei Tier_1 gruppierten Ressourcen, bei denen das Schreiben in nicht zugeordnete Bereiche ungültig ist).
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. Zum Übertragen von Daten zu und von Mipmaps, die die Hardware in eine Kachel packt, müssen Sie die standardmäßigen (d. h. nicht kachelspezifischen) Kopier- und Update-APIs (z. B. ID3D11DeviceContext1::CopySubresourceRegion1 und ID3D11DeviceContext1::UpdateSubresource1) oder ID3D11DeviceContext::GenerateMips für die gesamte mipmap-Kette verwenden.
Das Speicherlayout der Daten auf der Quellseite 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 koppeln 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 in das lineare Layout gepackt, was möglicherweise eine Verschwendung von Speicherplatz zu sein scheint, aber wie erwähnt, können Sie ID3D11DeviceContext2::CopyTiles oder UpdateTiles nicht verwenden, um in Mipmaps zu kopieren, die die Hardware zusammenpackt. 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
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 |