Recursos em blocos de volume
Texturas de volume (3D) podem ser usadas como recursos em bloco, observando que a resolução de blocos é tridimensional.
- Visão geral
- APIs de recurso em bloco D3D11.3
- tópicos relacionados
Visão geral
Os recursos em blocos separam um objeto de recurso D3D de sua memória de backup (os recursos no passado tinham uma relação 1:1 com a memória de backup). Isso permite uma variedade de cenários interessantes, como streaming em dados de textura e reutilização ou redução do uso de memória
Há suporte para recursos em bloco de textura 2D na D3D11.2. D3D12 e D3D11.3 adicionam suporte para texturas em bloco 3D.
As dimensões de recurso típicas usadas no bloco são blocos 4 x 4 para texturas 2D e 4 x 4 x 4 blocos para texturas 3D.
Bits/pixel (1 amostra/pixel) | Dimensões de bloco (pixels, w x h x d) |
---|---|
8 | 64x32x32 |
16 | 32x32x32 |
32 | 32x32x16 |
64 | 32x16x16 |
128 | 16x16x16 |
BC 1,4 | 128x64x16 |
BC 2,3,5,6,7 | 64x64x16 |
Observe que não há suporte para os seguintes formatos com recursos em bloco: formatos de 96bpp, formatos de vídeo, R1_UNORM, R8G8_B8G8_UNORM R8R8_G8B8_UNORM.
Nos diagramas abaixo de cinza escuro representa blocos NULL.
- mapeamento padrão de recurso em bloco de textura 3D (mip mais detalhado)
- mapeamento padrão de recurso em bloco de textura 3D (segundo mip mais detalhado)
- recurso em bloco 3D de textura (mip mais detalhado)
- recurso em bloco 3D de textura (segundo mip mais detalhado)
- recurso de bloco 3D de textura (bloco único)
- recurso em blocos 3D de textura (caixa uniforme)
Mapeamento padrão de recurso em blocos de textura 3D (mip mais detalhado)
mip mais detalhado
Mapeamento padrão de recurso em blocos de textura 3D (segundo mip mais detalhado)
de mip mais detalhada
Recurso em blocos 3D de textura (mip mais detalhado)
O código a seguir configura um recurso em bloco 3D no mip mais detalhado.
D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 0;
D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 63;
Recurso em blocos 3D de textura (segundo mip mais detalhado)
O código a seguir configura um recurso em bloco 3D e o segundo mip mais detalhado:
D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 1;
D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 6;
Recurso em blocos 3D de textura (bloco único)
O código a seguir configura um recurso de bloco único:
D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 1;
trCoord.Z = 1;
trCoord.Subresource = 0;
D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;
Recurso em blocos 3D de textura (caixa uniforme)
O código a seguir configura um recurso em bloco uniform box (observe a instrução trSize.bUseBox = true;) :
D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 0;
trCoord.Y = 1;
trCoord.Z = 0;
trCoord.Subresource = 0;
D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;
APIs de recurso em bloco D3D11.3
As mesmas chamadas de API são usadas para recursos em blocos 2D e 3D:
Enumerações
- D3D11_TILED_RESOURCES_TIER: determina o nível de suporte a recursos em bloco.
- D3D11_FORMAT_SUPPORT2: usado para testar o suporte a recursos em bloco.
- D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG: determina o suporte a recursos em bloco em um recurso de várias amostras.
- D3D11_TILE_COPY_FLAGS: contém sinalizadores para copiar de e para recursos em blocos giratórios e buffers lineares.
Estruturas
- D3D11_TILED_RESOURCE_COORDINATE: contém a coordenada x, y e z e a referência de sub-fonte. Observe que há uma classe auxiliar: CD3D11_TILED_RESOURCE_COORDINATE.
- D3D11_TILE_REGION_SIZE: especifica o tamanho e o número de blocos da região em blocos.
- D3D11_TILE_SHAPE: a forma do bloco como largura, altura e profundidade em texels.
- D3D11_FEATURE_DATA_D3D11_OPTIONS1: mantém o nível de camada de recurso do bloco com suporte.
Métodos
- ID3D11Device::CheckFeatureSupport: usado para determinar quais recursos e em qual camada, são compatíveis com o hardware atual.
- ID3D11DeviceContext2::CopyTiles: copia blocos do buffer para o recurso em bloco ou vice-versa.
- ID3D11DeviceContext2::UpdateTileMappings: atualiza mapeamentos de locais de bloco em recursos em blocos para locais de memória em um pool de blocos.
- ID3D11DeviceContext2::CopyTileMappings: copia mapeamentos de um recurso em bloco de origem para um recurso de bloco de destino.
- ID3D11DeviceContext2::GetResourceTiling: obtém informações sobre como um recurso em blocos é dividido em blocos.
Tópicos relacionados