RockChip RGA与DRM大小端命名冲突解析

RockChip RGA与DRM大小端命名冲突解析

概述

使用Rockchip平台RGA处理RGB数据然后送显示时,一定要注意RGA与DRM命名大小端是反着来的,否则容易出现颜色不对情况。

大小端定义

1、内存大小端区分:

自然语言

0x11223344

小端机器:

int a = 0x11223344;
cha *b = (char *)&a;

*(b + 0) = 0x44
*(b + 1) = 0x33
*(b + 2) = 0x22
*(b + 3) = 0x11

// 对应像素
0xRRGGBBAA 对应自然语言(从左往右念)应当叫做RGBA。
小端的内存排布为(从左到右:低地址->高地址):
AABBGGRR 对应自然语言(从左往右念)ABGR
大端的内存排布为(从左到右:低地址->高地址):
RRGGBBAA 对应自然语言(从左往右念)RGBA

大端机器:

int a = 0x11223344;
cha *b = (char *)&a;

*(b + 0) = 0x11
*(b + 1) = 0x22
*(b + 2) = 0x33
*(b + 3) = 0x44

像素格式命名大小端

1、DRM中的定义(小端定义)

https://github.com/torvalds/linux/blob/master/include/uapi/drm/drm_fourcc.h

在这里插入图片描述

2、RGA中的定义(大端定义)

在这里插入图片描述

3、对比都使用RGBA888格式去解析 0x11223344(自然语言)

DRM:R=0x11, G=0x22, B=0x33, A=0x44 对应RGA的:ABGR。
RGA:R=0x44, G=0x33, B=0x22, A=0x11

4、区分总结:

如名称都叫RGBA,可以将RGBA理解为自然语言,在小端模式下R要放高位,大端模式下R要放低位。因此大端命名的RGBA要对应小端命名的ABGR。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值