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
以下绑定标志将基于相应的 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 标志为非零,则任何指定的标志都将使用推断的标志进入最终资源 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 将其打开。
将假定以下杂项标志,并且不能从生成的资源 desc 中删除。 如果设置了其中一项,并且 D3D12 资源不支持它,则创建将失败:
  • 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。
以下杂项标志对于为此 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) 。 包装的资源不支持 映射 (NO_OVERWRITE) ,但可以通过映射基础 D3D12 资源来实现。 对包装的资源发出 Map 调用将与针对该资源提交的所有 D3D11 工作同步,除非使用了 DO_NOT_WAIT 标志。

StructureByteStride

缓冲区表示结构化缓冲区时,缓冲区结构中每个元素的大小) (字节数。

注解

将此结构与 CreateWrappedResource 一起使用。

要求

要求
Header d3d11on12.h

另请参阅

11on12 结构