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


Недоступные шейдеру кучи дескрипторов

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

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

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

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

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

  • Целевые представления отрисовки (RTV)
  • Представления трафарета глубины (DSV)

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

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

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

Сводка

Видимый шейдер, только запись ЦП Видимый не шейдер, чтение и запись ЦП
CBV, SRV, БПЛА да да
СБОРНИКИ да да
Возврат поставщику нет да
DSV нет да

 

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