D3D12DDI_VIDEO_DECODE_TIER_0020枚举 (d3d12umddi.h)

指定视频解码层。 解码视频层定义一组硬件功能。 层越高,硬件的功能就越高。

语法

typedef enum D3D12DDI_VIDEO_DECODE_TIER_0020 {
  D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED,
  D3D12DDI_VIDEO_DECODE_TIER_0020_1,
  D3D12DDI_VIDEO_DECODE_TIER_0020_2,
  D3D12DDI_VIDEO_DECODE_TIER_0020_3
} ;

常数

 
D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED
不支持解码配置文件。
D3D12DDI_VIDEO_DECODE_TIER_0020_1
视频解码第 1 层。 在视频解码第 1 层中,硬件要求解码输出纹理和引用纹理,以便在视频作引用流时将流解码为物理连续。

引用资源由应用程序分配为 D3D12 纹理数组。 驱动程序不会收到分配面向视频方案的显式提示,并且最初可能分配非物理连续内存。 驱动程序应使用内存管理器提供的新 更新分配属性 功能,在提交实际要求其物理连续的视频工作时计划转换为物理连续。

将硬件置于第 1 层的硬件特征:

* 解码硬件需要物理上连续的内存来解码输出和引用。 具有压缩位流的输入缓冲区可能还需要物理连续。

* 解码硬件可能具有与其他引擎或视频作不兼容的特殊平铺格式或其他内存布局定义。

压缩的输入缓冲区要求:

* 给定帧的所有切片必须按顺序排列且连续(切片之间没有间隙)。

* 驱动程序不得执行位流数据的其他副本。

* 第一个切片必须在 128 字节边界上开始。

* 硬件必须支持从从D3D12DDI_MEMORY_POOL_L0(始终为系统内存)分配的缓冲区进行解码。

* 硬件必须支持使用 D3D12DDI_CPU_PAGE_PROPERTY_NOT_AVAILABLE 从 D3D12DDI_MEMORY_POOL_L1(默认池)解码。
D3D12DDI_VIDEO_DECODE_TIER_0020_2
视频解码第 2 层。 解码第 2 层允许调用方将引用和输出纹理分配为单独的 2D 纹理资源。 不再需要应用程序来分配纹理数组,但必须支持此功能。

解码第 2 层没有物理上连续的要求。 此层中的硬件可能具有连续的 VA(视频解码加速)要求,并且应用程序需要创建纹理数组来支持此要求。

若要启用第 2 层,必须支持驱动程序支持的引用和输出格式的保留资源(也称为平铺或稀疏资源)。 这可以通过两种方式完成:

* 如果硬件支持每进程 GPU VA,并且具有支持保留资源的磁贴形状要求的磁贴模式,则可以使用预先存在的 D3D12 平铺资源机制。

* 如果硬件支持每进程 GPU VA,但磁贴模式不符合预留资源的磁贴形状要求,并且硬件可以支持映射和取消映射整个子资源的平铺映射,而对于平面资源(D3D12 中独立的子资源)的每个平面,该机制要求可以独立映射图块和平铺图块。 请注意,此机制正在开发中,但在 API 上模糊化磁贴形状。

将硬件置于第 2 层的硬件特征:

* 不需要物理连续内存。

* 硬件具有连续的 VA 要求。

* 解码硬件可能具有与其他引擎或视频作不兼容的特殊平铺格式或其他内存布局定义。

压缩的输入缓冲区要求与第 1 层相同。
D3D12DDI_VIDEO_DECODE_TIER_0020_3
视频解码第 3 层。 WDDM 2.3 中支持此层。

解码第 3 层允许调用方将引用和输出纹理分配为标准 2D 纹理资源。 不再需要应用程序来分配纹理数组,但必须支持此功能。

解码第 3 层不需要物理上连续的分配。 硬件必须不再需要D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY,但仍必须支持它。 查询时,D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020 结构的D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY成员必须设置为 FALSE。

若要启用第 3 层,驱动程序支持的引用和输出格式必须支持保留资源(也称为平铺或稀疏资源)。 这可以通过两种方式发生:

* 如果硬件支持每进程 GPU VA,并且具有支持保留资源的磁贴形状要求的磁贴模式,则可以使用预先存在的 D3D12 平铺资源机制。

* 如果硬件支持每进程 GPU VA,但磁贴模式不符合预留资源的磁贴形状要求,并且硬件可以支持映射和取消映射整个子资源的平铺映射,而对于平面资源(D3D12 中独立的子资源)的每个平面,该机制要求可以独立映射图块和平铺图块。 请注意,此机制正在开发中,但在 API 上模糊化磁贴形状。

压缩的输入缓冲区要求与第 1 层相同。

言论

如果解码硬件需要其他引擎或其他视频作不支持的唯一平铺格式,则查询配置文件支持时,解码器可能会在 D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020 结构中设置D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY。 此标志指示应用程序必须使用D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY标志分配引用。 如果需要输出作为未来的参考帧,传递给PFND3D12DDI_VIDEO_DECODE_FRAME的输出帧是一个 D3D12 资源,该资源可由管道的其他部分使用,并且不得具有D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY标志。

下表显示了每个层的不同功能:

能力 第 1 层 第 2 层 第 3 层
支持单独分配的引用帧和输出。 必填
支持引用并分配为纹理数组。 必填 必填 必填
可以选择性地要求REFERENCE_ONLY资源标志。 请注意,即使不需要标志,也需要所有层才能使用标志。 自选 自选
支持使用 REFERENCE_ONLY 分配的引用,即使上限不需要它。 必填 必填 必填
支持引用、输入和输出的平铺/稀疏资源。 必填 必填
压缩位流输入缓冲区可以分配为 L0(主系统内存)或 L1(对于 dGPU、视频内存)。 必填 必填 必填
需要压缩的位流数据,以便切片位于单个缓冲区分配中,且切片之间没有间隙。 必填 必填 必填
压缩输入缓冲区中第一个切片的偏移量必须对齐 256 字节。 必填 必填 必填
驱动程序不得执行压缩比特流数据的其他副本。 必填 必填 必填

要求

要求 价值
标头 d3d12umddi.h (包括 D3d12umddi.h)