当前位置:网站首页 > R语言数据分析 > 正文

chronyd(chronyc 手动同步)



本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 - 码云 - 开源中国

  1. 打开设备
 
  
  1. 映射fb空间
    • kbuffer 设计
      • 通过将用户态和内核态划分为buffer 和 kbuffer,可以有效的防止用户直接操作内核态内存,提高系统的稳定性
      • 用户可以提供多个fb屏幕镜像空间,用于显示性能的高度优化,不使用ion的版本,推荐用户分配至少4个fb满屏镜像缓冲空间,通过划分这些fb物理空间,可以同时渲染多个surface。
  2. 创建表面
    • 关键步骤,分配至少一块硬件Surface,用于更新显示内容,也就是fb显存,其他需要显示的内容可以现在软件Surface中渲染,这就是作为多图层UI框架的好处,不需要类似lvgl的双缓冲实现,需要复杂的通知操作,并且可以分配更多的缓冲区用于性能提升。
 
  
  1. Blit操作

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操作介绍图

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

函数用于在指定的图形表面 () 上填充一个矩形区域 () 为指定的颜色 () 。该函数支持软件和硬件两种填充模式:当硬件加速(G2D)可用时,利用 G2D 实现硬件填充;否则,采用软件填充。

 
  
步骤 1:初始化和输入检查
  • 将传入的 转换为 类型,以便访问图像表面的属性。
  • 根据是否传入 ,确定填充的矩形区域。如果未指定 ,则默认填充整个表面。
步骤 2:检查硬件支持,选择填充方式
  1. 软件填充模式
    当 和 都为 时,说明当前表面没有硬件加速支持,此时使用纯软件的方式填充指定矩形区域。
     
         
    • 指向缓冲区中要填充的第一个像素。
    • 先将第一行的所有像素填充为指定颜色。
    • 使用 将第一行的像素值快速复制到每一行,形成整个矩形的填充效果。

  2. 硬件加速模式
    如果硬件支持( 或 非零),则使用 G2D 硬件加速来填充矩形。
     
         
    • g2d_fillrect_h 结构体填充: 结构体用于存储填充矩形的配置信息。
      • 设置为 ,表示目标图像使用像素级透明度。
      • 是指定的填充颜色。
      • 设置为 ,指定像素格式。
      • 是要填充的矩形区域。
      • 设置为硬件缓冲区的物理地址。
    • 使用 系统调用,传递 命令,调用 G2D 硬件加速填充矩形区域。

总结

  • 函数通过检查硬件支持情况,选择使用软件或硬件加速的方式进行矩形填充操作。
  • 在硬件加速模式下,G2D 硬件通过 命令执行快速填充,提升性能。
  • 以上就是我为开发适配Cdroid的TINAT113产品g2d驱动所学习到的东西,感谢Cdroid作者对我的提供的帮助,教会了我许多Linux显示部分的知识,这里贴出Cdroid仓库,大家感兴趣多去给作者点个⭐:)。
    • gitee仓库:
      https://gitee.com/houstudio/Cdroid
到此这篇chronyd(chronyc 手动同步)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • swagger2注解详解(swagger2的常用注解)2025-11-02 15:00:05
  • rmp是什么意思?(rmp是什么意思重庆)2025-11-02 15:00:05
  • hprof文件怎么分析线程(hprof文件用什么打开)2025-11-02 15:00:05
  • ifstream读取文件路径(ifstream 路径)2025-11-02 15:00:05
  • beyondcompare比较文件夹差异(beyondcompare对比文件夹)2025-11-02 15:00:05
  • tplease怎么读(tprtoise怎么读)2025-11-02 15:00:05
  • cruise软件安装教程(cruise2010安装教程)2025-11-02 15:00:05
  • scud导弹(sidewinder导弹)2025-11-02 15:00:05
  • uchar seg(uchar seg_dig = 0;是什么意思)2025-11-02 15:00:05
  • yarn日志在哪看(查看yarn log)2025-11-02 15:00:05
  • 全屏图片