D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_TYPE 枚举 (d3d12umddi.h)

声明调用 PFND3D12DDI_BEGIN_RENDER_PASS的资源访问类型。

语法

typedef enum D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_TYPE {
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_DISCARD,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_PRESERVE,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_NO_ACCESS,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_WRITING,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ
} ;

常量

 
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_DISCARD
指示应用程序不依赖于资源的先前内容。

给定的实现可能返回以前写入的内容,也可能返回未初始化的数据。 但是,从资源读取时不得产生 GPU 挂起,“read”只能在最坏的情况下返回未定义的数据。
读取定义为传统:

* UAV (无序访问视图)
* SRV (着色器资源视图)
* CBV (常量缓冲区视图)
* VBV (顶点缓冲区视图)
* IBV (索引缓冲区视图)
* IndirectArg 绑定/读取
* blend/depth-testing-induced read
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_PRESERVE
指示应用程序依赖于资源的先前内容,并且必须从main内存加载内容。
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR
指示应用程序依赖于要清除到应用提供的特定 () 颜色的资源。

注意

无论资源是否与呈现通道以外的任何内容进行交互,都会出现此明确情况。

API 将允许应用程序通过 D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS 结构在调用 PFND3D12DDI_BEGIN_RENDER_PASS 中指定明文值。

D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_NO_ACCESS
指示在呈现阶段期间不会从中读取或写入资源。 此值还指示是否未访问 DSV (数据源视图) 的深度/模具平面。

重要事项

此字段必须与 D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE 中的 D3D12DDI_RENDER_PASS_ENDING_ACCESS_NO_ACCESS标志配对。

D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_WRITING
指示应用程序将在以下条件下恢复写入:

* 继续写入先前在上一个呈现通道中写入的图面
* 在 D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE 枚举中具有 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_WRITING 标志
* 两个呈现通道之间没有发生干预 GPU 工作

恢复 呈现通道 中的写入发生在 挂起 的呈现通道中的写入之后。
此标志的目的是允许写入同一呈现目标,以便跨多个命令列表,且不刷新任何片上缓存。
只要在同一 ExecuteCommandLists 组中 (背靠背) 执行挂起/恢复命令Lists,写入可以从单独的命令列表中的呈现通道恢复。
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ
指示应用程序希望从以前由 GPU (立即写入的资源(即仍可能位于磁贴缓存) 中)进行读取,并且将以像素本地方式从中读取 (即读取操作将始终位于确切的输出像素或相邻像素) 。

此枚举值与 D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE 枚举中的 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ 值配对,是允许从中读取资源(如果可能),而不会在两个后续呈现通道操作之间发出刷新。

具体而言,应用程序保证:

* 资源以前已在呈现通道中写入,其“写入”特征为 D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ
* 在上一个呈现通道的D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ和当前呈现通道之间没有发生 GPU 操作。
* D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ可能从同一命令列表中链接,也可以在同一 ExecuteCommandLists 调用中的 Command Lists之间链接,但不能跨单独的 ExecuteCommandList 调用链接。
* 要从中读取的资源与新绑定的呈现器目标的大小和格式匹配。
* 所有读取/写入都是“1 对 1” (加上由应用) 指定的可选装订线读取像素,来自源纹理的读取将写入目标纹理上的同一位置,并且呈现目标纹理的大小与源纹理相同。

读取的内核大小 () PFND3D12DDI_BEGIN_RENDER_PASS时间通过D3D12_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ_PARAMETERS上的 AdditionalWidth/AdditionalHeight 字段指定所需的周围像素数。 AdditionalWidth/AdditionalHeight 参数必须与上 一个D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ_PARAMETERS上的参数匹配。

要求

要求
最低受支持的客户端 Windows 10 版本 1809
标头 d3d12umddi.h