Подраспределение в буферах

Буферы имеют все функции, необходимые в D3D12 для передачи приложений большого диапазона временных данных из ЦП в GPU. В этом разделе рассматриваются четыре распространенных сценария использования ресурсов и буферов и управления ими.

Как и в D3D11, приложения в D3D12 по-прежнему должны объявлять использование памяти при выделении буферов в D3D12 по сравнению с динамическими или промежуточными ресурсами в D3D11, но в D3D12 разработчики имеют большую гибкость и более строгий контроль над использованием памяти. Буферы через подрасположение обладают всеми функциями, необходимыми для низкоуровневого управления памятью.

В этом разделе

Раздел Описание
Отправка различных типов ресурсов
Показано, как использовать один буфер для передачи данных буфера констант и данных буфера вершин в GPU, а также как правильно выделять и размещать данные в буферах. Использование одного буфера повышает гибкость использования памяти и обеспечивает более строгий контроль использования памяти приложениями. Также показаны различия между моделями D3D11 и D3D12 для отправки различных типов ресурсов.
Отправка данных текстуры через буферы
Передача данных двух- или трехмерной текстуры аналогична отправке 1D-данных, за исключением того, что приложения должны уделять больше внимания выравниванию данных, связанным с шагом строки. Буферы можно использовать ортогонально и одновременно из нескольких частей графического конвейера и являются очень гибкими.
Считывание данных обратно через буфер
Чтение данных из GPU, например запись снимка экрана, включает использование кучи обратного чтения.
Управление ресурсами на основе границ
Показывает, как управлять жизненным циклом данных ресурсов путем отслеживания хода выполнения GPU с помощью ограждений. Память можно эффективно использовать повторно с ограждениями, которые тщательно управляют доступностью свободного места в памяти, например в реализации кольцевого буфера для кучи отправки.

Управление памятью