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


перечисление 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_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.

  • Исключает копирование ГРАФИЧЕСКИХ процессоров из запугания. CopyTextureRegion должны скопировать весь подресурс в ресурсы или из него с этим флагом.

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

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

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

  • Невозможно задать в сочетании с текстурами, которые имеют D3D12_TEXTURE_LAYOUT_ROW_MAJOR, если D3D12_FEATURE_DATA_D3D12_OPTIONS::CrossAdapterRowMajorTextureSupportedFALSE, а также не в сочетании с текстурами, имеющими D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE, если D3D12_FEATURE_DATA_D3D12_OPTIONS::StandardSwizzle64KBSupportedFALSE, а также если уровень компонентов меньше 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.608.0 или более поздней версии. Указывает, что буфер должен использоваться в качестве структуры ускорения луча. При использовании расширенных барьеров D3D12 этот флаг служит заменой для D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE, так как буферы больше не имеют макетов и состояний.

Замечания

Эта перечисление используется элементом флагов D3D12_RESOURCE_DESC.

Требования

Требование Ценность
заголовка d3d12.h

См. также

  • перечисления Core