Mapeamento em contextos adiados
Esta seção se aplica somente ao Windows 7 e posterior e ao Windows Server 2008 R2 e versões posteriores do sistema operacional Windows.
O runtime pode mapear um recurso dinâmico (por meio de uma chamada para a função ResourceMap do driver) em um contexto adiado, pois a API do Direct3D versão 11 garante que o primeiro uso do recurso dinâmico mapeado seja descartar o conteúdo anterior. A melhor opção é criar um novo recurso dinâmico em cada descarte continuamente usando o recurso dinâmico original. A criação desse recurso de alias é necessária para permitir que as operações feitas no recurso dinâmico virtual no linha do tempo do contexto adiado não afetem as operações feitas ao recurso dinâmico virtual no linha do tempo do contexto imediato. Lembre-se de que os contextos adiados são meramente operações de gravação que eventualmente são realizadas durante uma chamada para a função CommandListExecute do driver. Quando um recurso dinâmico é usado, as intenções originais do aplicativo são preservadas e a memória acessível por GPU combinada por gravação é fornecida ao aplicativo (ou seja, a memória é otimizada para upload de CPU de uso único).
Cada mapa de recursos pode fornecer os ponteiros diretamente para o recurso de alias. Há uma carga adicional na gravação de contexto adiada para implementar esse tipo de aliasing. Por exemplo, a gravação de contexto adiada pode exigir que novas exibições sejam criadas para texturas com alias. As integrações com o alias de driver são necessárias e parecem plausíveis de se fazer. Quando uma lista de comandos é executada, o último recurso criado no contexto local (para atender às chamadas map-discard) deve ser substituído como o recurso "atual" que apoia o recurso dinâmico para o contexto imediato e assim por diante.
Uma chamada para a função ResourceCopy do driver para copiar um recurso para um recurso dinâmico ainda deve ter suporte no contexto adiado, após chamadas de descarte de mapa e no contexto imediato após uma chamada para a função CommandListExecute do driver, em que o recurso de contexto adiado local é idealmente trocado para a versão de contexto imediata do recurso "atual". Uma chamada para a função ResourceCopy do driver com destinos de recursos dinâmicos não é usada com frequência, portanto, você deve usar um mecanismo de cópia na gravação. Se ResourceCopy for chamado, isso afetará o recurso dinâmico no contexto adiado após uma chamada map-discard ou no contexto imediato que contém um recurso local de lista de comandos como atual, um novo recurso deverá ser alocado conceitualmente para fornecer o novo destino da cópia e o recurso antigo deverá ser copiado para o novo recurso (se a operação for um ResourceCopyRegion).