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 作用域结束前启动布局转换,作为资源的最终作。 如果 D3D12DDI_BARRIER_SYNC_NONESyncAfter,则必须 D3D12DDI_BARRIER_ACCESS_NO_ACCESSAccessAfter。 |
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 11 (WDDM 3.0) |
标头 | d3d12umddi.h |