перечисление D3D12_HEAP_FLAGS (d3d12.h)
Указывает параметры кучи, например, может ли куча содержать текстуры, а также указывает, являются ли ресурсы общими для адаптеров.
Синтаксис
typedef enum D3D12_HEAP_FLAGS {
D3D12_HEAP_FLAG_NONE = 0,
D3D12_HEAP_FLAG_SHARED = 0x1,
D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING,
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
} ;
Константы
D3D12_HEAP_FLAG_NONE Значение: 0 Параметры не указаны. |
D3D12_HEAP_FLAG_SHARED Значение: 0x1 Кучи общий доступ. Ознакомьтесь с общими кучами. |
D3D12_HEAP_FLAG_DENY_BUFFERS Значение: 0x4 Куча не может содержать буферы. |
D3D12_HEAP_FLAG_ALLOW_DISPLAY Значение: 0x8 Куча может содержать поверхности цепочки буферов. |
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER Значение: 0x20 Куча может совместно использовать ресурсы между адаптерами. Ознакомьтесь с общими кучами. Защищенный сеанс нельзя смешать с ресурсами, общими для всех адаптеров. |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES Значение: 0x40 Куча не может хранить текстуры target (RT) и (или) Depth-Stencil (DS). |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES Значение: 0x80 Кучи не могут содержать ресурсы с D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D или D3D12_RESOURCE_DIMENSION_TEXTURE3D, если D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET или D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL нет. См. D3D12_RESOURCE_DIMENSION и D3D12_RESOURCE_FLAGS. |
D3D12_HEAP_FLAG_HARDWARE_PROTECTED Значение: 0x100 Неподдерживаемые. Не используйте. |
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH Значение: 0x200 Куча поддерживает MEM_WRITE_WATCH функциональные возможности, что приводит к тому, что система отслеживает страницы, записанные в зафиксированную область памяти. Этот флаг нельзя объединить с флагами D3D12_HEAP_TYPE_DEFAULT или D3D12_CPU_PAGE_PROPERTY_UNKNOWN. Приложения не рекомендуется использовать этот флаг, так как он запрещает использование этих функций средствами. |
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS Значение: 0x400 Гарантирует, что атомарные операции будут атомарными в памяти этой кучи, в соответствии с компонентами, способными видеть память. Создание кучи с этим флагом завершится ошибкой в любом из этих условий. — Тип кучи D3D12_HEAP_TYPE_DEFAULT, а куча может быть видна на нескольких узлах, но устройство не поддерживает D3D12_CROSS_NODE_SHARING_TIER_3. — Куча видна для ЦП, но тип кучи неD3D12_HEAP_TYPE_CUSTOM. Обратите внимание, что кучи с этим флагом могут быть ограниченным ресурсом в некоторых системах. |
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT Значение: 0x800 Куча создается в неживом состоянии и должна быть создана резидентом с помощью ID3D12Device::MakeResident или ID3D12Device3::EnqueueMakeResident. По умолчанию последним шагом создания кучи является создание кучи, поэтому этот флаг пропускает этот шаг и позволяет приложению решить, когда это сделать. |
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED Значение: 0x1000 Позволяет ОС не нулю созданной куче. По умолчанию выделенные ресурсы и кучи почти всегда ноль при создании. Этот флаг позволяет вычислиться в некоторых сценариях. Однако это не гарантирует. Например, память, полученная из других процессов, по-прежнему должна быть ноль для защиты данных и изоляции процессов. Это может снизить затраты на создание кучи. |
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES Значение: 0 Куча может хранить все типы буферов и (или) текстур. Это псевдоним; Дополнительные сведения см. в разделе "Псевдонимы" в разделе "Примечания". |
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS Значение: 0xc0 Куча разрешена только для хранения буферов. Это псевдоним; Дополнительные сведения см. в разделе "Псевдонимы" в разделе "Примечания". |
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES Значение: 0x44 Кучи разрешено хранить только текстуры, отличные от RT, не ds. Это псевдоним; Дополнительные сведения см. в разделе "Псевдонимы" в разделе "Примечания". |
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES Значение: 0x84 Куча разрешена только для хранения текстур RT и (или) DS. Это псевдоним; Дополнительные сведения см. в разделе "Псевдонимы" в разделе "Примечания". |
Замечания
Эта перечисление используется следующими элементами API:
Следующие флаги кучи должны использоваться с ID3D12Device::CreateHeap, но будут автоматически заданы для неявных куч, созданных ID3D12Device::CreateCommittedResource. Адаптеры, поддерживающие только кучу уровня 1, должны задать два из трех следующих флагов.Ценность | Описание |
---|---|
D3D12_HEAP_FLAG_DENY_BUFFERS | Куча не может содержать ресурсы с D3D12_RESOURCE_DIMENSION_BUFFER (которая является константой перечисления D3D12_RESOURCE_DIMENSION). |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | Куча не может содержать ресурсы с D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D или D3D12_RESOURCE_DIMENSION_TEXTURE3D вместе с D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET или D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. (Последние два элемента являются константами перечисления D3D12_RESOURCE_FLAGS.) |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES | Кучи не могут содержать ресурсы с D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D или D3D12_RESOURCE_DIMENSION_TEXTURE3D, если D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET и D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL отсутствуют. |
псевдонимы
Адаптеры, поддерживающие кучу уровня 2 или больше, также могут устанавливать ни один из указанных выше флагов. Псевдонимы для этих флагов доступны для приложений, которые предпочитают думать только о том, какие ресурсы поддерживаются.Существуют следующие псевдонимы, поэтому будьте осторожны при выполнении битовых манипуляций:
- D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 и поддерживается только на куче 2 и больше.
- D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
- D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
- D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
отображаемых куч
Отображаемые кучи чаще всего создаются цепочкой буферов для презентации, чтобы включить сканирование на монитор.Отображаемые кучы указываются с элементом D3D12_HEAP_FLAG_ALLOW_DISPLAY перечисления D3D12_HEAP_FLAGS.
Приложения могут создавать отображаемые кучи за пределами цепочки буферов; но на самом деле не может представить с ними. Этот флаг не поддерживается CreateHeap и может использоваться только с CreateCommittedResource с D3D12_HEAP_TYPE_DEFAULT.
Дополнительные ограничения для D3D12_RESOURCE_DESC применяются к ресурсу, созданному с отображаемыми кучами.
- Формат должен поддерживаться не только устройством, но и поддерживаться для сканирования. См. сведения об использовании D3D12_FORMAT_SUPPORT1_DISPLAY члена D3D12_FORMAT_SUPPORT1.
- измерение должно быть D3D12_RESOURCE_DIMENSION_TEXTURE2D.
- выравнивания должно быть 0.
- ArraySize может иметь значение 1 или 2.
- MipLevels должно быть 1.
- SampleDesc должен иметь значение Count равным 1 и Quality задано значение 0.
- макет должен быть D3D12_TEXTURE_LAYOUT_UNKNOWN.
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL и D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER являются недопустимыми флагами.
Требования
Требование | Ценность |
---|---|
заголовка | d3d12.h |