Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Шейдер видимые кучи дескриптора — это кучи дескриптора, на которые можно ссылаться шейдерами с помощью таблиц дескриптора.
- Обзор
- Пример
- связанные разделы
Обзор
Кучи дескриптора, на которые можно ссылаться с помощью шейдеров с помощью таблиц дескриптора, приходят несколько вариантов: один тип кучи, D3D12_SRV_UAV_CBV_DESCRIPTOR_HEAP, может содержать представления ресурсов шейдера, неупорядоченные представления доступа и постоянные буферные представления, все перемешанные. Любое заданное расположение в куче может быть любым из перечисленных типов дескрипторов. Другой тип кучи, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, хранит только образцы, отражая тот факт, что для большинства оборудования образцы управляются отдельно от SRVs, UA, CBVs.
Кучи дескриптора этих типов могут запрашиваться, чтобы шейдер был видимым или не при создании кучи (последний — невидимый шейдер — может быть полезен для промежуточных дескрипторов на ЦП). При запросе быть видимым шейдером каждый из указанных выше типов кучи может иметь ограничение размера оборудования для любого отдельного выделения кучи дескриптора.
Приложения могут создавать любое количество кучи дескриптора, а видимые кучи дескриптора не ограничены. Если шейдер видимый куча дескриптора, созданная приложением, меньше предела размера оборудования, драйвер может выбрать выделение кучи дескриптора из большей базовой кучи дескриптора, чтобы несколько кучи дескрипторов API помещались в одну кучу дескриптора оборудования. Причиной этого может быть то, что для некоторых оборудования переключение между кучи дескриптора оборудования во время выполнения требует ожидания GPU ожидания простоя (чтобы убедиться, что ссылки GPU на ранее дескриптор кучи завершены). Если все кучи дескриптора, создаваемые приложением, помещаются в соответствующие максимальные емкости кучи оборудования, то при переключении кучи дескриптора API во время отрисовки такие ожидания не будут возникать. Однако приложения должны разрешить возможность переключения текущей кучы дескриптора, что может привести к ожиданию простоя.
Чтобы избежать влияния на это возможное ожидание простоя в кучи дескриптора, приложения могут воспользоваться перерывами в отрисовке, что приведет к простою GPU по другим причинам, так как время выполнения переключений кучи дескриптора, так как ожидание простоя происходит в любом случае.
Механизм и семантика для идентификации кучи дескрипторов для шейдеров во время списка команд или записи пакета описаны в справочнике по API.
Пример
На рисунке ниже показаны две кучи дескриптора, ссылающиеся на две отдельные 2D-текстуры, хранящиеся в двух слотах большой кучы по умолчанию. Кучи дескриптора, видимой шейдером, можно получить доступ к графическому конвейеру (включая шейдеры), и поэтому трехмерная текстура доступна конвейеру.
Заметка
Часто существует ограничение на оборудование GPU объема локальной памяти GPU, записываемой ЦП (называемой объединенной памятью записи) для кучи дескриптора. Обычно это ограничение составляет около 96 МБ для всех процессов. Кучи дескриптора одного миллиона элементов с дескрипторами 32byte будут использовать до 32 МБ, например. При необходимости драйвер будет возвращаться к системной памяти, хотя рекомендуется не создавать большое количество больших кучи дескрипторов.
Связанные разделы