SIMD在图像处理中的应用及汇编优化

  .SIMD思想概述

SIMD(Single Instruction Multiple Data ),顾名思义,就是单条指令处理多个数据。比如我们处理BYTE类型的乘法,也是需要32位寄存器来做处理.这样显得有些浪费.实际上我们可以把乘数合并,一次32位的乘法得到两个乘法结果.示例代码如下:

R1 = a1*b;

R2 = a2*b;

转换成

T1 = (a1 | (a2 <<16))*b;

R1 = T1&0xffff;

R2 = T1>>16;

在游戏/多媒体等典型的图形处理应用中,我们经常需要对连续密集的数据进行处理.这正是SIMD长处.本文重点讨论利用SIMD思想对16色做alpha混合的处理以及相应的汇编优化.

.简单应用

16色显示,由于人眼对绿色相对敏感,一般显卡对R5G6B5支持的更好.这时alpha值只需要分32级即可满足要求.alpha值取[0,32].所以通用的混合逻辑大概如下:

            u16bpp alpha16bpp(const u16bpp srcColu16bpp desColu8bpp alpha)

{

      u16bpp b=(GET_BLUE(srcCol)*alpha +  GET_BLUE(desCol)*(32-

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值