Criando recursos em blocos
Os recursos em bloco são criados especificando o sinalizador D3D11_RESOURCE_MISC_TILED ao criar um recurso.
As restrições sobre quando você pode usar D3D11_RESOURCE_MISC_TILED para criar um recurso são descritas em Parâmetros de criação de recursos em bloco.
O armazenamento de um recurso não em bloco é alocado no sistema gráfico quando o recurso é criado. Por exemplo, quando você chama ID3D11Device::CreateTexture2D para criar uma matriz de texturas 2D, o sistema gráfico aloca armazenamento para essas texturas 2D. Quando um recurso em bloco é criado, o sistema gráfico não aloca o armazenamento para o conteúdo do recurso. Em vez disso, quando um aplicativo cria um recurso em bloco, o sistema gráfico faz uma reserva de espaço de endereço apenas para a área da superfície em bloco e, em seguida, permite que o mapeamento dos blocos seja controlado pelo aplicativo. O "mapeamento" de um bloco é simplesmente a localização física na memória para a qual um bloco lógico em um recurso aponta (ou NULL para um bloco não mapeado). Não confunda esse conceito com a noção de mapeamento de um recurso do Direct3D para acesso de CPU, que apesar de usar o mesmo nome é completamente independente. Você poderá definir e alterar o mapeamento de cada bloco individualmente, conforme necessário, sabendo que todos os blocos para uma superfície não precisam ser mapeadas de uma só vez, fazendo assim o uso eficaz da quantidade de memória disponível.
Esta seção fornece mais informações sobre como criar recursos em bloco.
Nesta seção
Tópico | Descrição |
---|---|
Mapeamentos estão em um pool de blocos |
Quando um recurso é criado com o sinalizador D3D11_RESOURCE_MISC_TILED , os blocos que compõem o recurso vêm de apontar para locais em um pool de blocos. Um pool de blocos é um pool de memória (sustentado por uma ou mais alocações nos bastidores - nunca vistos pelo app). |
Parâmetros de criação de recursos em bloco |
Há algumas restrições no tipo de recursos Direct3D que você pode criar com o sinalizador D3D11_RESOURCE_MISC_TILED . Esta seção fornece os parâmetros válidos para a criação de recursos em bloco. |
Espaço de endereço disponível para recursos em blocos |
Esta seção especifica o espaço de endereço virtual disponível para recursos em bloco. |
Parâmetros de criação de pool de blocos |
Use os parâmetros nesta seção para definir pools de blocos por meio da API ID3D11Device::CreateBuffer . |
Processo cruzado de recursos em bloco e compartilhamento de dispositivo |
Os pools de bloco podem ser compartilhados com outros processos como recursos tradicionais. Os recursos em bloco que referenciam pools de blocos não podem ser compartilhados entre dispositivos e processos. Mas processos separados podem criar seus próprios recursos em bloco que são mapeados para pools de blocos que são compartilhados entre esses recursos em bloco. |
Operações disponíveis em recursos em blocos |
Esta seção lista as operações que você pode executar em recursos em bloco. |
Operações disponíveis em pools de blocos |
Esta seção lista as operações que você pode executar em pools de blocos. |
Como a área de um recurso em bloco é lado a lado |
Quando você cria um recurso em bloco, as dimensões, o tamanho do elemento de formato e o número de mipmaps e/ou fatias de matriz (se aplicável) determinam o número de blocos necessários para apoiar toda a área da superfície. |