D3D12DDI_BARRIER_LAYOUT 枚举 (d3d12umddi.h)

D3D12DDI_BARRIER_LAYOUT值描述 D3D12 子资源在纹理屏障方面可能使用的布局。 布局仅适用于纹理资源。

语法

typedef enum D3D12DDI_BARRIER_LAYOUT {
  D3D12DDI_BARRIER_LAYOUT_UNDEFINED,
  D3D12DDI_BARRIER_LAYOUT_COMMON,
  D3D12DDI_BARRIER_LAYOUT_PRESENT,
  D3D12DDI_BARRIER_LAYOUT_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_RENDER_TARGET,
  D3D12DDI_BARRIER_LAYOUT_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE,
  D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_READ,
  D3D12DDI_BARRIER_LAYOUT_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_RESOLVE_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_RESOLVE_DEST,
  D3D12DDI_BARRIER_LAYOUT_SHADING_RATE_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_WRITE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_PIXEL_SHADER_RESOURCE
} ;

常量

 
D3D12DDI_BARRIER_LAYOUT_UNDEFINED
在以前的布局不相关或未定义的情况下,提供对子资源布局更改的支持。 通常,这用于完整子资源或完整资源清除、放弃和复制命令。

LayoutBeforeLayoutAfter 设置为 D3D12_BARRIER_LAYOUT_UNDEFINED 的布局转换指示仅限内存访问的屏障。 许多读/写操作支持 D3D12_BARRIER_LAYOUT_COMMON。 具体而言,复制命令可以使用 D3D12_BARRIER_LAYOUT_COMMOND3D12_BARRIER_LAYOUT_COPY写入纹理。 仅内存访问屏障可用于刷新对纹理的复制写入,而无需更改纹理布局。
D3D12DDI_BARRIER_LAYOUT_COMMON
这是 D3D12_RESOURCE_STATE_COMMON使用的布局。 具有此布局的子资源可以在任何队列类型中读取,而无需更改布局。 它们还可以作为任何队列类型的复制目标进行写入。

交换链表示要求后台缓冲区使用 D3D12_BARRIER_LAYOUT_COMMON
D3D12DDI_BARRIER_LAYOUT_PRESENT
D3D12_BARRIER_LAYOUT_COMMON的别名。
D3D12DDI_BARRIER_LAYOUT_GENERIC_READ
支持任何只读访问 (,例如:SHADER_RESOURCE、COPY_SOURCE) 。 此值只应用于需要多个并发读取访问权限的纹理,因为这可能不如更具体的读取布局最佳。
D3D12DDI_BARRIER_LAYOUT_RENDER_TARGET
匹配 D3D12_RESOURCE_STATE_RENDER_TARGET 使用的布局。
D3D12DDI_BARRIER_LAYOUT_UNORDERED_ACCESS
匹配 D3D12_RESOURCE_STATE_UNORDERED_ACCESS 使用的布局。
D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE
匹配 D3D12_RESOURCE_STATE_DEPTH_WRITE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_READ
匹配 D3D12_RESOURCE_STATE_DEPTH_READ 使用的布局。
D3D12DDI_BARRIER_LAYOUT_SHADER_RESOURCE
匹配 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCED3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_COPY_SOURCE
匹配 D3D12_RESOURCE_STATE_COPY_SOURCE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_COPY_DEST
匹配 D3D12_RESOURCE_STATE_COPY_DEST 使用的布局。
D3D12DDI_BARRIER_LAYOUT_RESOLVE_SOURCE
匹配 D3D12DDI_RESOURCE_STATE_RESOLVE_SOURCE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_RESOLVE_DEST
匹配 D3D12DDI_RESOURCE_STATE_RESOLVE_DEST 使用的布局。
D3D12DDI_BARRIER_LAYOUT_SHADING_RATE_SOURCE
匹配 D3D12DDI_RESOURCE_STATE_0062_SHADING_RATE_SOURCE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_READ
匹配 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ 使用的布局。
D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_WRITE
匹配 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_READ
匹配 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ 使用的布局。
D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE
匹配 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_READ
匹配 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ 使用的布局。
D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE
匹配 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE 使用的布局。
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON
仅支持在直接队列上使用常见 (无障碍) 。 此值比更常规 的D3D12DDI_BARRIER_LAYOUT_COMMON更理想。 只能在直接队列的屏障中使用。

请注意,这不能用于 Present。 D3D12_BARRIER_LAYOUT_COMMON (也称为 D3D12_BARRIER_LAYOUT_PRESENT) 仍然是演示文稿所需的布局。
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ
D3D12_BARRIER_LAYOUT_GENERIC_READ 相同,但特定于直接队列的优化除外。 只能在直接队列的屏障中使用。

此外, D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ 包括对只读深度、着色速率源和解析直接队列的源访问的支持。
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS
D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS 相同,但特定于直接队列的优化除外。 只能在直接队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE
D3D12_BARRIER_LAYOUT_SHADER_RESOURCE 相同,但特定于直接队列的优化除外。 只能在直接队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE
D3D12_BARRIER_LAYOUT_COPY_SOURCE 相同,但特定于直接队列的优化除外。 只能在直接队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST
D3D12_BARRIER_LAYOUT_COPY_DEST 相同,但特定于直接队列的优化除外。 只能在直接队列的屏障中使用。 可以在直接队列中具有下一个访问权限的资源上防止某些布局转换出现成本高昂和不必要的解压缩。
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON
仅支持在计算队列上使用常见 (无障碍) 。 可能比更一般 D3D12_BARRIER_LAYOUT_COMMON更理想。 只能在计算队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ
D3D12_BARRIER_LAYOUT_GENERIC_READ 相同,但特定于计算队列的优化除外。 只能在计算队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS
D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS 相同,但特定于计算队列的优化除外。 只能在计算队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE
D3D12_BARRIER_LAYOUT_SHADER_RESOURCE 相同,但特定于计算队列的优化除外。 只能在计算队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE
D3D12_BARRIER_LAYOUT_COPY_SOURCE 相同,但特定于计算队列的优化除外。 只能在计算队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST
D3D12_BARRIER_LAYOUT_COPY_DEST 相同,但特定于计算队列的优化除外。 只能在计算队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON
仅支持在视频队列上使用常见 (无障碍) 。 可能比更一般 D3D12_BARRIER_LAYOUT_COMMON更理想。 只能在视频队列的屏障中使用。
D3D12DDI_BARRIER_LAYOUT_LEGACY_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE
支持内部转换的旧资源状态。 没有增强的屏障 API 映射到此值。
D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_SOURCE
支持内部转换的旧资源状态。 没有增强的屏障 API 映射到此值。
D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_DEST
支持内部转换的旧资源状态。 没有增强的屏障 API 映射到此值。
D3D12DDI_BARRIER_LAYOUT_LEGACY_SHADER_RESOURCE
支持内部转换的旧资源状态。 没有增强的屏障 API 映射到此值。
D3D12DDI_BARRIER_LAYOUT_LEGACY_PIXEL_SHADER_RESOURCE
支持内部转换的旧资源状态。 没有增强的屏障 API 映射到此值。

注解

无论访问类型如何,缓冲区资源都只有线性布局。

资源布局必须与执行布局转换的队列类型兼容。

要求

要求
最低受支持的客户端 Windows 11 (WDDM 3.0)
标头 d3d12umddi.h

另请参阅

D3D12DDI_TEXTURE_BARRIER_0088