- Graphics pipeline states установленные через PSO (Pipeline state object) не наследуюся ни Direct Command List-ми, ни Bundle-ми. Начальное состояние для них указывается при создании (ID3D12Device::CreateCommandList( ) ). Если PSO не был указан, то используется default-ный. Текущий PSO можно заменить методом ID3D12GraphicsCommandList::SetPipelineState( )
- Bundle-ы наследуют все состояния (state-ы), которые не устанавливаются PSO (за исключением типа топологии примитивов). Топология примитивов всегда устанавливается в значение D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED в начале выполнения Bundle-а. Все не PSO state-ы устновленные в Bundle влияют на состояние родительского Command List-а. Например, если Bundle меняет вьюпорт (RSSetViewport), то измененный вьюпорт будет использоваться Command List-ом при последующем рендеринге, в том числе и в последующих Bundle-ах.
- Ресурсы, забинденные в Command List-e или в Bundle, так и остаются забинденными после Command List-а. Т.о. ими могут пользоваться последующие Command List-ы и Bundle-ы.
- Bundle-ы наследуют Root Signature от Command List-а. Если Bundle-у нужно поменять биндинги в Root Signature, то он должен снова назначить тот же Root Signature (все биндинги остаются действующими). Если Bundle меняет Root Signature, то биндинги становятся недействительными. Согласно MSDN, если Bundle не меняет биндинги, то и Root Signature может не назначать, но на практике на момент 12.10.2015 XBox One перезагружается или зависает, если Bundle не назначает Root Signature.
Мой личный "технический" блокнот. Точнее та часть, которая не покрывается NDA. Пишу статьи в первую очередь для себя.
понедельник, 12 октября 2015 г.
Про "наследование" состояний в Draw bundles
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий