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


Невидимые дескрипторы дескриптора не шейдера

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

Невидимые представления

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

Для шейдер видимых дескрипторных кучи, очевидная причина запретить шейдеру доступ к этим кучам дескрипторов во время их создания. Затем эти кучи становятся видимыми шейдерами и получают доступ через таблицы дескриптора при выполнении списка команд. Однако нет необходимости создавать шейдеры, видимые кучами, они могут быть заполнены напрямую.

Другие дескрипторы привязываются к конвейеру, записав его содержимое непосредственно в список команд. Эти дескрипторы служат только для перевода параметров представления во время записи списка команд. Эти кучи всегда являются видимыми нешейдерами и содержат следующие элементы.

  • Просмотр целевых представлений (RTVs)
  • Представления элементов глубины (DSV)

Представления буферов индексов (IBV), представления буфера вершин (VBVs) и представления выходных данных потока передаются непосредственно в методы API, не имеют конкретных типов кучи.

После записи в список команд (например, с вызовом OMSetRenderTargets, например), память, используемая для хранения дескрипторов для этого вызова, сразу же доступна для повторного использования после вызова.

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

Сводка

Шейдер видимый, только запись ЦП Не-шейдер видимый, ЦП считывает и записывает данные
CBV, SRV, UAV да да
SAMPLER да да
RTV Нет да
DSV Нет да

 

дескриптор кучи