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


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

Определяет константы, определяющие параметры для работы с ресурсами.

Синтаксис

typedef enum D3D12_RESOURCE_FLAGS {
  D3D12_RESOURCE_FLAG_NONE = 0,
  D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
  D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
  D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
  D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
  D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
  D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
  D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
  D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
  D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100
} ;

Константы

 
D3D12_RESOURCE_FLAG_NONE
Значение: 0
Параметры не указаны.
D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET
Значение: 0x1
Позволяет создать целевое представление отрисовки для ресурса; а также позволяет ресурсу переходить в состояние D3D12_RESOURCE_STATE_RENDER_TARGET. Некоторые архитектуры адаптеров выделяют дополнительную память для текстур с этим флагом, чтобы уменьшить эффективную пропускную способность во время обычной отрисовки. Эта характеристика может быть не полезной для текстур, в которых никогда не выполняется отрисовка, а также не доступна для текстур, сжатых с помощью форматов BC. Приложение не должно устанавливать этот флаг, если отрисовка никогда не будет выполняться.

Действуют следующие ограничения и взаимодействия.
D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL
Значение: 0x2
Позволяет создать представление трафарета глубины для ресурса, а также позволяет ресурсу переходить в состояние D3D12_RESOURCE_STATE_DEPTH_WRITE и (или) D3D12_RESOURCE_STATE_DEPTH_READ. Большинство архитектур адаптеров выделяют дополнительную память для текстур с этим флагом, чтобы уменьшить эффективную пропускную способность и максимизировать оптимизацию для раннего тестирования глубины. Приложение не должно устанавливать этот флаг, если операции глубины никогда не будут выполняться.

Действуют следующие ограничения и взаимодействия.

  • Формат текстуры должен поддерживать возможности трафарета глубины на текущем уровне компонентов. Или, если формат является нетипизированным, формат в той же бестипной группе должен поддерживать возможности трафарета глубины на текущем уровне компонентов.

  • Не может использоваться с D3D12_RESOURCE_DIMENSION_BUFFER, Выравнивание 4 КБ, D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET, D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS, D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, а также используется с кучами, имеющими D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES или D3D12_HEAP_FLAG_ALLOW_DISPLAY.

  • Исключает использование WriteToSubresource и ReadFromSubresource.

  • Исключает копирование подобласти с помощью GPU. CopyTextureRegion должен копировать весь подресурс в ресурсы с этим флагом или из ресурсов.

D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS
Значение: 0x4
Разрешает создание неупорядоченного представления доступа для ресурса, а также переход ресурса в состояние D3D12_RESOURCE_STATE_UNORDERED_ACCESS. Некоторые архитектуры адаптеров должны использовать менее эффективные макеты текстур, чтобы обеспечить эту функциональность. Если текстура редко используется для неупорядоченного доступа, возможно, стоит создать две текстуры и скопировать между ними. Одна текстура будет иметь этот флаг, а другая — нет. Приложению следует избегать установки этого флага, если неупорядоченные операции доступа никогда не будут выполняться.

Действуют следующие ограничения и взаимодействия.

  • Формат текстуры должен поддерживать возможности неупорядоченного доступа на текущем уровне компонентов. Или, если формат является бестипным, формат в той же группе без ввода должен поддерживать возможности неупорядоченного доступа на текущем уровне компонентов.

  • Нельзя задать в сочетании с текстурами, имеющими D3D12_TEXTURE_LAYOUT_ROW_MAJOR , если D3D12_FEATURE_DATA_D3D12_OPTIONS::CrossAdapterRowMajorTextureSupported имеет значение FALSE, или в сочетании с текстурами, имеющими D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE , если D3D12_FEATURE_DATA_D3D12_OPTIONS::StandardSwizzle64KBSupported равно FALSE, или если уровень компонентов меньше 11.0.

  • Не может использоваться с текстурами MSAA.

D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE
Значение: 0x8
Запрещает создание представления ресурсов шейдера для ресурса, а также отключает переход ресурса в состояние D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE или D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE. Некоторые архитектуры адаптеров получают пропускную способность для текстур трафаретов глубины, если представления ресурсов шейдера исключены. Если текстура редко используется для ресурсов шейдера, возможно, стоит скопировать две текстуры между ними. Одна текстура будет иметь этот флаг, а другая — нет. Приложение должно установить этот флаг, если текстуры трафарета глубины никогда не будут использоваться из представлений ресурсов шейдера.

Действуют следующие ограничения и взаимодействия.

  • Необходимо использовать с D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
Значение: 0x10
Позволяет использовать ресурс для данных между адаптерами, а также функций, включенных D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS. Ресурсы перекрестных адаптеров обычно исключают методы, которые снижают эффективную пропускную способность текстур во время использования, а для некоторых архитектур адаптеров может потребоваться другое поведение кэширования. Приложению следует избегать установки этого флага, если данные ресурса никогда не будут использоваться с другим адаптером.

Действуют следующие ограничения и взаимодействия.
D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS
Значение: 0x20
Позволяет одновременно обращаться к ресурсу несколькими разными очередями, устройствами или процессами (например, позволяет использовать ресурс с переходами ResourceBarrier , выполняемыми в нескольких списках команд, выполняемых одновременно).

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

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

Действуют следующие ограничения и взаимодействия.

  • Нельзя использовать с D3D12_RESOURCE_DIMENSION_BUFFER; но буферы всегда имеют свойства, представленные этим флагом.

  • Не может использоваться с текстурами MSAA.

  • Нельзя использовать с D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY
Значение: 0x40
Предполагается, что этот ресурс может использоваться только в качестве опорной рамки декодирования. Он может быть записан или прочитан только операцией декодирования видео.

D3D12_VIDEO_DECODE_TIER_1 и D3D12_VIDEO_DECODE_TIER_2 могут сообщать о D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED в флаге конфигурации структуры D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT . В этом случае приложение должно выделить опорные кадры с флагом ресурса D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY .

D3D12_VIDEO_DECODE_TIER_3 не должны задавать [D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED]
(.. Флаг конфигурации /d3d12video/ne-d3d12video-d3d12_video_decode_configuration_flags) и не должен требовать использования этого флага ресурса.
D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY
Значение: 0x80
Указывает, что этот ресурс может использоваться только в качестве опорной рамки кодирования. Он может быть записан или прочитан только операцией кодирования видео.
D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE
Значение: 0x100
Зарезервировано для последующего использования. Не используйте.

Требуется пакет SDK для DirectX 12 Agility 1.7 или более поздней версии. Указывает, что буфер должен использоваться в качестве структуры ускорения луча.

Комментарии

Это перечисление используется элементом FlagsD3D12_RESOURCE_DESC.

Требования

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

См. также раздел