非着色器可见描述符堆
某些描述符堆不能通过描述符表引用,但存在可帮助应用在录制命令列表之前暂存描述符,或者因为不需要着色器可见堆。
非可见视图
所有描述符堆(包括前面描述的着色器可访问描述符堆)都可以由 CPU 和/或命令列表作,具体取决于应用程序为描述符堆选择的内存池和 CPU 访问属性。
对于 着色器可见描述符堆,拒绝着色器访问这些描述符堆的明显原因是它们正在暂存。 然后,这些堆使着色器可见,并通过命令列表执行中的描述符表进行访问。 但是,无需暂存着色器可见堆,可以直接填充它们。
其他描述符通过将内容直接记录到命令列表中来绑定到管道。 这些描述符仅用于在命令列表记录时间转换视图参数。 这些堆始终不可见,并包含以下内容。
- 呈现目标视图 (RTV)
- 深度模具视图 (DSV)
索引缓冲区视图(IBV)、顶点缓冲区视图(VBV)和流输出视图(SOV)直接传递到 API 方法,没有特定的堆类型。
在录制到命令列表中(例如 OMSetRenderTargets),用于保存此调用的描述符的内存立即可供调用后重复使用。
即使是描述符表也有一些选项,其中应用可以允许实现选择在命令列表录制(而不是取消引用执行时表指针)中的表内容。
总结
着色器可见,仅 CPU 写入 | 非着色器可见,CPU 读/写 | |
---|---|---|
CBV、SRV、UAV | 是的 | 是的 |
SAMPLER | 是的 | 是的 |
RTV | 不 | 是的 |
DSV | 不 | 是的 |
相关主题