перечисление 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 В куче запрещено хранить текстуры целевого объекта отрисовки (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 Куча создается в состоянии non-resident и должна быть резидентом с помощью 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 должно быть задано значение 1, а для свойства — значение 0.
- Макет должен быть D3D12_TEXTURE_LAYOUT_UNKNOWN.
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL и D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER являются недопустимыми флагами.
Требования
Требование | Значение |
---|---|
Заголовок | d3d12.h |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по