|
|
发表于 2006-12-23 14:21:00
|
显示全部楼层
Re: Re:[请问]DX中的DrawPrimitive是异步的吗?
smile636: Re:[请问]DX中的DrawPrimitive是异步的吗?
拷贝完了不堵塞吧?(拷贝的目标没被GPU使用)?也就是说GPU正在draw其他的图元的时候,几乎不影响这几个CPU指令操作。还有个问题是CPU接连发出的draw命令过多,而且GPU还在处理第一个stream,会怎么办?那些stransform是存储在那里?
不会,因为driver设计架构时,肯定就有ring buffer机制,和每个buffer得timestamp机制一起工作,这样copy得dest总是可以写的,并且保证不会写冲突,这方面其实原理非常简单。
第二个问题,只是因为你不太了解硬件得工作原理,所以有此疑问。你可以吧3D API调用理解为“给硬件下命令”,“命令”分两种,一种是可放在DMA buffer(也叫command-listable)中的,另一种是必须是同步完成的。第一种典型的如Draw,第二种的代表是改变refresh rate,resolution等,SetTransform就是command-listable,比如可以吧matrix及其种类放到DMA buffer中(当然必须按照HW spec的要求存放),然后硬件执行到这个地方时,才真正吧此matrix设置上。
|
|