|
|
发表于 2006-12-27 20:27:00
|
显示全部楼层
Re:[请问]DX中的DrawPrimitive是异步的吗?
理解硬件的东西也不难,多看看spec,多从整个架构、流程上理解HW,当然前提是要有机会,这个可以自己争取。对于图形硬件,两点非常重要,一是并行,二是cache。就拿alpha blending这个stage来说,或许你认为可以弄一种shader,输入是dest color/alpha和src color/alpah,以及一些const,指令有add,mul这些,这种shader在每个象素级别运行。由于alpha blending有前后依赖性,那么就要求前面的操作必须完全写到cache中时,后面的操作才能继续,假如这种shader不支持动态跳转,那还好,可如果支持,就意味着一个tile(一条pixel pipe处理的基本单元)必须等待最慢的一个pixel完成,下一笔操作才能进来,这就好比若干pixel pipeline在操作,某一条被阻塞了,由于硬件必须按照严格的时序,这样会导致最前面的入口(vertex fetch)都被堵住了。。。
话又说回来,假如这种shader只支持静态跳转,那么你可以试着证明一下,任何2次以下的多项式,都可以通过alpha blending formula加上某些技巧实现,何况实际应用中又有多少复杂的情况呢,所以这种shader IHV们不想实现。
完全动态的分配任务,软件端做得都没有做得很完美,何况硬件,所以DX10硬件会有那么多得暴力资源。。。 |
|