D3D12_RESOURCE_FLAGS枚举 (d3d12.h)

定义指定用于处理资源的选项的常量。

Syntax

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
} ;

Constants

 
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_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.608.0 或更高版本。 指示缓冲区将用作光线跟踪加速结构。 使用 D3D12 增强屏障时,此标志用作替代 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE项,因为缓冲区不再具有布局/状态。 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS需要设置。

注解

此枚举由D3D12_RESOURCE_DESCFlags 成员使用。

要求

Requirement 价值
Header d3d12.h

另请参阅