MMX技术在16位高彩和24位真彩数据方面作的并不是最好。封装好的加,乘逻辑运算符实际上已使得24位成了最具有吸引力的运算方式。它包含了3个8位(红,绿,兰)元素或?位固定点(48位是给RGB的)。完成运算之后(像Gouraud阴影,alpha,等),算法转化成RGB16(555或565)以来更新缓存。MMX技术并没有内置的算法,也没有为5位而封装的块。
24位的内部运算符使得能提供用8位调色板无法得到的高质量的色彩。包括:
为雾化,透明化的alpha混合
为橙色火光的RGB(多色彩)的光亮,等等
拟镜的加亮区
瞬间在屏幕上显示多于256种颜色
真正平滑的阴影,随意的混合色彩
少量(或没有)抖动色彩
与其它应用的调色板没有冲突或不协调
与高彩的容量和色彩可媲美,接近于HW 加速器
当然,系统的图像存储器的容量决定了是能用16位还是24位彩色。对于1MB的显卡,只能使用8位的调色板(640*480*2 字节需要600KB,如果没有双倍缓冲,或后备缓冲在存储系统中,这只能适应于1MB)。对于2MB或4MB的显卡,16位就很诱人了。640*480双倍缓冲后,占用1.2M,仍留下800KB给字符缓存或Z-缓冲。
8位色准许使用一个简单的MOVQ指令来同时以东8个点。如果有了MMX技术的执行单元和“pairing”指令,它也准许16个点的同时比较或(和)混合。不幸的是,8位的调色器处理需要在同一时间内从调色板中读出一个字节。
一直以来,老式处理器的8位处理代码在新的CPU上实际上是扮演着“速度绊脚石”的角色来降低性能。为了奔腾处理器和Dynamic Execution(TM)处理的高速度,这应被避免。例子如下:
自修改代码,它用新的地址或即时值重写了部分指令流。这使得避免使用其它注册者来得到数据。在新的CPU中,每个被修改的指令会浪费许多的时钟周期。因为深层的管道必须被清空,而且缓存必须要重写重取。
随机(不是顺序)进入存储区,作为乘法查找的结果,颜色变幻,阴影化或抖动
经常的数据独立分支,尤其当他们的顺区不规则时
与8位或16位 (AL,AH,AX,BL….)一样,32位的注册是很优秀的,将8位像素点的乘法和简单的32位写或0溢出单独字节结合起来