
https://www.cnblogs.com/timlly/p/11471507.html
参考网站

# SM 流处理器
	包括
	运算核心
	load/store 加载与储存
	特殊数学运算 sin、cos、log
	寄存器
	L1缓存
	全局内存缓存
	纹理读取单元
	纹理缓存
	PolyMorph Engine:多边形引擎(负责属性装配、顶点拉取、曲面细分、栅格化 ~= 专门处理顶点相关)
	2个Wrap Schedulers:负责wrap调度 1一个warp由32个线程组成，warp调度器的指令通过Dispatch Units送到Core执行。
	指令缓存
	内部链接网络(?)

# GPU渲染管线
	通过图形api调用drawcall->
	指令推送到驱动,驱动检查是否合法->
	驱动把指令缓存到buffer里->
	下次flush会把指令推送到GPU->
	----------主机-------
	
	GPU通过主机接口Host Interface接受命令->
	通过前端(Front End)处理这些命令(?)-> Front End是哪儿
	图元分配开始工作(indexbuffer产生三角形形成批次, 分配给GPCs{ ? })->
	SM的多边形引擎(Poly Morph Engine)通过三角形索引获取三角形数据(Vertex Fetch)->
	SM的Wrap调度(SIMT)->
![[Pasted image 20230413163234.png]]

	等到wrap完成了vertex-shader的所有指令，三角形会被裁剪然后准备栅格化,GPU会把L1和L2缓存来进行vertex-shader和pixel-shader之间的数据通信
	SM上的Attribute Setup保证了从vertex-shader来的数据经过插值后是pixel-shade是可读的。
	光栅化引擎开始接受三角形工作(裁剪、背面剔除、Early-Z剔除)
	32个线程分成8个2*2的像素块、如果没有三角形覆盖，线程会被遮掩
	最后会颜色和深度输出到ROP(渲染输出单元)，进行深度测试和framebuffer混合

# 深度测试

### 深度测试失效情况：
	开启透明测试
	开启像素摒弃指令 - OpenGL的clip
	关闭深度测试
	开启Multi-Sampling：多采样

### 深度测试会导致深度数据冲突

# CPU与GPU异构系统
	分离
	耦合