Общие сведения о таблицах дескриптора
Каждая таблица дескрипторов хранит дескрипторы одного или нескольких типов — SRVs, UAVs, CBVs и сэмплеры. Таблица дескрипторов не является выделением памяти; это просто смещение и длина в кучу дескрипторов.
Ссылки на таблицы дескриптора
Графический конвейер с помощью корневой сигнатуры получает доступ к ресурсам, ссылаясь на таблицы дескриптора по индексу.
Таблица дескрипторов на самом деле представляет собой всего лишь поддиапазон дескрипторной кучи. Дескрипторные кучи представляют основное выделение памяти для коллекции дескрипторов. Поскольку выделение памяти является свойством создания кучи дескрипторов, определение таблицы дескрипторов из этой кучи гарантированно так же дешево, как и указание области в куче для аппаратного обеспечения. Таблицы дескрипторов не нужно создавать или уничтожать на уровне API — они просто определяются драйверами как смещение и размер внутри кучи при каждом обращении.
Конечно, приложение может определить очень большие таблицы дескрипторов, когда его шейдеры хотят иметь свободу выбора из огромного набора доступных дескрипторов (часто ссылающихся на текстуры) динамически (возможно, на основе данных о материалах).
Корневая сигнатура ссылается на запись таблицы дескрипторов, включая ссылку на кучу, начальное положение таблицы (смещение от начала кучи) и её длину (в записях). На рисунке ниже показаны следующие понятия: указатели таблицы дескриптора из корневой сигнатуры и дескрипторы в куче дескриптора, ссылающиеся на полные текстуры или буферные данные в куче (в случае текстуры, кучи по умолчанию).