Condividi tramite


Metodo ID3D12GraphicsCommandList::CopyTiles (d3d12.h)

Copia i riquadri dal buffer alla risorsa riquadri o viceversa.

Sintassi

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
);

Parametri

[in] pTiledResource

Tipo: ID3D12Resource*

Puntatore a una risorsa riquadri.

[in] pTileRegionStartCoordinate

Tipo: const D3D12_TILED_RESOURCE_COORDINATE*

Puntatore a una struttura D3D12_TILED_RESOURCE_COORDINATE che descrive le coordinate iniziali della risorsa riquadri.

[in] pTileRegionSize

Tipo: const D3D12_TILE_REGION_SIZE*

Puntatore a una struttura D3D12_TILE_REGION_SIZE che descrive le dimensioni dell'area riquadri.

[in] pBuffer

Tipo: ID3D12Resource*

Puntatore a un ID3D12Resource che rappresenta un buffer predefinito, dinamico o di gestione temporanea.

BufferStartOffsetInBytes

Tipo: UINT64

Offset in byte nel buffer in pBuffer per avviare l'operazione.

Flags

Tipo: D3D12_TILE_COPY_FLAGS

Combinazione di valori D3D12_TILE_COPY_FLAGS tipizzati combinati usando un'operazione OR bit per bit e che identifica come copiare i riquadri.

Valore restituito

nessuno

Osservazioni

CopyTiles elimina le operazioni di scrittura in aree non mappate e gestisce le operazioni di lettura da aree non mappate (ad eccezione delle risorse Tier_1 riquadri, dove la lettura e la scrittura di aree non mappate non sono valide- fare riferimento a D3D12_TILED_RESOURCES_TIER).

Se un'operazione di copia comporta la scrittura nella stessa posizione di memoria più volte perché più posizioni nella risorsa di destinazione vengono mappate alla stessa memoria del riquadro, le operazioni di scrittura risultanti nei riquadri a più mappe non sono deterministiche e non ripetibili; ovvero, l'accesso alla memoria del riquadro avviene in qualsiasi ordine che l'hardware si verifichi per eseguire l'operazione di copia.

I riquadri coinvolti nell'operazione di copia non possono includere riquadri contenenti mipmap compressi o risultati dell'operazione di copia non sono definiti. Per trasferire i dati da e verso mipmap che l'hardware contiene nei riquadri uno o più che costituiscono i mips compressi, è necessario usare le API di copia standard (ovvero non specifiche del riquadro) come CopyTextureRegion.

CopyTiles copia i dati in un modello leggermente diverso dai metodi di copia standard.

Il layout di memoria dei riquadri del lato risorsa buffer non riquadri del buffer riquadri è lineare in memoria entro 64 KB, che l'hardware e il driver swizzle e de-swizzle per riquadro in base alle esigenze quando si trasferiscono da e verso una risorsa riquadri. Per le superfici antialiasing multisample (MSAA), l'hardware e il driver attraversano gli esempi di ogni pixel nell'ordine di indice di esempio prima di passare al pixel successivo. Per i riquadri parzialmente riempiti sul lato destro (per una superficie che ha una larghezza non più di larghezza del riquadro in pixel), il passo e lo stride per spostare una riga è la dimensione completa in byte dei pixel di numero che si adattano nel riquadro se il riquadro era pieno. Quindi, può esserci uno spazio tra ogni riga di pixel in memoria. I mipmap che sono più piccoli di un riquadro non vengono compressi nel layout lineare, che potrebbero sembrare uno spreco di spazio di memoria, ma come accennato non è possibile usare CopyTiles per copiare in mipmap che l'hardware contiene insieme. È sufficiente usare API di copia generiche, ad esempio CopyTextureRegion, per copiare singolarmente piccole mipmap.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d12.h
Libreria D3d12.lib
DLL D3d12.dll

Vedi anche

ID3D12GraphicsCommandList

Risorse riquadri