структура 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
- 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
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.
- 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.
- 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 |