Поделиться через


Общие сведения о таблицах дескрипторов

В каждой таблице дескрипторов хранятся дескрипторы одного или нескольких типов : SRV, БПЛА, CBV и выборки. Таблица дескрипторов не является выделением памяти; это просто смещение и длина в кучу дескриптора.

Ссылки на таблицы дескрипторов

Графический конвейер с помощью корневой сигнатуры получает доступ к ресурсам, ссылаясь на таблицы дескриптора по индексу.

На самом деле таблица дескрипторов — это просто поддиапазон кучи дескрипторов. Кучи дескрипторов представляют собой выделение основной памяти для коллекции дескрипторов. Так как выделение памяти является свойством создания кучи дескриптора, определение таблицы дескрипторов из нее гарантированно будет таким же дешевым, как определение области в куче для оборудования. Таблицы дескрипторов не нужно создавать или уничтожать на уровне API. Они просто идентифицируются для драйверов как смещение и размер из кучи при каждом указании ссылки.

Конечно, приложение может определять очень большие таблицы дескрипторов, когда его шейдеры хотят свободы выбора из обширного набора доступных дескрипторов (часто ссылающихся на текстуры) на лету (возможно, на основе данных материала).

Корневая сигнатура ссылается на запись таблицы дескриптора со ссылкой на кучу, начальное расположение таблицы (смещение от начала кучи) и длину (в записях) таблицы. На рисунке ниже показаны следующие понятия: указатели на таблицу дескриптора из корневой сигнатуры и дескрипторы в куче дескрипторов, ссылающиеся на полную текстуру или данные буфера в куче (в случае текстуры— куча по умолчанию).

таблицы дескрипторов