Direct3D 12 中的工作提交

为了提高 Direct3D 应用的 CPU 效率,从版本 12 开始,Direct3D 不再支持与设备关联的即时上下文。 相反,应用程序记录并提交 命令列表,其中包含绘图和资源管理调用。 可以将这些命令列表从多个线程提交到一个或多个命令队列,这些队列管理命令的执行。 此基本更改通过允许应用程序预先计算呈现工作以供以后重复使用,从而提升单线程效率,并通过将呈现工作分散到多个线程中来利用多核系统。

在本部分中

主题 描述
命令队列和命令列表的设计理念 实现重用呈现工作和多线程缩放的目标,需要对 Direct3D 应用将呈现工作提交到 GPU 的基本更改。
创建和录制命令列表和捆绑包 本主题介绍 Direct3D 12 应用中录制命令列表和捆绑包。 命令列表和捆绑包都允许应用记录图形处理单元(GPU)上后续执行的绘图或状态更改调用。
执行和同步命令列表 在 Microsoft Direct3D 12 中,以前的版本立即模式不再存在。 相反,应用会创建命令列表和捆绑包,然后记录 GPU 命令集。 命令队列用于提交要执行的命令列表。 此模型使开发人员能够更好地控制 GPU 和 CPU 的有效使用。
在 Direct3D 12 中管理图形管道状态 本主题介绍如何在 Direct3D 12 中设置图形管道状态。
使用资源屏障在 Direct3D 12 中同步资源状态 为了减少总体 CPU 使用率并启用驱动程序多线程处理和预处理,Direct3D 12 将每个资源状态管理的责任从图形驱动程序转移到应用程序。
使用 Direct3D 12 管道和着色器 与上一代图形编程接口相比,Direct3D 12 可编程管道显著提高了呈现性能。
可变速率着色(VRS) 可变速率底纹(或粗糙像素底纹)是一种机制,允许你以不同渲染图像的速率分配渲染性能/功率。
呈现传递 呈现传递功能通过减少内存传入/传出芯片外内存,帮助呈现器提高 GPU 效率;它通过使应用程序能够更好地识别资源呈现排序要求和数据依赖项来执行此作。