Sintaxe
Constantes
Comentários
Um aplicativo identifica como um recurso deve ser usado (seu uso) em uma descrição de recurso. Há várias estruturas para criar recursos, incluindo XG_TEXTURE1D_DESC, XG_TEXTURE2D_DESC, XG_TEXTURE3D_DESC e XG_BUFFER_DESC. Um aplicativo não especifica o tipo de memória (o pool) no qual um recurso deve ser criado. Em vez disso, você especifica o uso pretendido do recurso e permite que o runtime (em conjunto com o driver e um gerenciador de memória) escolha o tipo de memória que alcançará o melhor desempenho.Restrições de uso de recursos
Cada uso determina uma compensação entre a acessibilidade para a CPU e/ou a GPU. Em geral, um acesso de maior desempenho para um desses dois processadores significa um acesso de menor desempenho para o outro. Nos extremos estão os usos XG_USAGE_DEFAULT e XG_USAGE_STAGING. XG_USAGE_DEFAULT restringe o acesso quase inteiramente à GPU. XG_USAGE_STAGING restringe o acesso quase inteiramente à CPU e permite apenas uma transferência de dados (cópia) de um recurso entre a GPU e a CPU. O uso XG_USAGE_DYNAMIC é um caso especial que otimiza o fluxo de dados da CPU para a GPU quando a CPU gera esses dados dinamicamente e os envia com alta frequência. XG_USAGE_DYNAMIC normalmente é usado em recursos com dados de vértice e em buffers de constantes. O uso XG_USAGE_IMMUTABLE é outro caso especial que faz com que a GPU gere dados apenas uma vez, quando você cria um recurso. XG_USAGE_IMMUTABLE é adequado para dados como texturas, porque esses dados normalmente são lidos na memória a partir de algum formato de arquivo. Portanto, quando você cria uma textura com XG_USAGE_IMMUTABLE, a GPU lê essa textura diretamente na memória. Use a tabela a seguir para escolher o uso que melhor descreve como o recurso deve ser acessado pela CPU e pela GPU. Há compensações de desempenho.
1: As leituras e gravações da GPU de um recurso com o uso XG_USAGE_STAGING são restritas a operações de cópia. Além disso, como os formatos de profundidade e estêncil e os layouts de multiamostragem são detalhes de implementação de um design de GPU específico, em geral, o sistema operacional não pode expor esses formatos e layouts à CPU. Portanto, os recursos de preparo não podem ser buffers de profundidade e estêncil nem destinos de renderização com multiamostragem.
Como os recursos XG_USAGE_DYNAMIC consomem recursos de hardware específicos, use-os com moderação. O driver de vídeo normalmente aloca memória para recursos XG_USAGE_DYNAMIC com um algoritmo de cache que favorece as gravações da CPU e prejudica as leituras da CPU. Portanto, não espere alto desempenho ou mesmo leituras consistentes da CPU a partir de recursos XG_USAGE_DYNAMIC.
Opções de associação de recursos
Para maximizar o desempenho, nem todas as opções de uso de recursos podem ser usadas como recursos de entrada ou saída para o pipeline. Esta tabela identifica essas limitações.- 2: Se associado como entrada e saída usando exibições diferentes, cada exibição deve usar sub-recursos diferentes.
- 3: O recurso só pode ser criado com um único sub-recurso, não pode ser uma matriz de texturas e não pode ser uma cadeia de mipmaps.
