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 一起使用, 4KB 对齐方式、 D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGETD3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESSD3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESSD3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLED3D12_TEXTURE_LAYOUT_ROW_MAJOR,也不用于具有 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURESD3D12_HEAP_FLAG_ALLOW_DISPLAY

  • 阻止使用 WriteToSubresourceReadFromSubresource

  • 阻止子区域 GPU 复制。 CopyTextureRegion 必须使用此标志将整个子资源复制到资源或从资源复制。

D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS
值: 0x4
允许为资源创建无序访问视图,并使资源能够转换为 D3D12_RESOURCE_STATE_UNORDERED_ACCESS状态。 某些适配器体系结构必须采用效率较低的纹理布局才能提供此功能。 如果纹理很少用于无序访问,则可能值得在两个纹理周围并复制它们。 一个纹理将具有此标志,而另一个纹理则不具有此标志。 当无序访问操作永远不会发生时,应用程序应避免设置此标志。

以下限制和交互适用:
D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE
值: 0x8
禁止为资源创建着色器资源视图,并禁止资源转换为 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCED3D12_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_1D3D12_VIDEO_DECODE_TIER_2 可能会在 D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT 结构配置标志中报告 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED 。 如果发生这种情况,应用程序必须使用 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
保留供将来使用。 请不要使用。

需要 DirectX 12 Agility SDK 1.7 或更高版本。 指示缓冲区将用作光线跟踪加速结构。

备注

此枚举由D3D12_RESOURCE_DESCFlags 成员使用。

要求

   
标头 d3d12.h

另请参阅