|
Master Member
|
引用:
Originally posted by Artx1
當然不太可能大部分的指令都有這種本事, 不然ATi的工程師絕對會洛陽紙貴家家都來挖.
當初測試用的Shader如下:
ps_1_1
def c0, 0.5, 0.25, 0.3, 0.4
def c1, 0.1, 0.2, 0.3, 0.2
tex t0
mov r1, c1
mad r0, v0, c0, r1
mad r0, r0, c1, r0
mul r0, r0, t0
我覺得可能是第一個mov有被optimize過.
所以跑出來只有3.2 cycles; 相對的當初在NV25上頭跑就是很規規矩矩的2cycles.
GF4每管線2Shaders,所以4指令2cycles理所當然; R300是每管線1Shader, 所以理應跑4cycles, 所以可以看出有optimize.
|
我一直在想這個optimize是怎麼達到的.
那意思是說,當c1載入的時候,順便載入一份到r1去(搞不好這麼做沒有損耗任何
效能).而在第一個mov指令時其實算是跳過去??這種作法有點不可思議....
還是第一個mov指令被合併到第二個mad去了??這.....也蠻神的.....
|