<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg>
讯享网
本Blog为记录学习Cdroid:TINAT113开发g2d驱动而写,俺为俺自己代言😀,同时大家也多来关顾Cdroid仓库点点⭐(原作者强烈想要⭐:))
gitee仓库:https://gitee.com/houstudio/Cdroid
github仓库:https://github.com/houstudio/cdroid
Blit操作
src/porting/tinat113/graph_g2d.c · houzh/cdroid - 码云 - 开源中国
- 打开设备
讯享网
- 映射fb空间
- kbuffer 设计
<ul><li>通过将用户态和内核态划分为buffer 和 kbuffer,可以有效的防止用户直接操作内核态内存,提高系统的稳定性</li><li>用户可以提供多个fb屏幕镜像空间,用于显示性能的高度优化,不使用ion的版本,推荐用户分配至少4个fb满屏镜像缓冲空间,通过划分这些fb物理空间,可以同时渲染多个surface。</li></ul> </li></ul> </li><li><strong>创建表面</strong>- 关键步骤,分配至少一块硬件Surface,用于更新显示内容,也就是fb显存,其他需要显示的内容可以现在软件Surface中渲染,这就是作为多图层UI框架的好处,不需要类似lvgl的双缓冲实现,需要复杂的通知操作,并且可以分配更多的缓冲区用于性能提升。
- kbuffer 设计
讯享网
- Blit操作

- Blit操作简介:BLIT 是图形学和计算机图像处理中的一种技术,全称为 BitBLT(Bit Block Transfer),有时也称作 Blitting。它用于将图像或像素数据从一个地方复制到另一个地方,通常在显示缓冲区之间传输图像数据,以加快图形渲染速度。
- Cdroid驱动层中的含义:通过将softSurface(窗口图层)复制到hardwareSurface(fb缓存)中在屏幕上显示出具体的图像
实现 函数
以下是 函数的实现。该函数用于在源表面和目标表面之间执行位块传输(BitBLT)操作,具体实现如下:
G2D 操作解析
在代码中, 结构体的填充用于定义源图像和目标图像的格式及属性,然后通过 命令执行 G2D 的硬件加速位块传输(BitBLT)操作。
- g2d_blt_h 结构体的设置:我们通过设置 和 字段来指定源和目标图像的宽度、高度、物理地址、格式和透明度。
- 传输标志 (flag): 表示只执行 BLT 操作,不进行 G2D 旋转。

- 目标图像参数:目标图像的模式设置为 ,并且定义了颜色(0xee8899)用于图像合成。
- 执行 G2D 操作:调用 函数,使用命令 完成硬件加速的传输,将内容 BLIT 到帧缓冲区以显示在屏幕上。
参考
如需更多 G2D 相关信息,可以参考 全志 R128 SDK HAL 模块开发指南——G2D_g2d 转换颜色空间。
FillRect操作

- Fillrect操作简介:填充矩形区域功能可以实现对某块区域进行预订的颜色值填充,如下图就填充了 0xFF0080FF的 ARGB 值,该功能还可以通过设定数据区域大小实现画点和直线,同时也可以通过设定 flag 实现一种填充颜色和目标做 alpha 运算。

实现解析
函数用于在指定的图形表面 () 上填充一个矩形区域 () 为指定的颜色 () 。该函数支持软件和硬件两种填充模式:当硬件加速(G2D)可用时,利用 G2D 实现硬件填充;否则,采用软件填充。
讯享网
步骤 1:初始化和输入检查
- 将传入的 转换为 类型,以便访问图像表面的属性。
- 根据是否传入 ,确定填充的矩形区域。如果未指定 ,则默认填充整个表面。
步骤 2:检查硬件支持,选择填充方式
- 软件填充模式
当 和 都为 时,说明当前表面没有硬件加速支持,此时使用纯软件的方式填充指定矩形区域。- 指向缓冲区中要填充的第一个像素。
- 先将第一行的所有像素填充为指定颜色。
- 使用 将第一行的像素值快速复制到每一行,形成整个矩形的填充效果。
- 硬件加速模式
如果硬件支持( 或 非零),则使用 G2D 硬件加速来填充矩形。讯享网
- g2d_fillrect_h 结构体填充: 结构体用于存储填充矩形的配置信息。
<ul><li> 设置为 ,表示目标图像使用像素级透明度。</li><li> 是指定的填充颜色。</li><li> 设置为 ,指定像素格式。</li><li> 是要填充的矩形区域。</li><li> 设置为硬件缓冲区的物理地址。</li></ul> </li><li>使用 系统调用,传递 命令,调用 G2D 硬件加速填充矩形区域。</li></ul> </li></ol>总结
- 函数通过检查硬件支持情况,选择使用软件或硬件加速的方式进行矩形填充操作。
- 在硬件加速模式下,G2D 硬件通过 命令执行快速填充,提升性能。
- 以上就是我为开发适配Cdroid的TINAT113产品g2d驱动所学习到的东西,感谢Cdroid作者对我的提供的帮助,教会了我许多Linux显示部分的知识,这里贴出Cdroid仓库,大家感兴趣多去给作者点个⭐:)。
- gitee仓库:
https://gitee.com/houstudio/Cdroid
- gitee仓库:
- g2d_fillrect_h 结构体填充: 结构体用于存储填充矩形的配置信息。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/165557.html