Directx11教程(14) D3D11管线(3)
现在我们开始学习一些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的示意图:
Directx11教程(14) D3D11管线(3)的更多相关文章
- Directx11教程(14) D3D11管线(2)
下面我们来了解一些GPU memory的知识,主要参考资料:http://fgiesen.wordpress.com/0211/07/02/a-trip-through-the-graphics-pi ...
- Directx11教程(53) D3D11管线(8) GS的调度执行
原文:Directx11教程(53) D3D11管线(8) GS的调度执行 在前面的教程中,我们分析了VS-PS的shader管线组合执行过程,本章我们分析一下VS-GS-PS的管线执行 ...
- Directx11教程(18) D3D11管线(7)
原文:Directx11教程(18) D3D11管线(7) 光栅化阶段(RS)之后,将进入PS/OM阶段. 参考外文资料:http://fgiesen.wordpress.com/2011/07/01 ...
- Directx11教程(17) D3D11管线(6)
原文:Directx11教程(17) D3D11管线(6) VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembl ...
- Directx11教程(16) D3D11管线(5)
原文:Directx11教程(16) D3D11管线(5) 本章我们学习VS中具体做些什么事情? 首先再看看我们的VS shader代码: Clolor.vs - PixelInputType Col ...
- Directx11教程(15) D3D11管线(4)
原文:Directx11教程(15) D3D11管线(4) 本章我们首先了解一下D3D11中的逻辑管线,认识一下管线中每个stage的含义. 参考资料:http://fgiesen.wordpress ...
- Directx11教程(13) D3D11管线(1)
原文:Directx11教程(13) D3D11管线(1) 从本篇教程开始,我们暂停代码的学习,先来了解一下D3D11的管线,这些管线不涉及具体的硬件,而是着重于理解能够支持D3D11的管 ...
- Directx11教程(66) D3D11屏幕文本输出(1)
原文:Directx11教程(66) D3D11屏幕文本输出(1) 在D3D10中,通过ID3DX10Font接口对象,我们可以方便的在屏幕上输出文字信息,一个DrawText函数就能解决所 ...
- Directx11教程(59) tessellation学习(1)
原文:Directx11教程(59) tessellation学习(1) 在D3D11管线中,新增加了3个stage, Hull shader, Tessellator, Domain s ...
随机推荐
- 修改maven本地库路径
1.打开maven的安装路径:${M2_HOME}/conf/setings.xml文件 2.找到<localRepository>项,将它的值修改就可以了,我修改的是:${M2_HOME ...
- JDK配置环境变量 (JDK安装成功后进行配置)
"我的电脑" -- 右键"属性" --- "高级系统设置" --- “环境变量” 第一步:配置 JAVA_HOME 变量 找到 变量 ...
- jqGrid 属性、事件全集
<html> ... <table id="list1"></table> <div id="pager1">& ...
- 统一建模语言简介UML
统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准.它的特点是简单 ...
- /etc/inittab配置文件详解
init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,init程序需要读取设置文件/etc/inittab.inittab是个 ...
- Leetcode563.Binary Tree Tilt二叉树的坡度
给定一个二叉树,计算整个树的坡度. 一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值.空结点的的坡度是0. 整个树的坡度就是其所有节点的坡度之和. 示例: 输入: 1 / ...
- 【vuex】vue2-happyfri
我发现我对使用vuex并不擅长,现在跟我一起多多研究项目,好好补补vuex吧 这个开源项目地址为:https://github.com/bailicangdu/vue2-happyfri 这是一个答题 ...
- Highcharts 饼图数值显示在图形上
1.引用js文件 <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1 ...
- Java问题解读系列之基础相关---含继承时的执行顺序
今天来研究一下含继承.静态成员.非静态成员时Java程序的执行顺序: 一.不含继承,含有静态变量.静态代码块 创建一个子类,该类包含静态变量.静态代码块.静态方法.构造方法 /** * @create ...
- JAVA:在0-99间产生100个不重复的随机数
Random rand = new Random(); boolean[] bool = new boolean[100]; int[] number = new int[100]; int rand ...