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


структура D3D11_RESOURCE_FLAGS (d3d11on12.h)

Используется с ID3D11On12Device::CreateWrappedResource для переопределения флагов, которые будут выведены свойствами ресурсов или кучи, включая флаги привязки, флаги misc и флаги доступа к ЦП.

Синтаксис

typedef struct D3D11_RESOURCE_FLAGS {
  UINT BindFlags;
  UINT MiscFlags;
  UINT CPUAccessFlags;
  UINT StructureByteStride;
} D3D11_RESOURCE_FLAGS;

Члены

BindFlags

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

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

Следующие флаги привязки (D3D11_BIND_FLAG константы перечисления) не будут использоваться и должны быть указаны для такого использования ресурса:

  • D3D11_BIND_VERTEX_BUFFER
  • D3D11_BIND_INDEX_BUFFER
  • D3D11_BIND_CONSTANT_BUFFER
  • D3D11_BIND_STREAM_OUTPUT
  • D3D11_BIND_DECODER
  • D3D11_BIND_VIDEO_ENCODER
Следующие флаги привязки будут использоваться на основе наличия соответствующего флага ресурса D3D12. Их можно удалить, указав флаги привязки:
  • D3D11_BIND_SHADER_RESOURCE, если D3D12_RESOURCE_MISC_DENY_SHADER_RESOURCE отсутствует
  • D3D11_BIND_RENDER_TARGET, если присутствует D3D12_RESOURCE_MISC_ALLOW_RENDER_TARGET
  • D3D11_BIND_DEPTH_STENCIL, если присутствует D3D12_RESOURCE_MISC_ALLOW_DEPTH_STENCIL
  • D3D11_BIND_UNORDERED_ACCESS, если присутствует D3D12_RESOURCE_MISC_ALLOW_UNORDERED_ACCESS
Целевой объект отрисовки или буфер UAV можно упаковать без переопределения флагов; но буфер VB,IB/CB/SO должен иметь флаги привязки, указанные вручную, так как они являются взаимоисключающими в Direct3D 11.

MiscFlags

Если флаги misc не являются нулевыми, то все указанные флаги будут иметь значение OR'd в конечном desc ресурса с выведенными флагами. Для добавления функциональных возможностей можно частично указать другие флаги, но неявные флаги, которые подразумеваются, не могут быть замаскированы.

Следующие разностные флаги (D3D11_RESOURCE_MISC_FLAG константы перечисления) не будут использоваться:

  • D3D11_RESOURCE_MISC_GENERATE_MIPS (конфликтует с CLAMP).
  • D3D11_RESOURCE_MISC_TEXTURECUBE (изменяет поведение представления по умолчанию).
  • D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS (эксклюзив с некоторыми флагами привязки).
  • D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS (исключительно с другими типами БПЛА).
  • D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (исключительно с другими типами БПЛА).
  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP (запрещает QIs D3D10, конфликтует с GENERATE_MIPS).
  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX. Можно создать ресурс мьютекса с ключом D3D11, создать для него общий дескриптор и открыть его через 11on12 или D3D11.
Будут использоваться следующие флаги, которые не могут быть удалены из полученного ресурса desc. Если задано одно из этих значений и ресурс D3D12 не поддерживает его, создание завершится ошибкой:
  • D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_NTHANDLE D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE, если имеются соответствующие флаги ошибок кучи.
  • D3D11_RESOURCE_MISC_GDI_COMPATIBLE, если ресурс D3D12 совместим с GDI.
  • D3D11_RESOURCE_MISC_TILED, если ресурс D3D12 был создан с помощью CreateReservedResource.
  • D3D11_RESOURCE_MISC_TILE_POOL, если была передана куча D3D12.
Следующие неправильные флаги недопустимы для этого API:
  • D3D11_RESOURCE_MISC_RESTRICTED_CONTENT, так как D3D12 поддерживает только аппаратную защиту.
  • D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER не существует в версии 12 и не может быть добавлен после создания ресурса.
  • D3D11_RESOURCE_MISC_GUARDED задается только внутренним механизмом создания.

CPUAccessFlags

CpuAccessFlags не выводится из ресурса D3D12. Это связано с тем, что все ресурсы обрабатываются как D3D11_USAGE_DEFAULT, поэтому CPUAccessFlags принудительно проверяет, что предполагает сопоставление буферов или текстур по умолчанию. Упакованные ресурсы не поддерживают Map(DISCARD). Упакованные ресурсы не поддерживают Map(NO_OVERWRITE), но это можно реализовать путем сопоставления базового ресурса D3D12. Вызов map для упаковаемого ресурса будет синхронизирован со всеми трудоемкими работами D3D11, отправленными для этого ресурса, если только не использовался флаг DO_NOT_WAIT.

StructureByteStride

Размер каждого элемента в структуре буфера (в байтах), когда буфер представляет структурированный буфер.

Комментарии

Используйте эту структуру с CreateWrappedResource.

Требования

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

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

Структуры 11on12