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


Перечисление D3D12_STATE_OBJECT_FLAGS (d3d12.h)

Задает ограничения для объектов состояния. Используйте значения из этого перечисления в структуре D3D12_STATE_OBJECT_CONFIG .

Синтаксис

typedef enum D3D12_STATE_OBJECT_FLAGS {
  D3D12_STATE_OBJECT_FLAG_NONE = 0,
  D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;

Константы

 
D3D12_STATE_OBJECT_FLAG_NONE
Значение: 0
Нет ограничений объектов состояния.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Значение: 0x1
Этот флаг применяется только к объектам состояния коллекции типа. В противном случае этот флаг игнорируется.

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

При отсутствии этого флага все экспорты в этой коллекции должны иметь полностью локально разрешенные зависимости, включая все необходимые связи подобъектов, определяемые локально. Расширенные реализации и драйверы будут иметь достаточно сведений для компиляции кода в коллекции и не должны хранить вокруг некомпилированного кода (если не установлен флаг D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS ), чтобы при использовании коллекции в содержащем объекте состояния (например, RTPSO) драйвер должен выполнить минимальную работу. в идеале "дешевое" ссылка не более.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Значение: 0x2
Этот флаг применяется только к объектам состояния коллекции типа. В противном случае этот флаг игнорируется.

Если эта коллекция включена в другой объект состояния (например, RTPSO), шейдеры или функции в остальной части содержащего объекта состояния могут зависеть от экспорта (например, вызова) из этой коллекции.

При отсутствии этого флага (по умолчанию) на экспорты из этой коллекции не могут напрямую ссылаться другие части, содержащие объекты состояния (например, RTPSO). Это может немного сократить объем памяти для коллекции, так как драйверам не нужно хранить некомпиляемый код в коллекции, так как он может быть вызван какой-то внешней функцией, которая затем компилирует весь код вместе. Тем не менее, если не все необходимые связи подобъектов были локально определены для кода в этой коллекции, драйвер, возможно, еще не сможет компилировать код шейдера и может по-прежнему хранить некомпилированные коды.

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

Независимо от наличия или отсутствия этого флага точки входа шейдера (например, группы попаданий или шейдеры промахов) в коллекции отображаются в виде точек входа для содержащего объекта состояния (например, RTPSO), если они экспортируются им. В случае с RTPSO экспортированные точки входа можно использовать в таблицах шейдеров для трассировки лучей.

Требования

Требование Значение
Заголовок d3d12.h