D3D11_RESOURCE_FLAGS 结构 (d3d11on12.h)
与 ID3D11On12Device::CreateWrappedResource 一起使用,以替代将由资源属性或堆属性推断的标志,包括绑定标志、杂项标志和 CPU 访问标志。
语法
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 标志为非零,则任何指定的标志都将使用推断的标志进入最终资源 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 (其他类型的 UAV) 中独占。
- D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (其他类型的 UAV) 中独占。
- D3D11_RESOURCE_MISC_RESOURCE_CLAMP (禁止与GENERATE_MIPS) 冲突的 D3D10 QIs。
- D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX。 可以创建 D3D11 键控互斥体资源,为其创建共享句柄,并通过 11on12 或 D3D11 将其打开。
- D3D11_RESOURCE_MISC_SHARED、D3D11_RESOURCE_MISC_SHARED_NTHANDLE、D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE(如果存在适当的堆杂项标志)。
- 如果 D3D12 资源与 GDI 兼容,则D3D11_RESOURCE_MISC_GDI_COMPATIBLE。
- 如果 D3D12 资源是通过 CreateReservedResource 创建的,D3D11_RESOURCE_MISC_TILED。
- 如果传入了 D3D12 堆,D3D11_RESOURCE_MISC_TILE_POOL。
- 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) 。 包装的资源不支持 映射 (NO_OVERWRITE) ,但可以通过映射基础 D3D12 资源来实现。 对包装的资源发出 Map 调用将与针对该资源提交的所有 D3D11 工作同步,除非使用了 DO_NOT_WAIT 标志。
StructureByteStride
缓冲区表示结构化缓冲区时,缓冲区结构中每个元素的大小) (字节数。
注解
将此结构与 CreateWrappedResource 一起使用。
要求
要求 | 值 |
---|---|
Header | d3d11on12.h |