D3D12DDI_BARRIER_ACCESS 枚举 (d3d12umddi.h)
D3D12DDI_BARRIER_ACCESS值是以下字段的按位 OR,用于指定与屏障相关的资源访问。
语法
typedef enum D3D12DDI_BARRIER_ACCESS {
D3D12DDI_BARRIER_ACCESS_COMMON = 0x0,
D3D12DDI_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
D3D12DDI_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
D3D12DDI_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
D3D12DDI_BARRIER_ACCESS_RENDER_TARGET = 0x8,
D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
D3D12DDI_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
D3D12DDI_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
D3D12DDI_BARRIER_ACCESS_PREDICATION = 0x200,
D3D12DDI_BARRIER_ACCESS_COPY_DEST = 0x400,
D3D12DDI_BARRIER_ACCESS_COPY_SOURCE = 0x800,
D3D12DDI_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
D3D12DDI_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
D3D12DDI_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
D3D12DDI_BARRIER_ACCESS_NO_ACCESS = 0x80000000
} ;
常量
D3D12DDI_BARRIER_ACCESS_COMMON 值: 0x0 对给定 ExecuteCommandLists 范围内所有资源的默认初始访问权限。 支持与当前布局和资源属性兼容的任何类型的访问,包括不超过一个写入访问权限。 对于使用 D3D12DDI_BARRIER_LAYOUT_COMMON 的缓冲区和纹理, D3D12DDI_BARRIER_ACCESS_COMMON 支持并发读写访问。 用作 AccessAfter 时, D3D12DDI_BARRIER_ACCESS_COMMON 可用于将资源返回到通用辅助功能。 请注意,如果使用不当,这可能会强制刷新不必要的缓存。 如果可能, AccessAfter 应限制为显式访问位。 避免使用 D3D12DDI_BARRIER_ACCESS_COMMON 作为屏障 AccessBefore 值。 任何写入后读取或写入后写入危害最好使用显式 AccessBefore 位进行处理。 |
D3D12DDI_BARRIER_ACCESS_VERTEX_BUFFER 值: 0x1 缓冲区资源可作为当前执行队列中的顶点缓冲区进行访问。 |
D3D12DDI_BARRIER_ACCESS_CONSTANT_BUFFER 值: 0x2 缓冲区资源作为当前执行队列中的常量缓冲区进行访问。 |
D3D12DDI_BARRIER_ACCESS_INDEX_BUFFER 值: 0x4 缓冲区资源可作为当前执行队列中的索引缓冲区进行访问。 |
D3D12DDI_BARRIER_ACCESS_RENDER_TARGET 值: 0x8 资源可作为呈现器目标进行访问。 |
D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS 值: 0x10 资源可作为无序访问资源进行访问。 |
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_WRITE 值: 0x20 资源可作为可写深度/模具资源进行访问。 |
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_READ 值: 0x40 资源可作为只读深度/模具资源进行访问。 |
D3D12DDI_BARRIER_ACCESS_SHADER_RESOURCE 值: 0x80 资源可作为着色器资源进行访问。 |
D3D12DDI_BARRIER_ACCESS_STREAM_OUTPUT 值: 0x100 缓冲区可作为流输出目标进行访问。 |
D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT 值: 0x200 缓冲区作为间接参数缓冲区可访问。 |
D3D12DDI_BARRIER_ACCESS_PREDICATION 值: 0x200 缓冲区可作为谓词缓冲区进行访问。 使用 D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT 别名。 |
D3D12DDI_BARRIER_ACCESS_COPY_DEST 值: 0x400 资源可作为复制目标进行访问。 |
D3D12DDI_BARRIER_ACCESS_COPY_SOURCE 值: 0x800 资源可作为复制源进行访问。 |
D3D12DDI_BARRIER_ACCESS_RESOLVE_DEST 值: 0x1000 资源可作为解析目标进行访问。 |
D3D12DDI_BARRIER_ACCESS_RESOLVE_SOURCE 值: 0x2000 资源可作为解析源进行访问。 |
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ 值: 0x4000 资源可作为光线跟踪加速结构进行读取。 资源必须已使用初始状态 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE创建。 |
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE 值: 0x8000 资源可作为光线跟踪加速结构进行写入。 资源必须已使用初始状态 D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE创建。 |
D3D12DDI_BARRIER_ACCESS_SHADING_RATE_SOURCE 值: 0x10000 资源可作为着色速率源进行访问。 |
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_READ 值: 0x20000 可以在视频解码队列中访问资源,以便进行只读访问。 |
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_WRITE 值: 0x40000 可以在视频解码队列中访问资源进行写入访问。 |
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_READ 值: 0x80000 对于视频进程队列中的只读访问,可以访问资源。 |
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_WRITE 值: 0x100000 可以在视频进程队列中访问资源进行写入访问。 |
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_READ 值: 0x200000 对于视频编码队列中的只读访问,可以访问资源。 |
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_WRITE 值: 0x400000 可以在视频编码队列中访问资源,以便进行写入访问。 |
D3D12DDI_BARRIER_ACCESS_NO_ACCESS 值: 0x80000000 资源不可读取或写入。 将子资源访问转换为 D3D12DDI_BARRIER_ACCESS_NO_ACCESS后,必须先由 AccessBefore 设置为 D3D12DDI_BARRIER_ACCESS_NO_ACCESS 的屏障重新激活该访问,然后才能在同一 ExecuteCommandLists 范围内使用。 D3D12DDI_BARRIER_ACCESS_NO_ACCESS 只能与 D3D12DDI_BARRIER_SYNC_NONE 或 D3D12DDI_BARRIER_SYNC_SPLIT一起使用。 不能 使用其他访问位设置D3D12DDI_BARRIER_ACCESS_NO_ACCESS。 D3D12DDI_BARRIER_ACCESS_NO_ACCESS 表示在某个后续屏障或下一个 ECL 范围之前,预期不会访问资源。 当不需要子资源的时间足够长,因此从任何读取缓存中清除子资源时,此值在别名屏障中很有用。 对于在 ExecuteCommandLists 范围结束之前对资源执行最终操作,启动布局转换也很有用。 如果 SyncAfter是D3D12DDI_BARRIER_SYNC_NONE,则必须D3D12DDI_BARRIER_ACCESS_NO_ACCESSAccessAfter。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 11 (WDDM 3.0) |
标头 | d3d12umddi.h |