Сопоставление в отложенных контекстах
Этот раздел относится только к Windows 7 и более поздним версиям, а также Windows Server 2008 R2 и более поздним версиям операционной системы Windows.
Среда выполнения может сопоставить динамический ресурс (с помощью вызова функции ResourceMap драйвера) в отложенном контексте, так как API Direct3D версии 11 гарантирует, что первое использование сопоставленного динамического ресурса заключается в удалении предыдущего содержимого. Лучший вариант — создать новый динамический ресурс при каждом отклонении при постоянном использовании исходного динамического ресурса. Создание этого псевдонима ресурса необходимо, чтобы операции, выполняемые с виртуальным динамическим ресурсом в временная шкала отложенного контекста, не влияли на операции, выполняемые с виртуальным динамическим ресурсом в временная шкала непосредственного контекста. Помните, что отложенные контексты — это просто операции записи, которые в конечном итоге выполняются во время вызова функции CommandListExecute драйвера. При использовании динамического ресурса сохраняются исходные намерения приложения, а для приложения предоставляется доступная для записи объединенная память GPU (то есть память оптимизирована для одноразовой загрузки ЦП).
Каждая карта ресурсов может предоставлять указатели непосредственно на псевдоним ресурса. Реализация этого типа псевдонима связана с отложенной записью контекста. Например, для отложенной записи контекста может потребоваться создание новых представлений для текстур с псевдонимами. Интеграция с псевдонимами драйверов необходима и кажется правдоподобной. При выполнении списка команд последний локальный созданный ресурс контекста (для удовлетворения вызовов map-discard) должен быть заменен как "текущий" ресурс, который поддерживает динамический ресурс для непосредственного контекста, и т. д.
Вызов функции ResourceCopy драйвера для копирования ресурса в динамический ресурс по-прежнему должен поддерживаться как в отложенном контексте, после вызовов map-discard, так и в непосредственном контексте после вызова функции CommandListExecute драйвера, где локальный отложенный ресурс контекста в идеале переключается на немедленную версию контекста текущего ресурса. Вызов функции ResourceCopy драйвера с динамическими назначениями ресурсов используется редко, поэтому следует использовать механизм копирования при записи. Если вызывается ResourceCopy , который влияет либо на динамический ресурс в отложенном контексте после вызова map-discard, либо на непосредственный контекст, содержащий локальный ресурс списка команд как текущий, новый ресурс должен быть концептуально выделен для предоставления нового назначения копии, а старый ресурс должен быть скопирован в новый ресурс (если операция является ResourceCopyRegion).