Directx11教程(14) D3D11管线(3)
2012-03-21 19:37
411 查看
现在我们开始学习一些CP(command processor)的知识。参考资料:
http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-3/
CP(command processor)应该是GPU最前端的block,它从位于video memory中的command buffer中取出UMD产生的command packet,比如状态设置,drawIndex等,然后把它们翻译成GPU后端block的具体操作,并把这些操作送到具体的block。
因为video memory时延长的特点,所以理想状况下,CP中应该有一个大的FIFO来缓存command packet,用来解析和调度command的部分,应该是一个状态机,简单的CP流程图如下:
从前面一章教程中我们知道,command packet主要存在ring buffer或者其指向的Indirect buffer中,所以CP中的prefetcher模块会把command packet从内存中取出并放在FIFO中,之后decode模块负责解析command packet,然后调度模块把命令传送到具体的3D block或者CS block执行,3D block或者CS block执行完command后,需要发送执行完毕信号给CP的Sync/Wait模块,最终把这些信息传送到driver。
下面我参考网上的资料,并按照自己的理解,简单画了一个command processor的示意图:
http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-3/
CP(command processor)应该是GPU最前端的block,它从位于video memory中的command buffer中取出UMD产生的command packet,比如状态设置,drawIndex等,然后把它们翻译成GPU后端block的具体操作,并把这些操作送到具体的block。
因为video memory时延长的特点,所以理想状况下,CP中应该有一个大的FIFO来缓存command packet,用来解析和调度command的部分,应该是一个状态机,简单的CP流程图如下:
从前面一章教程中我们知道,command packet主要存在ring buffer或者其指向的Indirect buffer中,所以CP中的prefetcher模块会把command packet从内存中取出并放在FIFO中,之后decode模块负责解析command packet,然后调度模块把命令传送到具体的3D block或者CS block执行,3D block或者CS block执行完command后,需要发送执行完毕信号给CP的Sync/Wait模块,最终把这些信息传送到driver。
下面我参考网上的资料,并按照自己的理解,简单画了一个command processor的示意图:
相关文章推荐
- Directx11教程(14) D3D11管线(2)
- Directx11教程(16) D3D11管线(5)
- Directx11教程(17) D3D11管线(6)
- Directx11教程(13) D3D11管线(1)
- Directx11教程(18) D3D11管线(7)
- Directx11教程(15) D3D11管线(4)
- Directx11教程(53) D3D11管线(8) GS的调度执行
- Directx11教程(66) D3D11屏幕文本输出(1)
- Java基础知识_毕向东_Java基础视频教程笔记(14-18集合框架)
- win10 下安装Ubuntu14 双系统教程
- Redis教程(十三):管线详解
- vb.net 教程 5-14 图像处理之内存处理基础2
- stata14 32位/64位下载(附序列号+教程) 绿色破解版
- Directx11地形渲染教程一之FirstCamera(第一人称相机)
- DirectX11之3D渲染管线
- 最全Pycharm教程(14)——Pycharm编辑器功能总篇
- Directx11教程二十七之Tessellation(曲面细分)
- Directx11教程三十三之Soft Shadows—PCF(Percent closer Filter)
- ubuntu14上安装ros教程
- python教程14--《列表、字典的迭代遍历》