Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Типы кучи дескриптора, которые можно задать в списке команд, — это те, которые содержат дескрипторы, для которых можно использовать таблицы дескриптора (не более одного из них одновременно).
Настройка куч дескрипторов
Типы куч дескрипторов, которые можно установить в списке команд.
D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV
D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER
Кучи, заданные в списке команд, должны быть созданы с видимостью для шейдеров. Существует три типа списка команд: DIRECT, BUNDLE и COMPUTE.
После установки кучи дескриптора в списке команд последующие вызовы, определяющие таблицы дескриптора, ссылаются на текущую кучу дескриптора. Состояние таблицы дескриптора не определено в начале списка команд и после изменения кучи дескриптора в списке команд. Избыточное задание одной и той же кучи дескриптора не приводит к неопределению параметров таблицы дескриптора.
В пакете, напротив, дескриптор кучи можно задать только один раз (избыточные вызовы, устанавливая одну кучу дважды, не создают ошибку); в противном случае поведение не определено. Наборы дескрипторных куч должны совпадать с состоянием в момент, когда любой список команд вызывает связку; в противном случае поведение не определено. Это позволяет пакетам наследовать и изменять параметры таблицы дескриптора списка команд. Пакеты, которые не изменяют таблицы дескрипторов (только наследуют их), не должны задавать кучу дескрипторов вообще, а просто наследуют ее от вызывающего списка команд.
При установке куч дескрипторов (с помощью ID3D12GraphicsCommandList::SetDescriptorHeaps), все используемые кучи устанавливаются в одном вызове (и все ранее установленные кучи сбрасываются этим вызовом). В вызове можно задать не более одной кучи каждого типа, указанного выше.
Заполнение куч дескрипторов
После создания кучи дескриптора приложение может использовать методы на устройстве для создания дескрипторов непосредственно в кучу или копирования дескрипторов из одного места в другое.
Начальное содержимое памяти кучи дескрипторов не определено, поэтому обращение GPU или драйвера к неинициализированной памяти для отрисовки может привести к неопределённым результатам, таким как сброс устройства.
Если приложение настраивает кучу дескрипторов для отображения для ЦП, то процессор может вызывать методы для создания дескрипторов в кучу и копирования из одного места в другое (включая между кучами) в безотлагательном, свободном от потоков режиме. Если куча настроена как SHADER_VISIBLE, чтение для ЦП запрещено.
Связанные разделы